首页 > 代码库 > 高效均值滤波(加入对边界的处理)
高效均值滤波(加入对边界的处理)
之前在51CTO博客中http://qianqing13579.blog.51cto.com/5255432/1590213,写过均值滤波,但是没有加入对边界的处理,昨天晚上,完成了对边界的处理,代码贴出来,跟大家分享交流一下,没有做太多的优化
void Blur(const Mat &image_Src, Mat &image_Dst, Size size_Aperture) { /////////////step 1.重新分配图像(如果需要)////////////////////////////// //新图像的大小 int width_Dst=image_Src.cols; int height_Dst=image_Src.rows; image_Dst.create(Size(width_Dst,height_Dst),CV_8UC1);//如果重新分配,之前的空间会扔掉 //////////////////////////////step 2.创建一副新图像(对源图像加以扩充)//////////////////////////////////////////// //新图像大小 int width_Extend=size_Aperture.width>>1; int height_Extend=size_Aperture.height>>1; int width_New=width_Dst+2*width_Extend;//宽度左右各扩充width_Extend int height_New=height_Dst+2*height_Extend;//高度上下各扩充height_Extend //创建新图像 Mat image_New(Size(width_New,height_New),CV_8UC1,Scalar(0)); //拷贝源图像到新图像 int widthStep_New=image_New.cols;//新图像的步长 int widthStep_Src=http://www.mamicode.com/image_Src.cols;//源图像的步长>算法运行之前,需要配置一下OpenCV,算法核心与OpenCV没有太多关联
与OpenCV中的blur函数对比了一下
测试环境:VS2008 Release版本,Lena.bmp,迭代16次,窗口大小:Size(5,3)
平均运行时间,OpenCV为3ms,上面的算法为6ms,慢了整整一倍啊!后面还需要更多的优化工作。
运行结果图:
其中OpenCV的结果图与上面的算法结果图基本一致,我用PS将两幅图像做了减法,两幅图像基本一样
高效均值滤波(加入对边界的处理)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。