deconvlucy
Deblur image using Lucy-Richardson method
使用Lucy-Richardson方法对图像进行去模糊

语法

J = deconvlucy(I,psf)
J = deconvlucy(I,psf,iter)
J = deconvlucy(I,psf,iter,dampar)
J = deconvlucy(I,psf,iter,dampar,weight)
J = deconvlucy(I,psf,iter,dampar,weight,readout)
J = deconvlucy(I,psf,iter,dampar,weight,readout,subsample)

描述

J = deconvlucy(I,psf)恢复图像I,这一图像是因点扩展函数(point-spread function,即PSF),psf以及可能由加性噪声卷积而退化的。该算法是基于最大化泊松统计,所得图像J是原始图像I实例的可能性。
为了改善修复,deconvlucy支持几个可选参数,如下所述。如果您未指定中间参数,请使用[]作为占位符。

  • J = deconvlucy(I,psf,iter)指定迭代次数iter。
  • J = deconvlucy(I,psf,iter,dampar)通过抑制像素的迭代来控制噪声放大,该像素与由阻尼阈值阻尼器指定的噪声相比偏差较小。默认情况下,不发生阻尼。
  • J = deconvlucy(I,psf,iter,dampar,weight)指定恢复时要考虑输入图像中的哪些像素。权重数组中元素的值确定要考虑输入图像中相应位置的像素量。例如,要从像素中排除像素,请在权重数组中为其分配值0。可以根据平场校正量来调整分配给每个像素的权重值。
  • J = deconvlucy(I,psf,iter,dampar,weight,readout)指定附加噪声(例如背景噪声,前景噪声)和读出的摄像机噪声,读出的方差。
  • J = deconvlucy(I,psf,iter,dampar,weight,readout,subsample)当PSF在比图像精细的子采样倍数的网格上给出时,使用子采样。

示例

使用几种取消隐藏的可选语法删除模糊

  • 创建样本图像并将其模糊。
I = checkerboard(8);
PSF = fspecial('gaussian',7,10);
V = .0001;
BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V);
  • 创建一个权重数组,并使用几个可选参数调用deconvlucy。
WT = zeros(size(I));
WT(5:end-4,5:end-4) = 1;
J1 = deconvlucy(BlurredNoisy,PSF);
J2 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V));
J3 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V),WT);
  • 显示结果
subplot(221);imshow(BlurredNoisy);
title('A = Blurred and Noisy');
subplot(222);imshow(J1);
title('deconvlucy(A,PSF)');
subplot(223);imshow(J2);
title('deconvlucy(A,PSF,NI,DP)');
subplot(224);imshow(J3);
title('deconvlucy(A,PSF,NI,DP,WT)');

输入参数

  • I:模糊图像(数值数组|单元阵列)
    模糊图像,指定为任意尺寸的数字数组。您也可以将图像指定为单元数组以启用中断的迭代。
    数据类型:single | double | int16 | uint8 | uint16
  • PSF:点扩展函数(数值数组)
    PSF,指定为数字数组。您还可以将psf指定为单元数组以启用中断的迭代。
    数据类型:single | double | int16 | uint8 | uint16
  • iter:迭代次数(默认是10|正数)
    迭代次数,指定为正整数。
    数据类型:double
  • dampar:阻尼阈值(默认是0|数值标量)
    阻尼阈值,指定为数字标量。对于迭代之间的偏差小于阈值的像素发生阻尼。阻尼器具有与I相同的数据类型。
  • weight:每个像素的权重(数值数组)
    每个像素的权重值,指定为数值数组,范围为[0,1]。 weight具有与输入图像I相同的大小。默认情况下,weight中的所有元素的值均为1,因此在还原中所有像素均被视为相等。
    数据类型:double
  • readout:噪声(默认是0|数值数组|数值标量)
    噪声,指定为数字标量或数字数组。读出值对应于附加噪声(例如来自前景和背景的噪声)和读出的照相机噪声的方差。读数具有与I相同的数据类型。
  • subsampling:下采样(默认是1|正数标量)
    下采样,特指正数标量
    数据类型:double

输出参数

J:去模糊的图像(数值数组|1×4单元阵列)
去模糊的图像,以数字数组或1×4单元格数组形式返回。 J(或J {1},当J是一个单元格数组时)与I具有相同的数据类型。有关将J作为单元数组返回以进行中断迭代的更多信息,请参见下面提示部分。

提示

  • 您可以使用deconvlucy执行从前一个反卷积停止处开始的反卷积。要使用此功能,请将输入图像I和PSF psf作为像元数组{I}和{psf}传递。当您这样做时,deconvlucy函数将输出图像J作为单元格数组返回,然后可以将其作为输入数组传递给下一个deconvblind调用。输出单元数组J包含四个元素:
    J{1}包含原始图像I。
    J{2}包含最后一次迭代的结果。
    J{3}包含倒数第二次迭代的结果。
    J{4}是由迭代算法生成的数组。

  • 输出图像J可能表现出由算法中使用的离散傅立叶变换引入的振铃。要减少振铃,请在调用deconvlucy之前使用I = edgetaper(I,psf)

  • deconvlucy将PSF转换为两倍而不进行归一化。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