原创文章,欢迎转载,转载请注明出处

首先什么是图像形态学?额,这个抄下百度到的答案。
基本思想:
    用具有一定形态的结构元素去度量和提取图像中的对应形状已达到对图像分析和识别的目的,形态学图像处理表现为一种领域运算方式(这个和前面的模糊运算是一样的运算方式),效果取决于结构元素(就是前面smooth里面的核)的大小,内容以及逻辑运算的性质。
看了这些定义是不是很晕,对很晕。。。我比较关心的是它的用途和怎么计算。
    用途是:简化图像数据,保持他们基本的形状特性,并出去不相干的结构。
    基本运算包括:二值腐蚀和膨胀、二值开闭运算。其实开运算就是先腐蚀再膨胀,闭运算就是先膨胀再腐蚀。
    具体可以参看:http://wenku.baidu.com/link?url=CerKo-2R4zjP8RrmAmIkZ5YnQcJWbew0TNYBgBUnXd0NZ1djhN6nP6DXxU_b4fE1ITT4dsXB1tl3-3RTZNGcd0KGge89Ms72clAPq5Oj0ae
   简单的说,膨胀就是在选定的核下计算像素的最大数值,腐蚀和膨胀是相反的,就是在选定的核下计算像素的最小值。
    可以通过下图来看得形象写,数学渣表示只会看这种图
膨胀示意图如下:

腐蚀示意图如下:

后面我们的运算全部用默认的3*3的核,数值全为1,如上图所示的核。

那他们主要用来干嘛呢?效果又怎样呢?这个我们先进行下运算,然后把结果现实出来再说。
   先准备素材,准备两幅图片,两幅图片的拍摄位置略有不同,然后我们将他们相减再求绝对值,就可以看到大致轮廓了,如果是拍摄位置完全相同的图像,相减再求绝对值就是全黑了。

下面左边为其中一张原图,右边为相减再求绝对值后的图,记为diff图。

另外一张原图就没放上,他们看上去一样,指示拍摄位置稍有不同,上面已经讲过了。
后面我们在diff图的基础上进行膨胀、腐蚀、开和闭运算。

运算结果如下:
从左到右从上到下依次为:  腐蚀(erode)                                     膨胀(dilate)
                                          开运算(先腐蚀再膨胀 cleandiff)        闭运算(先膨胀再腐蚀 dirtydiff)

效果已经看到了,现在可以总结下这些运算的作用了。
闭运算可以使物体的轮廓线变得光滑,闭运算具有磨光物体内边界的作用,而开运算具有磨光图像边界的作用。
说起来还是有点绕口,不知道是用来干嘛的?我们百度下来个总结:
开操作作用:
  使轮廓平滑,抑制物体边界的小离散点或尖峰,用来消除小物体、在纤细点出分离物体、平滑较大物体边界的同时并不明显改变其面积。
闭操作的总用:

  用来填充物体内细小空洞、连接临近物体、平滑其边界的同时并不明显改变其面积。
 感觉上面的图看起来和结论比起来不是那么的明显对应啊。。因为我们不是二值图,如果用二值图的画效果就会和结论比较对应了。哈

