forked from rc-nets/RC-Nets
-
Notifications
You must be signed in to change notification settings - Fork 3
/
RC_DN_test.m
115 lines (81 loc) · 2.89 KB
/
RC_DN_test.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
clear; clc;
%%this test demo with matcaffe using caffemodel
addpath('/usr/local/caffe/matlab/');
%%setup
addpath('/utilities/');
model='/RC_deploy.prototxt';
weights='/RC-Net-SRx2.caffemodel';
savepath='/result';
folderTest='/testset/B100/';
%%noise level
noiseSigma = 10;
showResult = 0;
useGPU = 0;
pauseTime = 1;
imagecolor = 0;
%% use gpu mode
caffe.reset_all();
caffe.set_mode_gpu();
caffe.set_device(0);
%% read images
ext = {'*.jpg','*.png','*.bmp'};
filePaths = [];
for i = 1 : length(ext)
filePaths = cat(1,filePaths, dir(fullfile(folderTest,ext{i})));
end
%% PSNR and SSIM
PSNRs = zeros(1,length(filePaths));
SSIMs = zeros(1,length(filePaths));
Times = zeros(1,length(filePaths));
for i = 1:length(filePaths)
%%% read images
label = imread(fullfile(folderTest,filePaths(i).name));
[~,nameCur,extCur] = fileparts(filePaths(i).name);
disp([num2str(i),' ',filePaths(i).name,' ',num2str(noiseSigma)]);
if(size(label,3)>1)
imagecolor = 1;
label = rgb2ycbcr(label);
label = im2double(label);
%% split to three channels
label_y=label(:, :, 1);
label_cb=label(:, :, 2);
label_cr=label(:, :, 3);
%% convert to double
label_y = im2double(label_y);
label_cb = im2double(label_cb);
label_cr = im2double(label_cr);
end
input = single(label_y + noiseSigma/255*randn(size(label_y)));
[height, width, channel] = size(input);
[PSNR_noisy, SSIM_noisy] = Cal_PSNRSSIM(im2uint8(label_y),im2uint8(input),0,0);
disp('noisimage PSNR / SSIM');
disp ([PSNR_noisy, SSIM_noisy]);
%%test
tic;
net = caffe.Net(model,weights,'test');
net.blobs('data').reshape([height width channel 1]); % reshape blob 'data'
net.blobs('data').set_data(input);
net.forward_prefilled();
output = net.blobs('sum5').get_data();
timeCur=toc;
%% calculate PSNR and SSIM
[PSNRCur, SSIMCur] = Cal_PSNRSSIM(im2uint8(label_y),im2uint8(output),0,0);
PSNRs(i) = PSNRCur;
SSIMs(i) = SSIMCur;
Times(i) = timeCur;
%% psnr ssim time output
%% channel merge for color image
if imagecolor == 1
labelout = im2uint8(cat(3,label_y,label_cb,label_cr));
inputout = im2uint8(cat(3,input,label_cb,label_cr));
outputout = im2uint8(cat(3,output,label_cb,label_cr));
if length(filePaths)<=1
%% Save
imwrite(ycbcr2rgb(labelout),fullfile(savepath,[nameCur '_original.bmp']));
imwrite(ycbcr2rgb(inputout),fullfile(savepath,[nameCur '_noiseSigma_x' num2str(noiseSigma) '.bmp']));
imwrite(ycbcr2rgb(outputout),fullfile(savepath,[nameCur '_recover_S' num2str(noiseSigma) '.bmp']));
end
end
end
disp('greyimage:');
disp([mean(PSNRs),mean(SSIMs),mean(Times)]);