5基于opencv的非线性滤波(中值滤波_双边滤波)
2017-11-17 14:39
267 查看
非线性滤波:中值滤波和双边滤波
一、中值滤波函数medianBlur
1.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage3;
medianBlur(ScrImage, OutImage3, 7); //中值滤波
1.2medianBlur()函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø 7:第三个参数,int类型的ksize,孔径的线性尺寸(aperture linear size),注意这个参数必须是大于1的奇数,比如:3,5,7,9 ...
二、双边滤波函数bilateralFilter
2.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage4;
bilateralFilter(ScrImage, OutImage4, 10, 10 * 2, 10 / 2);
//双边滤波
2.2函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø 10:第三个参数,int类型的d,表示在过滤过程中每个像素邻域的直径。如果这个值我们设其为非正数,那么OpenCV会从第五个参数sigmaSpace来计算出它来。(越小越好)
Ø 10 * 2:第四个参数,double类型的sigmaColor,颜色空间滤波器的sigma值。这个参数的值越大,就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
Ø 10 / 2:第五个参数,double类型的sigmaSpace坐标空间中滤波器的sigma值,坐标空间的标注方差。他的数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当d>0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。
三、完整程序代码
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <cstdio>
using namespacestd;
using namespacecv;
int main()
{
Mat ScrImage, ScrImgaeCopy1, OutImage, OutImage1, OutImage2,OutImage3, OutImage4;
ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
namedWindow("【原图】");
imshow("【原图】", ScrImage);
medianBlur(ScrImage,OutImage3, 7);
//中值滤波
bilateralFilter(ScrImage,OutImage4, 10, 10 * 2, 10 / 2);
//双边滤波
namedWindow("【效果图medianBlur】");
imshow("【效果图medianBlur】",OutImage3);
namedWindow("【效果图bilateralFilter】");
imshow("【效果图bilateralFilter】",OutImage4);
waitKey(0);
return NULL;
}
参考内容:
http://www.cnblogs.com/mq0036/p/5902104.html
一、中值滤波函数medianBlur
1.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage3;
medianBlur(ScrImage, OutImage3, 7); //中值滤波
1.2medianBlur()函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø 7:第三个参数,int类型的ksize,孔径的线性尺寸(aperture linear size),注意这个参数必须是大于1的奇数,比如:3,5,7,9 ...
二、双边滤波函数bilateralFilter
2.1示例
MatScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
MatOutImage4;
bilateralFilter(ScrImage, OutImage4, 10, 10 * 2, 10 / 2);
//双边滤波
2.2函数各个参数详解
Ø ScrImage:输入图像
Ø OutImage3:输出图像
Ø 10:第三个参数,int类型的d,表示在过滤过程中每个像素邻域的直径。如果这个值我们设其为非正数,那么OpenCV会从第五个参数sigmaSpace来计算出它来。(越小越好)
Ø 10 * 2:第四个参数,double类型的sigmaColor,颜色空间滤波器的sigma值。这个参数的值越大,就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
Ø 10 / 2:第五个参数,double类型的sigmaSpace坐标空间中滤波器的sigma值,坐标空间的标注方差。他的数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当d>0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。
三、完整程序代码
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <cstdio>
using namespacestd;
using namespacecv;
int main()
{
Mat ScrImage, ScrImgaeCopy1, OutImage, OutImage1, OutImage2,OutImage3, OutImage4;
ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");//读入图像
namedWindow("【原图】");
imshow("【原图】", ScrImage);
medianBlur(ScrImage,OutImage3, 7);
//中值滤波
bilateralFilter(ScrImage,OutImage4, 10, 10 * 2, 10 / 2);
//双边滤波
namedWindow("【效果图medianBlur】");
imshow("【效果图medianBlur】",OutImage3);
namedWindow("【效果图bilateralFilter】");
imshow("【效果图bilateralFilter】",OutImage4);
waitKey(0);
return NULL;
}
参考内容:
http://www.cnblogs.com/mq0036/p/5902104.html
相关文章推荐
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- 图像平滑技术之核算子、均值滤波、中值滤波、高斯滤波、双边滤滤、导向滤波的原理概要及OpenCV代码实现
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨。
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨。
- 【OpenCV3图像处理】非线性滤波:中值滤波、双边滤波、引导滤波
- [转]【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- OpenCV学习十:图片的模糊(双边滤波、中值滤波、高斯滤波等等)以及锐化算子
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- OpenCV之九 非线性滤波专场:中值滤波、双边滤波
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨
- iOS-Opencv 基础学习五 ----中值滤波(medianBlur)和 双边滤波(bilateralFilter)
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波
- python3 利用opencv 添加中值滤波,均值滤波,高斯滤波,高斯双边滤波
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨。
- 学习【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波---思维导图笔记
- 基于OpenCV底层实现均值滤波,中值滤波和高斯滤波
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波