正文
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 = ;
up_scale = ;
%% read data
input = imread('../data/test/set14/zebra.bmp');
% input=imread('Infrared/12.bmp');
% if size(input,)>
input2 = rgb2ycbcr(input);
input = input2(:,:, );
im_l_cb = input2(:,:, );
im_l_cr = input2(:,:, );
% end;
input = single(input)/;
% input = imresize(input, /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();% image_new=zeros(height, width, );%% load model using mat_caffenet = 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 = : up_scale
for n = : up_scale
im_h(m:up_scale:scaled_height+m-up_scale,n:up_scale:scaled_width+n-up_scale) = output(:,:,(m-)*up_scale+n);
end
end
im_h = im_h * ;
[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, ]);
im_h_ycbcr(:, :, ) = im_h;
im_h_ycbcr(:, :, ) = im_h_cb;
im_h_ycbcr(:, :, ) = im_h_cr;
im_h = ycbcr2rgb(uint8(im_h_ycbcr));% im_h = uint8(im_h * );imwrite(im_h,'13_espcn_caffe.bmp');