1.相关概念
中值模糊:统计排序滤波器,对椒盐噪声有很好的抑制作用。将内核中的像素值从小到大排列,取中间值代替锚点值。缺点是:均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重。
双边模糊:双边模糊 – 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变。
2.相关API介绍
中值模糊:medianBlur(Mat src, Mat dest, ksize):这个为输入图像、输出图像、内核定义。
双边模糊:bilateralFilter(src, dest, d=15, 150, 3)
第一个参数:输入图像
第二个参数:输出图像
第三个参数:15 为计算的半径,半径之内的像数都会被纳入计算,如果提供-1 则根据sigma space参数取值
150 sigma color 决定多少差值之内的像素会被计算
3为sigma space 如果d的值大于0则声明无效,否则根据它来计算d值,中值模糊的ksize大小必须是大于1而且必须是奇数
3.代码实现
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;
//中值滤波与双边滤波(美颜常用基本)
int main()
{
Mat src, dst1, dst2,dst3;
src = imread("D:/demo.jpg");
imshow("源图像", src);
medianBlur(src, dst1, 3);//中值滤波
bilateralFilter(src, dst2, 15, 150, 3);//双边滤波
//继续操作
Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);//定义掩膜
filter2D(dst2, dst3, src.depth(), kernel);
imshow("中值滤波后图像", dst1);
imshow("双边滤波后图像", dst2);
imshow("最终图像", dst3);
waitKey(0);
}
4.运行结果