Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
De Conv Blind

De Conv Blind

Ratings: (0)|Views: 15|Likes:
Published by Akhmat Basori

More info:

Published by: Akhmat Basori on Jan 16, 2012
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





1/9/1211:36 AMC:\MATLAB7\toolbox\images\images\deconvblind.m1 of 9function [J,P] = deconvblind(varargin)%DECONVBLIND Image restoration using blind deconvolution algorithm.% [J,PSF] = DECONVBLIND(I,INITPSF) deconvolves image I using maximum% likelihood algorithm, returning both deblurred image J and a restored% point-spread function PSF. The resulting PSF is a positive array of% the same size as the INITPSF, normalized so its sum adds to 1. The% PSF restoration is affected strongly by the size of its initial% guess, INITPSF, and less by its values (an array of ones is a safer% guess).%% To improve the restoration, additional parameters can be passed in% (use [] as a place holder if an intermediate parameter is unknown):% [J,PSF] = DECONVBLIND(I,INITPSF,NUMIT)% [J,PSF] = DECONVBLIND(I,INITPSF,NUMIT,DAMPAR)% [J,PSF] = DECONVBLIND(I,INITPSF,NUMIT,DAMPAR,WEIGHT)% [J,PSF] = DECONVBLIND(I,INITPSF,NUMIT,DAMPAR,WEIGHT,READOUT).%% Additional constraints on PSF can be provided via a user supplied% function:% [J,PSF] = DECONVBLIND(...,FUN,P1,P2,...,PN)%% FUN (optional) is a function describing additional constraints on the% PSF. There are four ways to specify FUN: as a function-handle, @, as% an inline object, or as a string containing either a function name or% a MATLAB expression. FUN is called at the end of each iteration. FUN% must accept the PSF as its first argument and may accept additional% parameters, P1, P2, ..., PN. FUN should return one argument, PSF,% that is the same size as the INITPSF, and satisfies the positivity% and normalization constraints.%% NUMIT (optional) is the number of iterations (default is 10).%% DAMPAR (optional) is an array that specifies the threshold deviation% of the resulting image from the image I (in terms of the standard% deviation of Poisson noise) below which the damping occurs. The% iterations are suppressed for the pixels that deviate within the% DAMPAR value from their original value. This suppresses the noise% generation in such pixels, preserving necessary image details% elsewhere. Default is 0 (no damping).%% WEIGHT (optional) is assigned to each pixel to reflect its recording% quality in the camera. A bad pixel is excluded from the solution by% assigning it zero weight value. Instead of giving a weight of one for% good pixels, you can adjust their weight according to the amount of% flat-field correction. Default is a unit array of the same size as% input image I.%% READOUT (optional) is an array (or a value) corresponding to the% additive noise (e.g., background, foreground noise) and the variance% of the read-out camera noise. READOUT has to be in the units of the% image. Default is 0.%
1/9/1211:36 AMC:\MATLAB7\toolbox\images\images\deconvblind.m2 of 9%% Note that the output image J could exhibit ringing introduced by the% discrete Fourier transform used in the algorithm. To reduce the% ringing use I = EDGETAPER(I,PSF) prior to calling DECONVBLIND.%% Note also that DECONVBLIND allows you to resume deconvolution% starting from the results of an earlier DECONVBLIND run. To initiate% this syntax, the input I and INITPSF have to be passed in as cell% arrays, {I} and {INITPSF}. Then the output J and PSF become cell% arrays and can be passed as the input arrays into the next% DECONVBLIND call. The input cell array can contain one numeric array% (on initial call), or four numeric arrays (when it is the output from% a previous run of DECONVBLIND). The output J contains four elements,% where J{1}=I, J{2} is the image resulted from the last iteration,% J{3} is the image from one before last iteration, J{4} is an array% used internally by the iterative algorithm.%% Class Support% -------------% I and INITPSF can be of class uint8, uint16, or double. DAMPAR and% READOUT have to be of the same class as the input image. Other inputs% have to be of class double. Output image J (or the first array of the% output cell) is of the same class as the input image I. Output PSF is% of class double.%% Example% -------%% I = checkerboard(8);% PSF = fspecial('gaussian',7,10);% V = .0001;% BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V);% WT = zeros(size(I));WT(5:end-4,5:end-4) = 1;% INITPSF = ones(size(PSF));% FUN = inline('PSF + P1','PSF','P1');% [J P] = deconvblind(BlurredNoisy,INITPSF,20,10*sqrt(V),WT,FUN,0);% subplot(221);imshow(BlurredNoisy);% title('A = Blurred and Noisy');% subplot(222);imshow(PSF,[]);% title('True PSF');% subplot(223);imshow(J);% title('Deblured Image');% subplot(224);imshow(P,[]);% title('Recovered PSF');%% See also DECONVWNR, DECONVREG, DECONVLUCY, EDGETAPER, PADARRAY,% PSF2OTF, OTF2PSF.% Copyright 1993-2003 The MathWorks, Inc.% $Revision: $%
1/9/1211:36 AMC:\MATLAB7\toolbox\images\images\deconvblind.m3 of 9% References% ----------% "Acceleration of iterative image restoration algorithms, by D.S.C. Biggs% and M. Andrews, Applied Optics, Vol. 36, No. 8, 1997.% "Deconvolutions of Hubble Space Telescope Images and Spectra",% R.J. Hanisch, R.L. White, and R.L. Gilliland. in "Deconvolution of Images% and Spectra", Ed. P.A. Jansson, 2nd ed., Academic Press, CA, 1997.% "Light Microscopic Images Reconstructed by Maximum Likelihood% Deconvolution", Timothy J. Holmes et al. in "Handbook of% Biological Confocal Microscopy", Ed. James B. Pawley, Plenum% Press, New York, 1995% Parse inputs to verify valid function calling syntaxes and arguments[J,P,NUMIT,DAMPAR,READOUT,WEIGHT,sizeI,classI,sizePSF,FunFcn,FunArg] =...parse_inputs(varargin{:});% 1. Prepare parameters for iterations%% Create indexes for image according to the sampling rateidx = repmat({':'},[1 length(sizeI)]);wI = max(WEIGHT.*(READOUT + J{1}),0);% at this point - positivity constraintfw = fftn(WEIGHT);clearWEIGHT;DAMPAR22 = (DAMPAR.^2)/2;% 2. L_R Iterations%lambda = 2*any(J{4}(:)~=0);for k = (lambda + 1) : (lambda + NUMIT),% 2.a Make an image and PSF predictions for the next iterationif k > 2,% imagelambda = (J{4}(:,1).'*J{4}(:,2))/(J{4}(:,2).'*J{4}(:,2) + eps);lambda = max(min(lambda,1),0);% stability enforcementendY = max(J{2} + lambda*(J{2} - J{3}),0);% image positivity constraintif k > 2,% PSFlambda = (P{4}(:,1).'*P{4}(:,2))/(P{4}(:,2).'*P{4}(:,2) + eps);lambda = max(min(lambda,1),0);% stability enforcementendB = max(P{2} + lambda*(P{2} - P{3}),0);% PSF positivity constraintsumPSF = sum(B(:));B = B/(sum(B(:)) + (sumPSF==0)*eps);% normalization is a necessary constraint,% because given only input image, the algorithm cannot even know how much% power is in the image vs PSF. Therefore, we force PSF to satisfy this% type of normalization: sum to one.% 2.b Make core for the LR estimationCC = corelucy(Y,psf2otf(B,sizeI),DAMPAR22,wI,READOUT,1,idx,[],[]);

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->