主要内容

使用引导滤波器进行闪光/无闪光去噪

这个例子展示了如何使用引导滤波器平滑图像,减少噪声,同时保留边缘。该示例使用了同一场景的两张照片,一张使用闪光灯拍摄,另一张没有使用闪光灯。没有闪光灯的版本保留了颜色,但由于光照条件较低,会产生噪音。本例使用使用闪光灯拍摄的版本作为引导图像。

读取要过滤到工作区中的图像。这个例子使用了一些没有使用闪光灯的玩具的图像。由于光照条件较差,图像包含大量噪声。

A = imread(“toysnoflash.png”);图;imshow(一个);标题(“输入图像-相机闪光关闭”

图中包含一个axes对象。标题为Input Image - Camera Flash Off的axes对象包含一个类型为Image的对象。

将要用作引导图像的图像读入工作空间。在本例中,引导图像是用闪光灯拍摄的同一场景的图片。

G = imread(“toysflash.png”);图;imshow (G);标题(“引导图像-相机闪光”

图中包含一个axes对象。标题为“引导图像”的坐标轴对象包含一个类型为“图像”的对象。

执行引导过滤操作。使用imguidedfilter函数,可以指定用于过滤的邻域的大小。默认是一个5乘5的正方形。本例使用3 × 3邻域。还可以指定过滤器执行的平滑量。该值可以是任意正数。一种方法是首先使用默认设置并查看结果。如果你想要更少的平滑和更多的边缘保存,使用较低的值这个参数。要获得更平滑的效果,请使用更高的值。这个示例设置平滑参数的值。

nhoodSize = 3;smoothValue = 0.001*diff(getrangefromclass(G)).^2;B =无导滤波器(A, G,“NeighborhoodSize”nhoodSize,“DegreeOfSmoothing”, smoothValue);图,imshow(B),标题(过滤后的图像的

图中包含一个axes对象。标题为Filtered Image的axes对象包含一个Image类型的对象。

检查原始图像的一个区域的特写,并将其与过滤后的图像进行比较,以查看这种边缘保持平滑滤波器的效果。

图;H1 = subplot(1,2,1);imshow (A)、标题(“原始图像中的区域”),轴H2 = subplot(1,2,2);imshow (B)、标题(“滤过图像中的区域”),轴Linkaxes ([h1 h2]) xlim([520 660]) ylim([150 250])

图中包含2个轴对象。标题为Region的axis对象1在原始图像中包含一个类型为Image的对象。标题为Region in Filtered Image的Axes对象2包含一个Image类型的对象。

另请参阅

相关的话题

Baidu
map