我是靠谱客的博主 阔达鸡,最近开发中收集的这篇文章主要介绍计算机视觉攻略 图像滤波笔记3 (中值滤波器),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

中值滤波器(非线性)

中值滤波器对消除椒盐噪声非常有效。中值滤波器把当前像素和它的邻域组成一个集合,然后计算出这个集合的中间值,以此作为当前像素的值(集合中数值经过排序,中间位置的数值就是中间值)。当前像素被中间值代替。
这正是中值滤波器在消除椒盐噪声时如此高效的原因。事实上,如果在某个像素邻域中有一个异常的黑色或白色像素,该像素将无法作为中间值(它是最大值或最小值),因此肯定会被领域的值替换掉。

中值滤波器函数 (#include <opencv2/imgproc/imgproc.hpp>)

void medianBlur(InputArray src, OutputArray dst, int ksize)

在这里插入图片描述

示例程序

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <random>

using namespace std;

void salt(cv::Mat image, int n);

int main(int argc, char** argv) {
    if( argc != 2)
    {
        cerr << "please enter the right numbers of images" << endl;
        return -1;
    }
    cv::Mat image = cv::imread(argv[1]);
    if (image.empty())
    {
        cerr << "don`t get the data of the argv[1]" << endl;
        return -1;
    }
    cv::imshow("The original image", image);
    cv::waitKey(0);
    salt(image, 1000);
    cv::imshow("The salt image",image);
    cv::waitKey(0);
    cv::Mat result;
    cv::medianBlur(image,result, 5);
    cv::imshow("The filter image", result);
    cv::waitKey(0);
    return 0;
}

void salt(cv::Mat image, int n)
{
    std::default_random_engine generator;   //#include <random>
    std::uniform_int_distribution<int>
            randomRow(0, image.rows - 1);
    std::uniform_int_distribution<int>
            randomCol(0, image.cols - 1);

    int i, j;
    for (int k = 0; k < n; k++){
        //随机数生成图形位置
        i = randomCol(generator);
        j = randomRow(generator);
        if(image.type() == CV_8UC1){
            // 灰度图像
            // 单通道8位图像
            image.at<uchar>(j, i) = 255;
        }else if(image.type() == CV_8UC3){
            //彩色图像
            //3通道
            image.at<cv::Vec3b>(j,i)[0] = 255;
            image.at<cv::Vec3b>(j,i)[1] = 255;
            image.at<cv::Vec3b>(j,i)[2] = 255;
        }
    }
}

在这里插入图片描述

最后

以上就是阔达鸡为你收集整理的计算机视觉攻略 图像滤波笔记3 (中值滤波器)的全部内容,希望文章能够帮你解决计算机视觉攻略 图像滤波笔记3 (中值滤波器)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部