開運算、閉運算(morphologyEx、MORPH_OPEN、MORPH_CLOSE)

這邊介紹開運算和閉運算,這兩種都是侵蝕和膨脹複合而成,開運算是先侵蝕後膨脹,閉運算是先膨脹後侵蝕。

對於集合I和H,假設使用H對I進行開運算,代表H對I進行侵蝕後膨脹,記作:

開運算可以使物體輪廓變得光滑,還能使狹窄的連結斷開,以及消除外觀上的毛刺,但在物體大於結構元素的情況下,開運算與侵蝕並不相同,圖像的輪廓並沒有產生整體的收縮,物體位置也沒有發生任何變化,假如我們對一幅影像重複進行開運算,不會產生任何變化,這點和重複進行侵蝕會加強程度的現象不同。

有兩種方式進行開運算,一種是先呼叫erode()將影像進行侵蝕,接著將侵蝕後的圖,當作dilate()膨脹運算的原始圖,最後的輸出圖即為結果,另外一種方式是使用morphologyEx()函式,將其中某個參數輸入MORPH_OPEN。

OpenCV開運算

morphologyEx(const Mat &src, Mat &dst, int op, Mat kernel, Point anchor=Point(-1,-1), int iterations=1)

  • src:輸入圖,可以多通道,深度可為CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。
  • dst:輸出圖,和輸入圖尺寸、型態相同。
  • op:操作種類,決定要進行何種型態學操作,在開運算時輸入MORPH_OPEN。
  • kernel:結構元素。
  • anchor:原點位置,預設為結構元素的中央。
  • iterations:執行次數,預設為1次。

對於集合I和H,假設使用H對I進行閉運算,代表H對I進行膨脹後侵蝕,記作:

閉運算也可以使物體輪廓變得光滑,和開運算不同,閉運算通常能彌補狹窄的間斷,假如我們對一幅影像重複進行閉運算,不會產生任何變化,這點和重複進行膨脹會加強程度的現象不同。

有兩種方式進行開運算,一種是先呼叫dilate()將影像進行膨脹,接著將膨脹後的圖,當作erode()侵蝕運算的原始圖,最後的輸出圖即為結果,另外一種方式是使用morphologyEx(),將其中某個參數輸入MORPH_CLOSE。

OpenCV閉運算

morphologyEx(const Mat &src, Mat &dst, int op, Mat kernel, Point anchor=Point(-1,-1), int iterations=1)

  • src:輸入圖,可以多通道,深度可為CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。
  • dst:輸出圖,和輸入圖尺寸、型態相同。
  • op:操作種類,決定要進行何種型態學操作,在閉運算時輸入MORPH_CLOSE。
  • kernel:結構元素。
  • anchor:原點位置,預設為結構元素的中央。
  • iterations:執行次數,預設為1次。

以下程式碼示範morphologyEx()的使用,模板參數可輸入Mat(),此時會用3×3的矩形模板,也可以用getStructuringElement()來得到想要的大小和形狀的模板,我們可以看出二值化的圖形,在進行開運算或閉運算後,影像變化的樣子:

#include <cstdio>
#include <opencv2/opencv.hpp>
using namespace cv;int main(){Mat src = imread("lena.jpg",CV_LOAD_IMAGE_GRAYSCALE);Mat src2;threshold(src,src2,120,255,THRESH_BINARY);Mat dst1;Mat dst2;Mat dst3;morphologyEx(src2, dst1, MORPH_OPEN, Mat());morphologyEx(src2, dst2, MORPH_CLOSE, Mat());Mat erodeStruct = getStructuringElement(MORPH_RECT,Size(5,5));morphologyEx(src2, dst3, MORPH_OPEN, erodeStruct);imshow("origin", src2);imshow("open", dst1);imshow("close", dst2);imshow("open2", dst3);waitKey(0);return 0;
}

