中值滤波

作者: 渔父歌 | 来源:发表于2019-04-11 23:30 被阅读0次

中值滤波使用当前像素点和它周围的8个像素点的中值来代替当前点额像素点,这个办法对去除椒盐噪声非常有效。

如果图片中某一块像素的数值如下:
120 130 134
122 123 122
125 146 124

9个数值排序后为:120 122 122 123 124 125 130 134 146
所以使用中值滤波后中间的像素点会替换为 124

中值滤波的 C语言实现:

void medianBlur(Mat img, Mat dst, int ksize) {
    //ksize必须为奇数
    if (ksize % 2 == 0 && (ksize - 1) / 2 - 1 < img.cols && (ksize - 1) / 2 - 1 < img.rows) {
        return;
    }

    //边到中心点的距离
    int offset = (ksize - 1) / 2;
    int* window = new int[ksize * ksize];
    for (int i = 0; i < img.cols; i++) {
        for (int k = 0; k < img.rows; k++) {
            //获取周围的元素
            int count = 0;
            for (int n = i - offset; n < i + offset + 1; n++) {
                if (n < 0 || n >= img.cols) {
                    continue;
                }

                for (int m = k - offset; m < k + offset + 1; m++) {
                    if (m < 0 || m >= img.rows) {
                        continue;
                    }

                    window[count] = int(img.at<uchar>(m, n));
                    count++;
                }
            }
            //排序
            for (int n = 0; n < count - 1; n++) {
                for (int m = n + 1; m < count; m++) {
                    if (window[m] < window[n]) {
                        int t = window[m];
                        window[m] = window[n];
                        window[n] = t;
                    }
                }
            }

            dst.at<uchar>(k, i) = window[count / 2];
        }
    }

    delete[] window;
}

相关文章

  • 数据处理-scipy中值滤波、pandas重采样

    1. scipy中值滤波 使用scipy中的signal.medfilt对数组进行中值滤波。 方法: scipy....

  • 脉搏波数据处理

    采集到的脉搏波数据先进行滤波预处理,滤波处理采用中值滤波。 进行了中值滤波预处理后的脉搏波会相对变得平缓,能抑制随...

  • OpenCV For iOS(六)方框、均值、高斯、中值、双边滤

    本节主要记录OpenCV 两类五种常见的滤波方式: 线性滤波:方框滤波、均值滤波、高斯滤波非线性滤波: 中值滤波、...

  • 中值滤波

    中值滤波使用当前像素点和它周围的8个像素点的中值来代替当前点额像素点,这个办法对去除椒盐噪声非常有效。 如果图片中...

  • 中值滤波

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第7...

  • 中值滤波

  • 7.6 2D卷积

    OpencV提供了多种滤波方式,来实现平滑图像的效果,例如均值滤波、方框滤波、高斯滤波、中值滤波等,大多数滤波方式...

  • 009-Opencv笔记-高斯双边模糊-矩阵掩膜

    中值滤波 中值滤波对椒盐噪声有很好的抑制作用 均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重 ...

  • 56. 中值滤波

    中值滤波步骤: 读取原图信息 读取灰度图 将指定矩形内的灰度值装入一维数组 将9个数排序 取中值 显示中值滤波后的...

  • OpenCV系列七 --- 非线性滤波

    上一篇我们学习了了线性滤波(方框滤波、均值滤波以及高斯滤波),这节呢,我们来学习一下非线性滤波(中值滤波、双边滤波...

网友评论

    本文标题:中值滤波

    本文链接:https://www.haomeiwen.com/subject/qemfwqtx.html