• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Matlab
  • 标签: cs  

资源简介

压缩感知技术在信号去噪中的应用,程序代码可以调试运行成功

资源截图

代码片段和文件信息

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 

评论

共有 条评论