opencv——均值/中值滤波器去噪

本文介绍了如何使用OpenCV进行图像去噪,通过添加椒盐噪声来模拟图像污染,然后应用均值滤波和中值滤波进行处理。实验比较了两种方法对图像边缘的影响,均值滤波采用3x3窗口计算平均值,中值滤波则选取灰度值的中位数,以减少噪声同时保护边缘。
摘要由CSDN通过智能技术生成

实验内容及实验原理:

1.用均值滤波器(即邻域平均法)去除图像中的噪声;

2.用中值滤波器去除图像中的噪声

3.比较两种方法的处理结果

实验步骤:

用原始图像lena.bmp或cameraman.bmp加产生的3%椒盐噪声图像合成一幅有噪声的图像并显示;

1.用均值滤波器去除图像中的噪声(选3x3窗口):以当前像素点为中心,求窗口内所有灰度值的和,以其平均值作为中心像素新的灰度值

2. 用中值滤波器去除图像中的噪声(选3x3窗口做中值滤波);以当前像素点为中心,求窗口中所有像素点的灰度值的中值,以中值作为中心像素点的值

3.将两种处理方法的结果与原图比较,注意两种处理方法对边缘的影响。

添加椒盐噪声

以3%的几率产生随机为0/255的灰度值覆盖原来的灰度值

   for (int i = 0; i <src->height; i++){
        for (int j = 0; j <src->width; j++){
            CvScalar s = cvGet2D(src, i,j);
            srand(seed++);
            if (rand() % 100 <3){//3%的几率覆盖
                srand(seed++);
                s.val[0]= rand() % 2 * 255;//随机是0还是255
            }
            cvSet2D(dst,i, j, s);
        }
    }

添加后:

均值滤波

计算当前像素周围的九个像素点的灰度值和,以其平均值作为当前像素的灰度值。如果是边缘的像素点就求有限的几个像素灰度值的平均值

for (int i = 0;i < dst->height; i++){
     for (int j = 0; j < dst->width
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值