zoukankan      html  css  js  c++  java
  • ESPCN处理彩色图像代码

    原来仅处理了Y通道,输出的灰度图像。

    Super-Resolution/ESPCN at master · wangxuewen99/Super-Resolution · GitHub https://github.com/wangxuewen99/Super-Resolution/tree/master/ESPCN

    改为处理彩色图像,就简单加了几行代码。

    YCbCr分别处理,只对Y进行输入,另两个通道双三插值。

    预先不进行降采样了。直接SR。

    三倍放大。

    sr_demo.m

    % =========================================================================
    % 描述:   一个使用训练好的网络进行超分辨率的应用demo(使用caffe的matlab接口)          
    %    
    % 参考文献:
    %  Shi W, Caballero J, Huszar F, et al. Real-Time Single Image and Video
    %  Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network[C]
    %  
    % 王学文
    % wangxuewen@yy.com
    % =========================================================================
    %% settings
    model = './espcn_mat.prototxt';
    weights = './snapshot/espcn_iter_10000.caffemodel';
    batch = 1;
    up_scale = 3;
    %% read data
    input = imread('../data/test/set14/zebra.bmp');
    % input=imread('Infrared/12.bmp');
    % if size(input,3)>1
        input2 = rgb2ycbcr(input);
        input = input2(:,:, 1);
        im_l_cb = input2(:,:, 2);
        im_l_cr = input2(:,:, 3);
    % end;
    input = single(input)/255;
    % input = imresize(input, 1/up_scale, 'bicubic');
    [height, width, channel] = size(input);
    
    %% use gpu mode
    caffe.reset_all(); 
    caffe.set_mode_cpu();
    % caffe.set_mode_gpu();
    % caffe.set_device(0);
    
    % image_new=zeros(height, width, 3);
    
    %% load model using mat_caffe
    
    net = caffe.Net(model,weights,'test');
    net.blobs('data').reshape([height width channel batch]); % reshape blob 'data'
    net.reshape();
    net.blobs('data').set_data(input);
    net.forward_prefilled();
    output = net.blobs('conv3').get_data();
    [output_height, output_width, output_channel] = size(output);
    scaled_height = up_scale * output_height;
    scaled_width = up_scale * output_width;
    im_h = zeros(scaled_height, scaled_width);
        
    for m = 1 : up_scale
         for n = 1 : up_scale
             im_h(m:up_scale:scaled_height+m-up_scale,n:up_scale:scaled_width+n-up_scale) = output(:,:,(m-1)*up_scale+n);   
         end
    end
    im_h = im_h * 255;
    [nrow, ncol] = size(im_h);
    im_h_cb = imresize(im_l_cb, [nrow, ncol], 'bicubic');
    im_h_cr = imresize(im_l_cr, [nrow, ncol], 'bicubic');
    
    im_h_ycbcr = zeros([nrow, ncol, 3]);
    im_h_ycbcr(:, :, 1) = im_h;
    im_h_ycbcr(:, :, 2) = im_h_cb;
    im_h_ycbcr(:, :, 3) = im_h_cr;
    im_h = ycbcr2rgb(uint8(im_h_ycbcr));
    
    % im_h = uint8(im_h * 255);
    
    
    imwrite(im_h,'13_espcn_caffe.bmp');
  • 相关阅读:
    第01组 Beta冲刺(4-5)
    第01组 Beta冲刺(3-5)
    第01组 Beta冲刺(2-5)
    第01组 Beta冲刺(1-5)
    等价类划分-一个程序输入三个整数,判断三角形是不等边,还是等腰还是等边
    Jmeter入门(8)- Jmeter关联
    Jmeter发送数据库请求(JDBC Request)报错
    Jmeter入门(7)- 连接数据库
    Jmeter入门(6)- 参数化
    Jmeter入门(5)- jmeter取样器的HTTP请求
  • 原文地址:https://www.cnblogs.com/wxl845235800/p/10606871.html
Copyright © 2011-2022 走看看