OpenCV图像处理篇之腐蚀与膨胀.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenCV图像处理篇之腐蚀与膨胀

OpenCV图像处理篇之腐蚀与膨胀腐蚀与膨胀腐蚀和膨胀是图像的形态学处理中最基本的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算。腐蚀和膨胀的应用非常广泛,而且效果还很好:腐蚀可以分割(isolate)独立的图像元素,膨胀用于连接(join)相邻的元素,这也是腐蚀和膨胀后图像最直观的展现去噪:通过低尺寸结构元素的腐蚀操作很容易去掉分散的椒盐噪声点图像轮廓提取:腐蚀操作图像分割等等...(在文后给出一则简单实用膨胀操作提取车牌数字区域的例子)结构元素是形态学操作中最重要的概念,?如上图,B为结构元素。腐蚀操作描述为:扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作:如果都为1,结果图像的该像素为1,否则为0。膨胀操作描述为:扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作:如果都为0,结果图像的该像素为0,否则为1。以上都是关于二值图像的形态学操作,对于灰度图像:腐蚀操作其中,g(x,y)为腐蚀后的灰度图像,f(x,y)为原灰度图像,B为结构元素。腐蚀运算是由结构元素确定的邻域块中选取图像值与结构元素值的差的最小值。膨胀操作其中,g(x,y)为腐蚀后的灰度图像,f(x,y)为原灰度图像,B为结构元素。膨胀运算是由结构元素确定的邻域块中选取图像值与结构元素值的和的最大值。在灰度图的形态学操作中,一般选择“平摊”的结构元素,即结构元素B的值为0,则上面对灰度图的形态学操作可简化如下:好了,这就是基本的形态学操作——腐蚀和膨胀,下面是使用OpenCV对图像进行腐蚀和膨胀的程序,还是秉承我们一贯的原则:搁下理论,先直观地感觉图像处理算法的效果,实际项目需要时再深入挖掘!程序分析/* * FileName : eroding_and_dilating.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Fri 19 Sep 2014 07:42:12 PM CST * Brief : * * Copyright (C) MICL,USTB */#include cv.h #include highgui.h#include opencv2/imgproc/imgproc.hppusingnamespacestd;usingnamespace cv;#define TYPE_MORPH_RECT (0)#define TYPE_MORPH_CROSS (1)#define TYPE_MORPH_ELLIPSE (2)#define MAX_ELE_TYPE (2)#define MAX_ELE_SIZE (20)Mat src, erode_dst, dilate_dst;constchar *erode_wn = eroding demo;constchar *dilate_wn = dilating demo;int erode_ele_type;int dilate_ele_type;int erode_ele_size;int dilate_ele_size;staticvoid Erosion(int, void *);staticvoid Dilation(int, void *);/* * @brief * @inputs * @outputs * @retval */int main(int argc, char *argv[]){if (argc 2) {coutUsage: ./eroding_and_dilating [file name]endl;return -1; }src = imread(argv[1]);if (!src.data) {coutRead image failure.endl;return -1; }// WindowsnamedWindow(erode_wn, WINDOW_AUTOSIZE);namedWindow(dilate_wn, WINDOW_AUTOSIZE);// Track Bar for ErosioncreateTrackbar(Element Type\n0:Rect\n1:Cross\n2:Ellipse, erode_wn, erode_ele_type, MAX_ELE_TYPE, Erosion); // callback @ErosioncreateTrackbar(Element Size: 2n+1, erode_wn, erode_ele_size, MAX_ELE_SIZE, Ero

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档