我在试着复现这个问题
https://github.com/cszn/IRCNN
目前进行到了最后一步了,可是有很大的问题
clear; clc;
addpath('utilities');
imageSets = {'Set18','Set24'}; % testing dataset
setTest = imageSets(1); % select the dataset
useGPU = 0;
folderTest = 'testsets';
folderResult = 'results';
folderModel = 'models';
if ~exist(folderResult,'file')
mkdir(folderResult);
end
setTestCur = cell2mat(setTest(1));
disp('--------------------------------------------');
disp(['----',setTestCur,'--Color Image Demosaiking--']);
disp('--------------------------------------------');
folderTestCur = fullfile(folderTest,setTestCur);
% folder to store results
folderResultCur = fullfile(folderResult, ['Demosaik_',setTestCur]);
if ~exist(folderResultCur,'file')
mkdir(folderResultCur);
end
%% Noise level
noiselevel = 0; % default; noiselevel = 10; Isigma = 10/255; Msigma = 8;
%% parameter setting in HQS (tune the following parameters to obtain the best results)
%% -------------------important!------------------
% Parameter settings of IRCNN
% (1) image noise level: Isigma
Isigma = 0.5/255; % default 0.5/255 for noise-free image, ****** from interval [1/255, 20/255] ******; e.g., 1/255, 2.55/255, 7/255, 11/255
% (2) noise level of the last denoiser: Msigma
Msigma = 2; % default 2 for noise-free image, ****** from {1 2 3 4 5 7 9 11 13 15} ******
%--------------------------------------------------------
%% load denoisers
load(fullfile(folderModel,'modelcolor.mat'));
%% default parameter setting in HQS
totalIter = 30; % default 30
lamda = (Isigma^2)/3; % default 3, ****** from {1 2 3 4} ******
modelSigma1 = 49; % default 49
modelSigmaS = logspace(log10(modelSigma1),log10(Msigma),totalIter);
rho = Isigma^2/((modelSigma1/255)^2);
ns = min(25,max(ceil(modelSigmaS/2),1));
ns = [ns(1)-1,ns];
ext = {'*.jpg','*.png','*.bmp','*.tif'};
filepaths = [];
for i = 1 : length(ext)
filepaths = cat(1,filepaths,dir(fullfile(folderTestCur, ext{i})));
end
PSNRs = zeros(1,length(filepaths));
SSIMs = zeros(1,length(filepaths));
for i = 1 : length(filepaths)
label = imread(fullfile(folderTestCur,filepaths(i).name));
[~, Iname, ext] = fileparts(filepaths(i).name);
label = im2single(label);
% generate mask
[B, y, mask] = mosaic_bayer(label, 'grbg', noiselevel);
y = single(y);
mask = single(mask);
z = linearlcc(B, 0);
z = single(z);
z0 = z;
if useGPU
z = gpuArray(z);
y = gpuArray(y);
end
for itern = 1:totalIter
% step 1
rho = lamda*255^2/(modelSigmaS(itern)^2);
z = (y+rho*z)./(mask+rho);
if ns(itern+1)~=ns(itern)
[net] = loadmodel(modelSigmaS(itern),CNNdenoiser);
net = vl_simplenn_tidy(net);
if useGPU
net = vl_simplenn_move(net, 'gpu');
end
end
% step 2
res = vl_simplenn(net, z,[],[],'conserveMemory',true,'mode','test');
residual = res(end).x;
z = z - residual;
% imshow(z)
% title(int2str(itern))
% drawnow;
end
if useGPU
output = im2uint8(gather(z));
y = im2uint8(gather(y));
end
%output(mask==1) = y(mask==1);
[PSNR_Cur,SSIM_Cur] = Cal_PSNRSSIM(im2uint8(label),output,10,10);
PSNRs(i) = PSNR_Cur;
SSIMs(i) = SSIM_Cur;
imshow(cat(2,y,output));
drawnow;
pause(0.001);
disp([filepaths(i).name,' -- ', num2str(PSNR_Cur,'%2.2f'),'dB -- ', num2str(SSIM_Cur,'%2.2f')]);
% imwrite(y,fullfile(folderResultCur,[Iname,'_mosaik.png']));
% imwrite(output,fullfile(folderResultCur,[Iname,'_ircnn.png']));
end
disp('Average PSNR and SSIM')
disp([mean(PSNRs),mean(SSIMs)]);
net = vl_simplenn_tidy(net);
应该是这行代码出错了;
显示没有找到这个函数;
Demo_demosaiking函数中调用 vl_simplenn_tidy子函数时,将包含vl_simplenn_tidy函数的.m文件拷贝至Demo_demosaiking相同目录即可。
vl_simplenn_tidy 是MatConvNet的函数。你要先去下载安装这个MATLAB扩展包。
你这函数在你设置的路径下有吗
首先把该函数筛选出来运行一下,看是否能成功,不能则检查函数是否有问题,没问题就检查下你引入的路径,看看该函数是否导入成功,若都没问题看你写的函数调用方法是否写错了,一般来说就这几个问题,一步一步解决
缺少vl_simplenn_tidy子函数,找到这个函数,包含至目录
https://blog.csdn.net/xiongchao99/article/details/78843154
可以尝试更改MATLAB版本
不同版本会舍弃部分自带函数
前辈,您解决这个问题了吗