文档

去模糊图像使用盲反褶积算法

这个例子展示了如何使用盲反褶积解模糊图像。盲反褶积算法可以有效地使用在没有信息失真(模糊和噪声)是已知的。该算法恢复图像和点扩散函数(PSF)同时进行。加速,阻尼Richardson-Lucy算法在每次迭代中。额外的光学系统(如相机)特征可以作为输入参数,可以帮助提高图像重建的质量。PSF约束可以通过传递一个指定的函数。

步骤1:读取图像

例子读入一个强度图像。的deconvblind函数可以处理任何数组的维度。

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

步骤2:模拟模糊

模拟一个真实的图像,可以模糊(例如,由于摄像机运动或缺乏焦点)。卷积的例子模拟模糊与真正的图像(使用高斯滤波器imfilter)。高斯滤波器则代表一个点扩散函数,PSF

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

步骤3:恢复模糊图像使用不同大小的psf

说明的重要性,知道真正的PSF的大小,本例中执行三个修复。每次PSF重建从一个统一的数组(数组)。

第一个恢复,j - 1P1,使用一个矮小的数组,UNDERPSFPSF的初始猜测。UNDERPSF数组的大小是4像素短在每个维度比真正的PSF。

UNDERPSF = 1(大小(PSF) 4);[j - 1, P1] = deconvblind(模糊,UNDERPSF);图;imshow (j - 1)、标题(由模糊变清晰,个头矮小的PSF的);

第二个恢复,J2P2,使用一个数组的OVERPSF,最初的PSF 4像素再在每个维度比真正的PSF。

OVERPSF = padarray (UNDERPSF 4 [4],“复制”,“两个”);(J2, P2) = deconvblind(模糊,OVERPSF);图;imshow (J2);标题(PSF的去模糊的);

第三个恢复,J3P3,使用一个数组的INITPSF,最初的PSF是完全相同的大小作为真正的PSF。

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

第四步:分析恢复PSF

所有三个修复也产生PSF。以下图片显示重建的PSF的分析如何帮助猜测正确的大小最初的PSF。在真正的PSF,高斯滤波器,最大值是在中心(白色)和减少边界(黑色)。

图;次要情节(221);imshow (PSF, [],“InitialMagnification”,“健康”);标题(“真正的PSF”);次要情节(222);imshow (P1, [],“InitialMagnification”,“健康”);标题(“重建弱小PSF”);次要情节(223);imshow (P2, [],“InitialMagnification”,“健康”);标题(“重建超大号的PSF”);次要情节(224);imshow (P3, [],“InitialMagnification”,“健康”);标题(“重建真实的PSF”);

PSF重建的修复,P1,显然不符合限制大小。它有一个强烈的信号变化的边界。相应的图像,j - 1,不显示任何改进的清晰与模糊图像,模糊

PSF第二修复重建,P2,变得非常光滑的边缘。这意味着恢复可以处理规模较小的PSF。相应的图像,J2显示了一些由模糊变清晰,但强烈腐蚀的响了。

最后,PSF第三修复重建,P3,有点之间的中间P1P2。的数组,P3就像真正的PSF。相应的图像,J3,显示了显著改善;但是它仍然是损坏的响了。

第五步:提高恢复

响的恢复图像,J3,发生大幅强度对比图像和图像边界。这个例子展示了如何通过指定一个加权函数减少振铃效应。每个像素根据权重算法重量在恢复图像和PSF数组。在我们的示例中,我们首先发现“大幅”像素使用边缘函数。通过反复试验,我们确定一个理想的阈值水平是0.3。

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

扩大面积,我们使用imdilate并通过在一个结构化元素,se

se = strel (“磁盘”2);重量= 1-double (imdilate(重量、se));

靠近边界的像素也分配值0。

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

通过调用deconvblind与图像恢复重量数组和增加迭代次数(30)。几乎所有的铃声是抑制。

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

步骤6:使用额外的约束PSF恢复

这个例子显示了如何指定附加约束的PSF。这个函数,有趣的下面,返回一个修改后的PSF数组deconvblind使用为下一次迭代。

在这个例子中,有趣的修改PSF通过种植它P1P2每个维度的像素数量,然后填充数组与零回到原来的大小。这个操作不会改变的值在PSF的中心,但有效地降低了PSF的大小2 * P12 * P2像素。

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

匿名函数,有趣的,被传递到deconvblind最后一次。看到部分参数化函数,在MATLAB数学文档,提供额外的参数函数的信息有趣的

在这个例子中,最初的PSF的大小,OVERPSF,是4像素比真正的PSF。设置P1 = 2和P2 = 2作为参数有趣的有效地使宝贵的空间OVERPSF同样大小的真正的PSF。因此,结果,摩根富林明PF,类似于反褶积的结果与正确的大小的PSF,没有有趣的电话,JP,从步骤4。

(摩根富林明,PF) = deconvblind(模糊OVERPSF 30,[],体重,有趣的);图;imshow(摩根富林明);标题(“解模糊图像”);

如果我们使用了超大的初始PSF,OVERPSF,没有约束函数,有趣的,由此产生的图像类似于不满意的结果,J2在步骤3中,实现。

注意,任何未指定的参数有趣的可以省略,如DAMPAR读出在本例中,不需要夹,([])。

这个主题有帮助吗?