opencv(Python/c++):滤波(方框滤波,均值滤波,高斯滤波,中值滤波,双边滤波) 心已赠人 2022-03-10 06:42 356阅读 0赞 Python中的滤波体现在cameo项目,到时候再移植一下。 #### 什么是图像滤波? #### 图像滤波,是指保留图像细节特征的条件下对目标图像的噪声进行抑制,称之为图像**平滑化**或者**滤波** 滤波分为线性滤波和非线性滤波: * **线性滤波**:方框滤波,均值滤波,高斯滤波 * **非线性滤波**:中值滤波(能够去除脉冲噪声,**椒盐噪声**同时又能够保留图像的边缘细节),双边滤波(可以做边缘保存) 其中高斯**低通**就是**模糊**,**高通**就是**锐化** 正态分布就是高斯分布。 通常在滤波的过程中,很重要的概念是“**核”** 。 ksize也就是内核的大小 ### c++代码 ### #### 1)线性滤波 #### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjc1NTM4NA_size_16_color_FFFFFF_t_70] **特别注意:高斯滤波的size必须为正数和奇数** 线性滤波c++代码 #include <iostream> #include <opencv/cv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; //主函数 int main(void) { //读取原始图像 Mat srcImage=imread("/home/liuxin/桌面/opencv/dog.jpeg"); imshow("original",srcImage); //进行滤波 Mat boxfilter,meanFilter,gaussFilter; boxFilter(srcImage,boxfilter,-1,Size(6,6));//方框滤波;depth=-1,表示和原图像一致 blur(srcImage,meanFilter,Size(6,6));//均值滤波 GaussianBlur(srcImage,gaussFilter,Size(5,5),0,0);//高斯滤波的size必须为正数和奇数 //显示结果 imshow("boxfilter",boxfilter); imshow("meanFilter",meanFilter); imshow("gaussFilter",gaussFilter); while(1) { int key=cvWaitKey(10); if (key==27) { break; } } return(0); } #### 2)非线性滤波 #### 效果图 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjc1NTM4NA_size_16_color_FFFFFF_t_70 1],注:最左边为双边滤波,中间为中值滤波,最右边为原图 medianblur中的ksize必须为大于1的奇数 非线性滤波c++代码 #include <iostream> #include <opencv/cv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; //主函数 int main(void) { //读取原始图像 Mat srcImage=imread("/home/liuxin/桌面/opencv/dog.jpeg"); imshow("original",srcImage); //进行滤波 Mat mediafilter,bilateralfilter,gaussFilter; medianBlur(srcImage,mediafilter,7);//中值滤波 bilateralFilter(srcImage,bilateralfilter,25,25*2,25/2);//双边滤波 //显示结果 imshow("mediafilter",mediafilter); imshow("bilateralfilter",bilateralfilter); while(1) { int key=cvWaitKey(10); if (key==27) { break; } } return(0); } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjc1NTM4NA_size_16_color_FFFFFF_t_70]: /images/20220310/d1c010bea8e54dec9bcc9109a34e8c13.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjc1NTM4NA_size_16_color_FFFFFF_t_70 1]: /images/20220310/67c1871eb8b443f699a67fb5e6bb432f.png
还没有评论,来说两句吧...