OpenCV Tutorial: 開運算、閉運算(morphologyEx、MORPH_OPEN、MORPH_CLOSE)相关推荐

  1. 開運算、閉運算(morphologyEx、MORPH_OPEN、MORPH_CLOSE)

    這邊介紹開運算和閉運算,這兩種都是侵蝕和膨脹複合而成,開運算是先侵蝕後膨脹,閉運算是先膨脹後侵蝕. 對於集合I和H,假設使用H對I進行開運算,代表H對I進行侵蝕後膨脹,記作: 開運算可以使物體輪廓變得 ...

  2. 台式计算机l小时耗电,电脑一天的耗电量是多少?不算不知道 一算吓一跳!

    原标题:电脑一天的耗电量是多少?不算不知道 一算吓一跳! 天的耗电量是多少? 买了电脑后很多人非常关系的一个问题就是电脑一天耗电量是多少?是的应该好好算一下这笔帐,不算不知道一算没准吓一跳.特别是台式 ...

  3. Cocos2d中使用颜色混合:加算,减算

    Cocos2d中使用颜色混合:加算,减算 转自http://blog.sina.com.cn/s/blog_7a2ffd5c0100xtid.html CCSprite有一个ccBlendFunc类型 ...

  4. 大型网站首页执行时间0.3秒,性能算好还是算坏?

    正在编写一个大型网站,本机调试时首页执行时间到了0.3秒(APP_DEBUG为true时),这样的性能算好还是算坏?网站日pv20万左右,日IP2万左右. 本机配置:CPU:AMD A8-7650k, ...

  5. 天然气阶梯是按年还是按月_天然气阶梯价是按年算还是月算

    天然气阶梯价是按年算还是月算呢?作为天然气使用新手来说,可能对此并不是很了解.不过别急,下面就让我来为大家一一揭晓答案. 天然气阶梯价是按年算还是月算 按年算.阶梯气价从本年9月1日到隔年8月31日为 ...

  6. C#实现批量高斯投影正算、反算

    批量计算有利于提高工作/学习效率,本文以EPSG提供<Coordinate Conversions and Transformations including Formulas> 的高斯投 ...

  7. 超级计算机应用于石油勘测等方面,算天算地 算人——国家超级计算天津中心主任刘光明解读超级计算机系统应用(二)...

    --算地.超级计算机对地震的模拟,使得我们可以更好地对地震进行预测,而其在地球物理学中的应用,则具有巨大的经济效益. 以超级计算机为平台对石油勘探地震数据进行处理,为提高我国油气资源的保障能力.解决对 ...

  8. 【Matlab笔记】测绘工程专业正算、反算、度分秒转弧度函数

    上传,作为网络笔记 正算 %%坐标正算函数,起点坐标x1,y1 function [x2,y2]=zhengsuan(x1,y1,A,L)x2=x1+L*cos(A)y2=y1+L*sin(A) en ...

  9. 算命先生有三不算:不算死人、不算同行、不算自己。

    算命先生有三不算:不算死人.不算同行.不算自己.算命之说,根本只是为了让你知道,并非让你知而更改.故算卦者算命,向来说一半留一半,那一半能说的是人力无法更改的是为人意,那一半不能说的便是人力可改的,也 ...

最新文章

  1. 在Django项目中使用富文本编辑器
  2. 五 Django 1.5.4 User Authentication 用户认证
  3. Ethernet/IP 学习笔记三
  4. java-第七章-数组-循环输出
  5. 公有云:美酒or毒药?--【软件和信息服务】2014.12
  6. tp获取referer里的域名_thinkPHP的redirect跳转和referer使用的问题
  7. 公共语言运行库(CLR)和中间语言(IL)(一)
  8. while和do-while的区别
  9. 余弦距离和欧氏距离,知道原理和公式后真的很简单
  10. NOIp2013 车站分级 【拓扑排序】By cellur925
  11. 区块链 FISCO BCOS学习文章(2)-FISCO BCOS怎么搭建
  12. Android测试总结
  13. windows系统下压力测试工具(cpu使用率,内存使用率,磁盘使用率,磁盘空间)
  14. GDPR 和个人信息保护的小知识
  15. npm install 提示 path .../node_modules/node-sass command failed
  16. Android 插件仓库
  17. WPF实现纵向显示TabControl标题及标题字体样式
  18. SS00027.algorithm——|ArithmeticMachine.v27|——|Machine:项目实战.v04|竞争分析|
  19. 那些很棒的 blog and site 优秀的博客和网站推荐
  20. UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)

热门文章

  1. 关于echarts地图只标注指定城市名的显示的问题
  2. Android端适老化与无障碍改造
  3. 开发者测试笔记08--ASAN、TSAN、UBSAN、KASAN使用总结
  4. unity 卡牌聚拢算法
  5. 噩梦中的仙境:动态规划之区间一维
  6. 射频通路 隔直_CMT2300A的开关射频匹配网络电路设计
  7. JNI 之Java和c/c++交互,提升Java变成效率
  8. 【Oracle】Oracle安装监听程序
  9. codeMirror 使用教程
  10. 运维平台权限表结构设计