主要内容

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

此示例显示了如何使用盲解卷积来解扫描图像。当没有有关失真(模糊和噪声)的信息时,可以有效地使用盲解卷积算法。该算法同时恢复图像和点扩展功能(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在每个维度上都比真正的PSF长4个像素。

OVERPSF = padarray(UNDERPSF,[4 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;重量(:,[1:3 end-(0:2)]) = 0;图imshow(重量)标题(权重数组的

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

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

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

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

第六步:在PSF恢复上使用额外的约束

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

在这个例子中,有趣的通过裁剪来修改PSFP1P2.每个维度的像素数,然后用零填充数组,使其恢复到原来的大小。该操作不会改变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.读出在该示例中,不需要放置持有者([])。

另请参阅

|

相关主题