高血压专题网,内容丰富有趣,生活中的好帮手!
高血压专题网 > 【OpenCv】图像模糊(均值模糊 高斯模糊 中值模糊 双边模糊)

【OpenCv】图像模糊(均值模糊 高斯模糊 中值模糊 双边模糊)

时间:2023-04-16 06:23:45

相关推荐

【OpenCv】图像模糊(均值模糊 高斯模糊 中值模糊 双边模糊)

原理:

图像模糊又称为图像平滑,是图像处理中最简单和常用的操作之一,使用该操作就是为了给图像降低噪音。图像模糊处理包括:高斯模糊、均值滤波、中值滤波、双边滤波等。模糊滤波其实就是图像的卷积计算,通常这些卷积算子都是线性计算,所以又叫线性滤波。

链接:【OpenCv】图像模糊处理(滤波)

1.均值滤波:

将黄色卷积核覆盖的9个像素值求平均值代替红色方框位置的像素值。

blur(src,dst,size(x,y),point(-1,-1));

Size:(用于平滑操作的核的大小)

Size(1, 15); //y方向模糊运动

point默认参数值为(-1,-1)代表将均值赋给卷积核的中间位置。

2.高斯滤波:

参考:高斯滤波器详解,三种模糊操作

//均值滤波,高斯滤波(避免本身很大,旁边很小,然后就总体变小;正太分布,权重分配)#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(int argc, char** argv){Mat src, src2, dst;src = imread("D:/PT/stone.jpg");if (!src.data) {printf("could not load image...\n");return -1;}double scale = 0.5;Size dsize = Size(src.cols * scale, src.rows * scale);//Mat src2 = Mat(dsize, CV_32S);resize(src, src2, dsize);char input[] = "input image";char output[] = "output image";namedWindow(input, CV_WINDOW_AUTOSIZE);namedWindow(output, CV_WINDOW_AUTOSIZE);namedWindow("output_Gaussian", CV_WINDOW_AUTOSIZE);imshow(input, src2);blur(src2, dst, Size(5, 5), Point(-1, -1));//Size(1, 15);//y方向模糊运动//Size:(用于平滑操作的核的大小)//Point:(锚点,默认值为Point(-1,-1)表示锚点在核的中心)imshow(output, dst);Mat dst2;GaussianBlur(src2, dst2, Size(5, 5), 11, 11);imshow("output_Gaussian", dst2);waitKey(0);return 0;}

3.中值滤波:

取中位数;

对去椒盐噪声有很好的效果!为什么可以去除椒盐噪声呢?因为椒盐噪声像素值要么很小为0,要么很大为255,而取中间值话,就会用替代这些,从而给图像去噪点。

medianBlur(src, dst, 5);

中值模糊的ksize大小必须是大于1而且必须是奇数。

4.双边滤波:

链接:OpenCV双边滤波详解及实代码实现

bilateralFilter(dst, dst2, 15, 100, 3);15 –计算的半径,半径之内的像数都会被纳入计算,如果提供-1 则根据sigma space参数取值-150 – sigma color 决定多少差值之内的像素会被计算3 – sigma space 如果d的值大于0则声明无效,否则根据它来计算d值

:因为之前一直要缩放图片,所以很不方便,索性写到这里吧:

double scale = 0.5;Size dsize = Size(src.cols * scale, src.rows * scale);//Mat src2 = Mat(dsize, CV_32S);resize(src, dst, dsize);

需要注意的是缩小后再发放大会变模糊:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。