MATLAB中盲去卷积deconvblind函数的使用

deconvblind:使用盲解卷积的去模糊图像。

[J,PSF] = deconvblind(I,INITPSF)使用最大似然算法对图像I解卷积,返回去模糊图像J和恢复的点扩散函数PSF。 生成的PSF是与INITPSF相同大小的正数组,归一化,所以它的总和增加到1。PSF的恢复受其初始猜测大小INITPSF的影响较大,而其值较小(一个数组是一个更安全的猜测)。

I 可以是N维数组。

为了改善恢复,可以传入附加参数(如果中间参数未知,则使用[]作为占位符):

[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).

PSF的附加限制可以通过用户提供的功能来提供:

[J,PSF] = deconvblind(...,FUN)

FUN(可选)是描述PSF附加约束的函数。 FUN必须是FUNCTION_HANDLE。 FUN在每次迭代结束时被调用。 FUN必须接受PSF作为其第一个参数,并且可以接受附加参数P1,P2,...,PN。 FUN应该返回一个参数PSF,它与INITPSF的大小相同,并满足积极性和规范化约束。

NUMIT(可选)是迭代次数(默认值为10)。

DAMPAR(可选)是一个数组,用于指定图像I(根据泊松噪声的标准偏差)的结果图像的阈值偏差,低于此值会发生阻尼。 对于在DAMPAR值内偏离其原始值的像素,迭代被抑制。 这可以抑制这些像素中的噪音,并在其他地方保留必要的图像细节。 默认值为0(无阻尼)。

WEIGHT(可选)分配给每个像素以反映相机的拍摄质量。 将一个坏像素分配给零权值,从而排除该像素。 您可以根据平场校正的数量来调整自己的体重,而不是给予好像素的权重。 默认值是与输入图像I大小相同的单位数组。

READOUT(可选)是对应于附加噪声(例如,背景,前景噪声)和读出相机噪声方差的阵列(或值)。READOUT必须以图像为单位。 默认值是0。

注意,输出图像J可能会出现由算法中使用的离散傅里叶变换引入的振铃。 在调用deconvblind之前,为了减少振铃使用         I = EDGETAPER(I,PSF)。

还要注意,deconvblind允许您从较早的解卷积运行结果开始恢复解卷积。 要启动此语法,输入I和INITPSF必须以单元数组{IN}和{INITPSF}的形式传入。 然后输出J和PSF变成单元阵列,并可以作为输入数组传递给下一个解卷积调用。 输入单元格数组可以包含一个数字数组(在初始调用时)或四个数值数组(当它是上一次解除绑定运行的输出时)。输出J包含四个元素,其中J {1} = I,J {2}是上一次迭代产生的图像,J {3}是前一次迭代前的图像,J {4}是 通过迭代算法内部使用的数组。

Class Support
 -------------
I and INITPSF can be uint8, uint16, int16, double, or single. DAMPAR and READOUT must have the same class as the input image. Other inputs have to be double. The output image J (or the first array of the output cell) has the same class as the input image I. The output PSF is double.                                                                                                          I 和 INITPSF可以是uint8,uint16,int16,double或single。 DAMPAR和READOUT必须与输入图像具有相同的等级。 其他投入必须是double。 输出图像J(或输出单元的第一个阵列)与输入图像I具有相同的类别。输出PSF是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));
       [J P] = deconvblind(BlurredNoisy,INITPSF,20,10*sqrt(V),WT);
       subplot(221);imshow(BlurredNoisy);
                      title('A = Blurred and Noisy');
       subplot(222);imshow(PSF,[]);
                      title('True PSF');
       subplot(223);imshow(J);
                      title('Deblurred Image');
       subplot(224);imshow(P,[]);
                      title('Recovered PSF');
 


你可能感兴趣的:(盲反卷积图像复原,MATLAB)