VB图像处理,(七)一种邻近均值滤波器的算法介绍(去尘,去噪音)

本文介绍了如何优化模糊算法以专门用于去除图像中的点和线状噪音。通过比较当前像素与周围像素,选取差异最小的K个像素的平均值来替换当前像素,从而有效地去除噪音点。算法适用于不同范围,但计算量较大,需要进行优化。文章提供了具体的VB代码实现,并展示了处理前后的图像效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像噪音来源众多,视图像来源而定:扫描仪,数码相机,摄像头等等,均会产生图像噪音。
而图像噪音又可以分为点,线,背景波纹等等。
这里简单介绍一下点和线类型的噪音去除算法。

看过我的系列的前几篇文章的朋友,可以发现“模糊”算法也具有去除噪音的效果,
这是因为模糊本身就是一个高频滤波器,但是由于这个模糊算法并非专门为去除噪音而设计,
如果你把它用来去除噪音,那么估计效果是惨不忍睹了。
(噪音点被平均分摊到周围的区域中去了,淡是淡了,范围却变大了)

现在我们要优化一下模糊算法,使之更适用于去除图像噪音,而又不会不分好坏,对正常图像影响太大。

首先,我们来看一下噪音点的形态。一般由于输入设备上的灰尘或划痕(扫描仪,数码相机),造成输入的
数码图像上带上了细微的杂色点或细线。
这些杂点或细线的宽度比较小,一般在1到数个象素之间。
(要是很大的斑点,估计大家就会去清理输入设备重新输入了)
并且,这些杂点的颜色(亮度)和正常图片的差异痕大。

因此我们可以针对每一个象素,取一个范围,比如它周围的最相邻的8个或24(或更多)像素 *注1
在这个范围内的所有象素和当前象素做一个比较,取差异最小的K个象素,用这几个象素的平均值来代替当前象素。

(实际的做法是还要设置一个阀值,当这K个像素平均值和当前像素的差异超过这个阀值的时候,当前像素才会被替换)
这样就有两种情况会发生:
1:当前象素是噪音点:
如果当前象素是噪音点,那么即使是和它的差值最接近的K个象素也都是正常象素,他们的平均值也依然在正常范围内。
因此替代之后,当前的噪音点就被正常点给替代了,也就是说噪音点被去除了。
2:当前点是正常点:
如果当前点是正常点,那么和它差异最小的K个点的平均值代替当前点之后,新点和原来点的差异很小,图像基本不变。
(这里有个假定前提:自然图片,包括照片或摄像输入的图片的主体是色彩平滑的,突变点很少)
因此如果图像本身是一个有很多不平滑的突变点构成的话,那么这些突变点也会被认为是噪音点而被去除。
下面举例子:范围为1,一共9个点,取最接近的点数5点:
(当前点:6)
3  4  5     
6  5 =》最接近的5个点为4,5,5,7,8
3  7  8
均值=(4+5+5+7+8)/5=5.8=>6(四舍五入会比较精确点,当然也可以直接取整=5)
运算后结果为:
3  4  5           

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值