Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Denoising by Donoho algorithm

Asked by Soum on 15 Jun 2013

Hello I'm trying to apply Donoho formula on my noisy image to get the threshold value and apply it on details coefficients which i get it by using wavedec function please someone help me to get a results if some one have another idea for make my code useful please just tell me I'm waiting

clear all

I=imread('cameraman.tif');

n = prod( size(I) );

I=double(I);

Ib=I+25*randn(size(I));% add noise

[C,S] = wavedec2(Ib,2,'bior3.7');

DH = detcoef2('all',C,S,1);% extract details coefficient from level 1

delta = median( abs(DH) ) / 0.6745;

thr = delta * sqrt(2*log(n));

NC = wthcoef2('bior3.7',C,S,DH,thr,s) % i use the soft threshold

X = waverec2(C, S, 'bior3.7'); % how can i get my image after threshold

figure(2)

imagesc(X);axis off;colormap(gray)

0 Comments

Soum

Products

No products are associated with this question.

1 Answer

Answer by Wayne King on 15 Jun 2013
Edited by Wayne King on 15 Jun 2013
Accepted answer

You want to use the thresholded coefficients in the reconstruction. You also made a couple other errors in your code.

    I = imread('cameraman.tif');
    n = prod( size(I) );
    I = double(I);
    Ib = I+25*randn(size(I));% add noise
    [C,S] = wavedec2(Ib,2,'bior3.7');
    DH = detcoef2('all',C,S,1);% extract details coefficient from level 1
    DH = DH(:);
    delta = median( abs(DH) ) / 0.6745;
    thr = delta * sqrt(2*log(n));
    NC = wthcoef2('t',C,S,1,thr,'s'); % i use the soft threshold
    X = waverec2(NC, S, 'bior3.7');
    figure;
    imagesc(Ib); title('Noisy Image'); colormap gray;
    figure;
    imagesc(X); title('Denoised 1st level coeffs'); colormap gray;

8 Comments

Soum on 16 Jun 2013

THANK YOU AGAIN :) but you didn't understand me whatt does it mean the 't'??? NC = wthcoef2('t',C,S,1,thr,'s');

Walter Roberson on 22 Jun 2013

The 't' is a literal string. http://www.mathworks.com/help/wavelet/ref/wthcoef2.html

NC = wthcoef2('t',C,S,N,T,SORH) returns the detail coefficients obtained from the wavelet decomposition structure [C,S] by soft (if SORH ='s') or hard (if SORH ='h') thresholding (see wthresh for more information) defined in vectors N and T. N contains the detail levels to be thresholded and T the corresponding thresholds which are applied in the three detail orientations. N and T must be of the same length.
Soum on 25 Jun 2013

Thanks Mr.Walter Yes I've read this http://www.mathworks.com/help/wavelet/ref/wthcoef2.html but my Problem is why we put the t ???? t is a literal string but what does it mean ?

Wayne King

Contact us