OpenCV学习 7:图像形态学:腐蚀、膨胀的更多相关文章

  1. opencv中的图像形态学——腐蚀膨胀

    腐蚀膨胀是图像形态学比较常见的处理,腐蚀一般可以用来消除噪点,分割出独立的图像元素等. 一般腐蚀操作对二值图进行处理,腐蚀操作如下图,中心位置的像素点是否与周围领域的像素点颜色一样(即是否是白色点,即 ...

  2. OpenCV学习(10) 图像的腐蚀与膨胀(1)

    建议大家看看网络视频教程:http://www.opencvchina.com/thread-886-1-1.html    腐蚀与膨胀都是针对灰度图的形态学操作,比如下面的一副16*16的灰度图. ...

  3. OpenCV学习笔记——图像的腐蚀与膨胀

    顺便又复习了一下cvcopy如何进行图像拼接(最近觉得打开多幅图像分别看不如缩小掉放拼接到一幅图像上对比来的好) 首先把拼接的目标图像设置兴趣区域ROI,比如我有一个total,要把a.b.c分别从左 ...

  4. OpenCV学习(12) 图像的腐蚀与膨胀(3)

    通过使用不同的结构元素来进行膨胀腐蚀操作,可以检测图像中的角点,下面就一步一步看这个算法如果实现角点检测. 原图像: 首先我们创建四个结构元素 先用十字结构元素对原图像进行膨胀操作,得到下面的图像 再 ...

  5. OpenCV学习(11) 图像的腐蚀与膨胀(2)

    先对一副灰度图像进行腐蚀操作,然后在腐蚀后的图像上再进行膨胀操作,我们定义这个操作为开操作. 先对一副图像进行膨胀操作,然后在膨胀后的图像上再进行腐蚀操作,我们定义这个操作为闭操作.       开操 ...

  6. OpenCV中的图像形态学转换

    两个基本的形态学操作是腐蚀和膨胀.他们的变化构成了开运算,闭运算,梯度等.下面以这张图为例 1.腐蚀 这个操作会把前景物体的边界腐蚀掉. import cv2 import numpy as np i ...

  7. OpenCV学习笔记(9)——形态学转换

    不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等 形态学操作是根据图像形状进行的简单操作.一般情况下对二值化图像进行操作.需要的参数有两个,一个是原始图像,第二个被称为结构化元素或核,它是用来决定操 ...

  8. 机器学习进阶-图像形态学操作-膨胀操作 1.cv2.dilate(进行膨胀操作)

    1.cv2.dilate(src, kernel, iteration) 参数说明: src表示输入的图片, kernel表示方框的大小, iteration表示迭代的次数 膨胀操作原理:存在一个ke ...

  9. opencv学习笔记-图像对比度、亮度调节

    在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...

  10. opencv学习笔记-图像叠加、混合

    在图像处理中,目标区域定义为感兴趣区域ROI(region of Interest),这是后期图像处理的基础,在获取ROI后,进行一些列的处理.ROI区域在Opencv中就是Rect,先构建Rect, ...

随机推荐

  1. Unicode解码、URL编码/解码

    + (NSString *) stringByReplaceUnicode:(NSString *)string { NSMutableString *convertedString = [strin ...

  2. 安装gVim

    从Vim官网下载其安装包,安装并首次运行后,开启控制台并执行如下命令: %HOMEDRIVE% cd %HOMEPATH% mkdir vimfiles cd vimfiles mkdir backu ...

  3. Ajax表单提交及后台处理简单应用

    首先先说下表单提交吧,要提交表单那么就得先收集表单数据(至于验证这个我就不说了,要说留下下次吧),有了jquery取个html的值还是简单$("xxid").val()等就完了,但 ...

  4. requirejs + vue 项目搭建2

    上篇是年后的项目搭建的,时间比较仓促,感觉有点low 1.gulp-vue 文件对公用js的有依赖,以后别的同事拿去搭其他项目,估计会被喷 2.不支持vue-loader一样写模版语言和es6语法 最 ...

  5. js 概念(构造函数)

    所有关于类.对象的语言里面,都有构造函数的概念,其实构造函数,就是在创建这个对象或者类的实例时候自动调用的函数,一般的语言都是new创建,那么new的参数就传递给构造函数.

  6. 论山寨手机与Android联姻 【2】手机OS成为核心

    手机凭借通话和短信这两项基本功能,积累了用户,开拓了市场.但是用户的需求是永无止境的,对于手机制造商来说,紧跟用户需求,拓展手机功能,是机会也是挑战. 1988年第一款数码相机,在日本上市.数码相机的 ...

  7. Delphi 全面控制Windows任务栏

    核心提示:使用Windows95/NT/98操作系统的用户知道:Windows正常启动后,在电脑屏幕下方出现一块 任务栏. 使用Windows95/NT/98操作系统的用户知道:Windows正常启动 ...

  8. android 的线程模型和AsyncTask

            android 的线程模型:当一个 android 的应用运行后,就会有一个 UI 的 main 线程启动 , 这是一个非常重要的线程,它负责把事件分派到相应的控件,其中就包括屏幕绘图 ...

  9. C#中dynamic的正确用法【转】

    dynamic是FrameWork4.0的新特性.dynamic的出现让C#具有了弱语言类型的特性.编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性.比如,即使你 ...

  10. CodeForces463C Gargari and Bishops(贪心)

    CodeForces463C Gargari and Bishops(贪心) CodeForces463C 题目大意:  在国际象棋的棋盘上放两个主教,这个两个主教不能攻击到同一个格子,最后的得分是这 ...