C++——bmp图像+中值滤波

本文介绍了使用C++进行中值滤波图像处理的方法。中值滤波是一种非线性的平滑技术,特别适合消除椒盐噪声。算法包括选择窗口大小,对窗口内像素灰度值冒泡排序,然后用中值替换目标像素灰度值。对于边界处理,作者选择了用内圈像素值填充,以避免边界扭曲。示例展示了原始图像和经过中值滤波处理后的图像效果。
摘要由CSDN通过智能技术生成

1、中值滤波

       中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。

       二维中值滤波算法是:对于一幅图像的象素矩阵,取以目标象素为中心的一个子矩阵窗口,这个窗口可以是3*3 ,5*5 等根据需要选取,对窗口内的象素灰度排序,取中间一个值作为目标象素的新灰度值。

步骤:

1:通过从图像中的某个采样窗口取出奇数个数据进行排序

       在这里,我们选用的排序方法是冒泡排序

2:用排序后的中值取代要处理的数据即可

       一般的,中值滤波对图像的边界用0做扩张,所以对边界可能会出现扭曲。在这里,我对边界进行了填充,用里圈的值来填充外圈的值。若要用0填充外圈,可将imagedatafilter初始化为0:

memset(imagedatafilter,0,linebyte*bmpHeight);
如果这样,那填充的那个循环就可以去掉不要了,具体代码如下:
#include <cstring>
#include <windows.h>
#include"readbmp.h"
#include"savebmp.h"
#include<assert.h>

#define iFilterW 3
#define iFilterH 3


unsigned char GetMedianNum(int 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值