首先,请按照注释中的建议尝试找出为什么您拥有负值。然后确定是否需要这些值。如果是:将图像缩放为[0,1]。如果您仍然要删除这些像素并将其平均替换,如您在问题中所建议的,则可以采用以下方法:
这种噪声称为“盐和胡椒噪声”。看到这个图像的名字后,这个名字很明显的原因很明显:图像上遍布白色(像素= 1)和黑色(像素= 0)点,看起来像盐和胡椒粒。
在您的情况下,如果我们假设负值为零,则图像中只会出现胡椒噪声。
为了解决这个问题,让我们准备一些数据:我们读取摄影师的图像并将其转换为两倍(以允许负值)。然后,我们随机反转所有像素的1%,因此它们为负数。
im = im2double(imread('cameraman.tif'));
randmask = rand(size(im)) < 0.01;
distIm = im - 2*randmask.*im;
Run Code Online (Sandbox Code Playgroud)
滤除椒盐噪声的一种简单有效的方法是使用中值滤波器(medfilt2),该滤波器将图像中的每个像素替换为定义的邻域的中值,例如3x3。该过滤器是您抵抗盐和胡椒粉噪音的标准武器之一。
medfilt2(distIm);
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用roifilt2函数选择小于零的像素,然后仅对这些像素应用滤镜。这样一来,您就不会触摸“正确的”像素:
filtIm = roifilt2(distIm, distIm<0, @medfilt2);
Run Code Online (Sandbox Code Playgroud)
看起来还不错吗?但请注意:如果您有大面积的负像素区域,那么效果将不那么理想,因为该邻域的中值仍然为负。
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |