处理图像时,我们用的图片往往都会有很多噪声。在黑暗中或是设备感光器受到影响,拍出来的图像就会有很多噪声,俗称“噪点”,Salt & Pepper
就是其中一种。为什么会叫盐和胡椒粉?因为这些噪声不是白的就是黑的,看起来很像是在图片上撒了盐和胡椒粉,而更专业点的会叫它脉冲噪声,这是在图像信号中突然且尖锐的(sudden and sharp)扰动导致图片变得粗糙。
添加噪声
手动制造Salt Pepper噪声:
1 | function salt_pepper() |
运行效果:
放大看就是黑色和白色的点:
强度图
上面提到Salt Pepper噪声是脉冲噪声,突然且尖锐的干扰信号造成原始图像信号抖动,那我再来对比下图片的强度(intensity),上代码:
1 | >> x=[0 size(img, 2)]; |
效果:
上半部分红线所在的像素,下半部分是像素green
通道的强度图,因为彩色图片有r,g,b三通道。再来看看加过噪音后的图:
代码差不多,就不贴了。可以明显看到加了噪音后线图非常不稳定,为了加强效果,我把两个折线图放在一起:
可见,像素中细微的差别到图片的强度图中都会被放大。
降噪
处理图片噪声的方法有很多,这里要介绍的是Median Filter
,主要原理是将滑动窗口中的像素点排序后取中位数作为新的像素点,如下图:
实际测试中,我们使用3x3窗口,实际效果:
上代码:
1 | % median filter |
上图使用了10%的噪点率,提高到25%看看:
可以看到median filter起到了很大的效果,但同时我们可以看到,广告牌上原本的字体更模糊了。原因呢,是因为取了中位数后,像素中的最大值,最小值受到影响,换句话说就是图像本身也带有高频和低频信号,一番操作过后,这些信号得到削弱,自然就变得模糊(Blurry)了,再看看广告牌的边,变“毛”了,这也是Median filter
带来的另一个副作用,产生更多冗余像素。
参考
- EEEM063课程PPT
©️版权所有,转载请联系作者