




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OpenCv中几种常见的滤波器一. 滤波器的作用1. 问题:数字图像信号的频率分布?回答:信号或者图像的能量大部分在中低频段,少部分有用信号在高频段被噪声淹没(噪声都是高频信号)。因此设计滤波器能降低高频成分幅度就能减弱噪声影响。2.问题:为什么要进行图像滤波?回答:1.适应图像处理要求,消除图像数字化时所混入的噪声。 2.提取对象的特征作为图像识别的特征模式(没遇到过!)3.问题:如何理解滤波器?回答:把滤波器想象成一个包含加权系数的窗口,当使用滤波器平滑处理图像时,相当于把窗口放到图像上,透过窗口看图像。4.问题:滤波器实现的结果是怎么样的?回答:对图像做平滑或滤波后图像变得更模糊。二 滤波器分类2.1线性滤波器1. 低通滤波器:允许低频率通过2. 高通滤波器:允许高频率通过3. 带通滤波器:允许一定范围频率通过4. 带阻滤波器:阻止一定范围频率通过5. 全通滤波器:允许所有频率通过,只是改变相位2.1.1 Opencv中提供的线性滤波函数1.方框滤波:boxFilter函数函数原型:void boxFilter (InputArray src,OutputArray dst,int ddepth,Size ksize,Pointanchor=Point(-1,-1),boolnormalize=true,int borderType=BORDER_DEFAULT)参数说明: InputArray,输入图像src。 OutputArray ,输出图像dst。 Int类型ddepth,输出图像深度,-1代表使用原图src深度。 Size类型ksize,内核大小,一般用Size(w,h),w为宽度,h为深度。 Point类型anchor,被平滑的点,表示取内核中心,默认值Point(-1,-1)。 Bool类型normalize,标识符,表示内核是否被归一化。默认值为true。 Int类型boderType,推断图像外部像素的某种边界模式。默认值BORDER_DEFAULT。2. 均值滤波:blur函数函数原型:void blur(InputArray src,OutputArray dst,int ddepth,Size ksize,Pointanchor=Point(-1,-1), int borderType=BORDER_DEFAULT)参数说明:InputArray,输入图像src。 OutputArray ,输出图像dst。 Int类型ddepth,输出图像深度,-1代表使用原图src深度。 Size类型ksize,内核大小,一般用Size(w,h),w为宽度,h为深度。 Point类型anchor,被平滑的点,表示取内核中心,默认值Point(-1,-1)。 Int类型boderType,推断图像外部像素的某种边界模式。默认值BORDER_DEFAULT。 3. 高斯滤波:GaussianBlur函数函数原型:void GaussianBlur(InputArray src,OutputArray dst, Size ksize,double sigmaX,double sigmaY=0, int borderType=BORDER_DEFAULT)参数说明:InputArray,输入图像src。 OutputArray ,输出图像dst. Size类型ksize,内核大小,一般用Size(w,h),w为宽度,h为深度。 double类型的sigmaX,表示高斯核函数在X方向上的标准偏差。 Double类型的sigmaY,表示高斯核函数在Y方向上的标准偏差, sigmaY有默认值为0.如果sigmaX和sigmaY都为0,由内核的宽高计算出来。 Int类型boderType,推断图像外部像素的某种边界模式。默认值BORDER_DEFAULT。4. 补充:boxblur函数中的参数normalize,当normalize=true时为均值滤波。言外之意,均值滤波是方框滤波归一化后的特殊情况。 2.1.2 线性滤波器的计算方法图注:邻域滤波(卷积):左边图像与中间图像的卷积产生右边图像。目标图像中蓝色标记的像素是利用原图像中红色标记的像素计算得到的。线性滤波处理的输出像素值是输入像素值的加权和 :其中的加权和为 ,我们称其为“核”,滤波器的加权系数,即滤波器的“滤波系数”。上面的式子可以简单写作:其中f表示输入像素值,h表示加权系数“核“,g表示输出像素值。举例说明:对待处理的当前像素,选择一个内核大小,该内核为其邻近的若干个像素组成,用内核的均值来替代原像素的值的方法。取出图像中的几个像素点,并标注需要处理的像素点F(X,Y)1234F(X,Y)5 678图注:18为(x,y)的邻近像素设置内核大小通过均值滤波器后其计算为:F(X,Y)= (f(x-1,y-1)+f(x,y-1)+f(x+1,y-1)+f(x-1,y)+f(x,y)+f(x+1,y)+f(x-1,y+1)+f(x,y+1)+f(x+1,y+1)/9设置内核大小通过方框滤波器后其计算为:F(X,Y)= f(x-1,y-1)+f(x,y-1)+f(x+1,y-1)+f(x-1,y)+f(x,y)+f(x+1,y)+f(x-1,y+1)+f(x,y+1)+f(x+1,y+1)通过高斯滤波器利用公式:代入x,y 值可以算出F(X,Y)的值。2.2 非线性滤波器1.中值滤波:像素点 邻域灰度值的中值代替该像素点的灰度值。2.双边滤波:基于空间分布的高斯滤波函数,比高斯滤波多一个sigma-d的高斯方差。2.2.1 Opencv中提供的非线性滤波函数1.中值滤波:medianBlur函数函数原型:void medianBlur(InputArray src,OutputArray dst,int ksize)参数说明:InputArray,输入图像src。 OutputArray ,输出图像dst. int类型ksize,孔径的线性尺寸,这个参数必须是大于1的奇数2.双边滤波:bilateralFilter(InputArray src,OutputArray dst, int d, double sigmaColor,double sigmaSpace, int borderType=BORDER_DEFAULT)参数说明:InputArray,输入图像src。 OutputArray ,输出图像dst. Int类型的d,表示过滤过程每个像素邻域的直径 double类型的sigmaColor,表示颜色滤波器的sigma值 Double类型的sigmaSpace,表示坐标空间的sigma值 Int类型boderType,推断图像外部像素的某种边界模式。默认值BORDER_DEFAULT。)三 几种滤波器的使用本示例在opencv3.0+VS2012运行环境下测试,不管利用opencv或者VS什么版本其实程序都是一样的。只不过在包含头文件时注意位置就好了。#includeusing namespace cv;using namespace std;#define WINDOWS_NAME1 【原图】#define WINDOWS_NAME2 【方框滤波】#define WINDOWS_NAME3 【均值滤波】#define WINDOWS_NAME4 【高斯滤波】#define WINDOWS_NAME5 【中值滤波】#define WINDOWS_NAME6 【双边滤波】int main()system(color 5E);/把dos框背景颜色改变,只是看看效果,默认dos框背景为黑色。Mat srcImage=imread(D:ProgramFiles图片Example4.jpg);/读入原图if (!srcImage.data)cout读取srcImage错误!endl;/用到了输入输出流,头文件要加“using namespace std;”return false;/创建5个Mat矩阵用来存放滤波数据,利用clone函数使其大小和原图大小相同 Mat box_Image=srcImage.clone();Mat blur_Image=srcImage.clone();Mat gaussian_Image=srcImage.clone();Mat median_Image=srcImage.clone();Mat bilateral_Image=srcImage.clone();/=显示原图=namedWindow(WINDOWS_NAME1,1);imshow(WINDOWS_NAME1,srcImage);/=方框滤波=namedWindow(WINDOWS_NAME2,1);boxFilter(srcImage,box_Image,-1,Size(3,3),Point(-1,-1),false,BORDER_DEFAULT);imshow(WINDOWS_NAME2,box_Image);/=均值滤波=namedWindow(WINDOWS_NAME3,1);blur(srcImage,blur_Image,Size(3,3),Point(-1,-1),BORDER_DEFAULT);imshow(WINDOWS_NAME3,blur_Image);/=高斯滤波=namedWindow(WINDOWS_NAME4,1);GaussianBlur(srcImage,gaussian_Image,Size(3,3),0,0,BORDER_DEFAULT);imshow(WINDOWS_NAME4,gaussian_Image);/=中值滤波=namedWindow(WINDOWS_NAME5,1);medianBlur(srcImage,me
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-河北-河北房管员一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-江西-江西环境监测工五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江西-江西垃圾清扫与处理工五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏电工三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-新疆-新疆计算机操作员一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西水利机械运行维护工四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东计算机操作员四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东水工闸门运行工二级(技师)历年参考题库含答案解析
- 烹饪肉基础知识培训课件
- 2025年中级卫生职称-主管护师-社区护理(中级)代码:373历年参考题库典型考点含答案解析
- 蝴蝶的色彩课件
- 2025年秋季新学期教学工作会议上校长讲话:扎根课堂、走近学生、做实教学-每一节课都值得全力以赴
- 2025年度船舶抵押贷款合同范本:航运融资与风险规避手册
- 2025年《药品管理法》试题(附答案)
- 2025年党建知识应知应会测试题库(附答案)
- 2025年新人教版小升初分班考试数学试卷
- 2025劳动合同范本【模板下载】
- 以课程标准为导向:上海市初中信息科技教学设计的探索与实践
- 2025年公共基础知识考试试题(附完整答案)
- 2025年海南省公安厅招聘警务辅助人员考试试题(含答案)
- 北川羌族自治县农业农村局北川羌族自治县测雨雷达建设项目环评报告
评论
0/150
提交评论