OpenCV中图像形态学操作

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自:视学算法

图像形态学是图像处理的分支学科,在二值图像处理中占有重要地位、OpenCV中实现了图像形态学如下常见操作:

-膨胀操作

-腐蚀操作

-开操作

-闭操作

-击中击不中操作

-黑帽操作

-顶帽操作

-梯度操作

在开始相关API与代码演示之前,首先要加载图片然后把图像从彩色图像转换为二值图像,实现代码如下:

OpenCV中图像形态学操作_第1张图片

结构元素

图像形态学操作,必须有结构元素才可以,不同形状的结构元素对同样的图像进行相同的操作可以得到不同的输出结果,所以在形态学操作中结构元素的选择至关重要。OpenCV中获取结构元素的相关代码如下:OpenCV中图像形态学操作_第2张图片

腐蚀操作

腐蚀操作是将结构元素覆盖下的中心像素点的值用最小值替换,得到结果即为腐蚀操作输出图像,通过OpenCV API调用实现腐蚀操作的代码如下


运行效果如下:

OpenCV中图像形态学操作_第3张图片

膨胀操作

膨胀操作是将结构元素覆盖下的中心像素点的值用最大值替换,得到结果即为膨胀操作输出图像,通过OpenCV API调用实现膨胀操作的代码如下


运行效果如下:

OpenCV中图像形态学操作_第4张图片

开操作

开操作是首先对图像进行腐蚀操作,然后在对图像进行膨胀操作,开操作可以断开两个对象的连接性。实现对象分离。开操作的代码实现如下:


运行结果如下:

OpenCV中图像形态学操作_第5张图片

闭操作

闭操作使用结构元素对图像先膨胀后腐蚀,正好跟开操作的顺序相反,但是闭操作绝对不是开操作的反操作结果。闭操作可以消除图像中背景小点。OpenCV中开操作代码演示如下:


运行结果如下

OpenCV中图像形态学操作_第6张图片

击中击不中操作(Hit and Miss)

根据结构元素的选择被击中的区域将会被保留、而没有被击中的区域则被去掉OpenCV中代码演示如下:


结果显示如下:

OpenCV中图像形态学操作_第7张图片

黑帽操作

黑帽操作的结果是图像闭操作与源图像之间的不同,OpenCV中实现图像黑帽操作的代码如下:

结果显示如下:

OpenCV中图像形态学操作_第8张图片

顶帽操作

顶帽操作是源图像与开操作结果之间的差异,顶帽操作可以显示出图像中区域之间微小不同之处。OpenCV顶帽操作的代码演示如下:

显示结果如下:

OpenCV中图像形态学操作_第9张图片

梯度操作

形态学的梯度操作是图像膨胀与腐蚀结果之间的不同,常见的梯度操作是基本梯度-是膨胀与腐蚀结果之间不同。OpenCV的代码演示如下:


效果显示如下:

OpenCV中图像形态学操作_第10张图片

函数说明

morphologyEx- 形态学操作函数

-第一个参数表示输入图像,通道数目任意,位数可以是8、16、32

-第二个参数表示输出图像,通道数与位数与输入图像一致

-第三个参数表示是那种形态学操作

-第四个参数表示结构元素是什么

上述举例都是基于矩形结构元素5x5窗口大小,此外文章中还定义另外两种结构元素,感兴趣的读者可以自己尝试。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

OpenCV中图像形态学操作_第11张图片

OpenCV中图像形态学操作_第12张图片

你可能感兴趣的:(python,计算机视觉,opencv,人工智能,java)