主要内容

使用盲解卷积算法的去纹身图像

此示例显示了如何使用盲解卷积来解扫描图像。当没有有关失真(模糊和噪声)的信息时,可以有效地使用盲解卷积算法。该算法同时恢复图像和点扩展功能(PSF)。加速阻尼的Richardson-Lucy算法在每次迭代中使用。附加光学系统(例如相机)特性可用作输入参数,可以有助于提高图像恢复的质量。PSF约束可以通过用户指定的函数传递。

第1步:读取图像

在工作区中读取灰度图像。这Deconvblind.函数可以处理任意维的数组。

我= imread (“cameraman.tif”);图;imshow(我)、标题(原始图像的);文本(大小(我,2),大小(我,1)+ 15,......“图片由麻省理工学院提供”......“字形大小”7,'水平对齐'“对”);

图中包含一个轴。标题为“原始图像”的轴包含图像、文本两种类型的对象。

步骤2:模拟模糊

模拟可以模糊的真实图像(例如,由于相机运动或缺乏焦点)。该示例通过将高斯滤波器与真实图像卷积(使用imfilter)。高斯滤波器然后代表点扩展功能,PSF.

PSF = fspecial ('高斯'7、10);模糊= imfilter (PSF,我“对称”“conv”);imshow(模糊)标题('模糊图像'

图中包含一个轴。标题为“模糊图像”的轴包含一个图像类型的对象。

第3步:使用各种尺寸的PSF恢复模糊的图像

为了说明了解真正PSF大小的重要性,此示例执行三个修复程序。每次PSF重建都从统一阵列开始(一个数组)开始。

第一个恢复,j - 1P1,使用过小的数组,UNDERPSF,用于初始猜测PSF。underpsf阵列的大小比真正的psf更短为4个像素。

UNDERPSF = 1(大小(PSF) 4);[j - 1, P1] = deconvblind(模糊,UNDERPSF);imshow (j - 1)标题(“使用尺寸过小的PSF去模糊”

图中包含一个轴。带标题的轴用小尺寸PSF去模糊包含一个类型图像的对象。

第二个恢复,J2P2,使用一个1数组,OVERPSF,对于每个维度上比真正的PSF长4个像素的初始PSF。

OVERPSF = padarray(UNDERPSF,[4]),“复制”'两个都');(J2, P2) = deconvblind(模糊,OVERPSF);imshow (J2)标题('用超大的PSF去束缚'

图中包含一个轴。带有超大PSF的标题去孔的轴包含类型图像的对象。

第三个恢复,J3P3,使用一个1数组,INITPSF,对于与真正的PSF相同的初始PSF。

INITPSF = padarray(UNDERPSF,[2 2]),“复制”'两个都');: [J3 P3) = deconvblind(模糊,INITPSF);: imshow (J3)标题(与INITPSF由模糊变清晰的

图中包含一个轴。带有initpsf的标题去孔的轴包含类型图像的对象。

第4步:分析已恢复的PSF

所有三种修复体也产生PSF。下面的图片显示了重建的PSF的分析如何有助于猜测初始PSF的正确尺寸。在真正的PSF中,高斯滤波器,最大值位于中心(白色),并在边框(黑色)处减少。

数字;子图(2,2,1)imshow(psf,[],'InitialMagnification''合身')标题(“真正的PSF”)次要情节(222)imshow (P1, [],'InitialMagnification''合身')标题(“重建弱小PSF”次要情节(2,2,3)imshow (P2, [],'InitialMagnification''合身')标题('重建超大的PSF')Subplot(2,2,4)imshow(p3,[],'InitialMagnification''合身')标题('重建真正的psf'

图包含4个轴。具有标题的轴1 True PSF包含类型图像的对象。具有标题重建的轴2的轴2包含类型图像的对象。具有标题重建的超大PSF的轴3包含类型图像的对象。具有标题重建的True PSF的轴4包含类型图像的对象。

第一次修复重建的PSF,P1,显然不符合约束的大小。它在边界处有很强的信号变化。相应的图像,j - 1,并没有显示出比模糊图像有任何改善,模糊

第二次修复重建的PSF,P2,边缘变得非常光滑。这意味着恢复可以处理较小尺寸的PSF。相应的图像,J2,显示一些去模糊,但它是强烈破坏了铃声。

最后,在第三恢复中重建的PSF,P3,有点中间P1P2.的数组,P3,非常漂亮的PSF。相应的图像,J3,显示出显着的改善;然而,它仍然被振铃腐蚀了。

第5步:改善恢复

复原图像中的铃声,J3,沿着图像和图像边界的尖锐强度对比区域发生。此示例显示如何通过指定加权函数来降低振铃效果。算法根据每个像素权重重量阵列同时恢复图像和PSF。在我们的例子中,我们首先使用边缘函数找到“锐”像素。通过尝试和错误,我们确定一个理想的阈值水平是0.08。

重量=边缘(模糊,“索贝尔”,.08);

为了扩大面积,我们使用混合然后传入一个结构化元素,SE.

se = strel ('盘',2);重量= 1-双(Imdilate(重量,se));

接近边框的像素也被分配了值0。

WEIGHT([1:3 end-(0:2)],:) = 0;WEIGHT(:,[1:3 end-(0:2)]) = 0;图imshow(重量)标题(权重数组的

图中包含一个轴。标题为Weight Array的轴包含一个类型为image的对象。

通过调用DeconVblind来恢复图像重量数组和增加的迭代次数(30)。几乎所有的振铃都被抑制了。

[J, P) = deconvblind(模糊INITPSF 30,[],重量);imshow (J)标题(“解模糊图像”

图中包含一个轴。具有标题除霜图像的轴包含类型图像的对象。

步骤6:在PSF恢复上使用附加约束

该示例显示了如何在PSF上指定其他约束。功能,有趣的,下面返回一个修改后的PSF数组,deconvblind将在下一次迭代中使用该数组。

在这个例子中,有趣的修改PSF通过剪切它P1P2每个维度中的像素数,然后用0填充数组回其原始大小。该操作不改变PSF中心的值,但有效地减小了PSF的大小2 * p1.2 * p2.像素。

P1 = 2;P2 = 2;有趣= @ (PSF) padarray (PSF (P1 + 1: end-P1, P2 + 1: end-P2), [P1 P2]);

匿名函数,有趣的,传入Deconvblind.最后的。有关为函数提供其他参数的信息,请参见参数化函数的参数化函数部分有趣的

在此示例中,初始PSF的大小,OVERPSF,是4个像素大于真正的psf。将P1 = 2和P2 = 2设置为参数有趣的有效地创造有价值的空间OVERPSF和真正的PSF的大小相同。因此,结果,摩根富林明PF.,类似于右尺寸的PSF和否的去卷积的结果有趣的称呼,jP.,从第4步。

[jf,pf] = deconvblind(模糊,overpsf,30,[],重量,有趣);imshow(jf)标题(“解模糊图像”

图中包含一个轴。具有标题除霜图像的轴包含类型图像的对象。

如果我们使用过大的初始PSF,OVERPSF,没有约束函数,有趣的,得到的图像与不满意的结果相似,J2,在步骤3中实现。

注意,前面有任何未指定的参数有趣的可以省略,如Dampar.读出在该示例中,不需要放置持有者([])。

也可以看看

|

相关话题