資源簡介
壓縮感知技術在信號去噪中的應用,程序代碼可以調試運行成功
代碼片段和文件信息
function?ResIm?=?Image_Denoising_Global_Denoising(Im??trueIm)
%?Denoise?image?by?denoising?its?patches?using?a?pre-determined?dictionary.
%?Patches?are?denoised?WITHOUT?overlap.
%
%?Inputs?:?
%?Im??????:?image?to?denoise?double?[0?255]
%?trueIm??:?This?is?used?(unfairly)?to?optimize?the?parameters?for?the?algorithm
%
%?Outputs?:
%?ResIm???:?Result?Image?for?the?best?parameter
%%?Parameters
imLen?=?numel(Im);
%%?Create?the?dictionary?-?Haar
[HaarDict??atomNorms]?=?Generate_Haar_Matrix(size(Im)??2);
atomNorms?=?atomNorms(:);
invAtomNorms?=?1?./?atomNorms;
%?Show_Haar_Dict(HaarDict??size(Im));
nAtoms?=?size(HaarDict??2);?%?=?1?+?3?*?nLevels
%%?Prepare?the?projections?of?the?image?onto?the?dictionary
projs?=?HaarDict‘?*?Im(:);
absProjs?=?abs(projs);
%%?Test?for?different?values?of?T
Tvalues?=?[0?:?200];
resPSNRs?=?zeros(1??length(Tvalues));
fprintf(‘%d?T?values:?‘??length(Tvalues));
for?Tind?=?1?:?length(Tvalues)
if?mod(Tind??10)?==?0?fprintf(‘%d?‘??Tind);?end;
%?Current?threshold
T?=?Tvalues(Tind);
%?Compute?the?hard-thresholding?result
resProjs?=?projs?.*?(absProjs?>?(T?.*?invAtomNorms));
%?Compute?the?result?signal?by?multiplying?by?the?dictionary
currResIm?=?HaarDict?*?resProjs;
currResIm?=?reshape(currResIm??size(Im));
%?Compute?error?result
resPSNRs(Tind)?=?Compute_Error_Stats(currResIm??trueIm);
end
fprintf(‘\n‘);
%%?Find?the?best?value?and?plot?the?results
[~?maxPSNRind]?=?max(resPSNRs);
bestT?=?Tvalues(maxPSNRind);
if?1
figure;
plot(Tvalues??resPSNRs??‘+r‘);
title(‘PSNR?as?a?function?of?T‘);
end
%%?Reconstruct?the?image?for?the?best?value?of?T
resProjs?=?projs?.*?(absProjs?>?(bestT?.*?invAtomNorms));
ResIm?=?HaarDict?*?resProjs;
ResIm?=?reshape(ResIm??size(Im));
%%
return;
%?[nm]=size(Haar);
%?W=[0.25*ones(n*41);?0.5*ones(n*31)];
function?[HaarDict??atomNorms]?=?Generate_Haar_Matrix(imSize??nLevels)
atomNorms?=?[];
%?Prepare?the?first?level?bands
basicH?=?[1?-1];
basicL?=?[1?1];
HH1?=?kron(basicH‘??basicH);?
HaarDict?=?Construct_One_Haar_Band(imSize??HH1);
atomNorms?=?[atomNorms?ones(1??prod(imSize))?*?sqrt(sum(HH1(:).^2))];
LH1?=?kron(basicL‘??basicH);?
HaarDict?=?[HaarDict?Construct_One_Haar_Band(imSize??LH1)];
atomNorms?=?[atomNorms?ones(1??prod(imSize))?*?sqrt(sum(LH1(:).^2))];
HL1?=?kron(basicH‘??basicL);?
HaarDict?=?[HaarDict?Construct_One_Haar_Band(imSize?
評論
共有 條評論