图像形态学处理——膨胀腐蚀、 开闭运算

膨胀

dilation_rectangle1

dilation_rectangle1 — 用矩形结构元素进行膨胀。

函数原型:dilation_rectangle1(Region : RegionDilation : Width, Height : )

描述:
        dilation_rectangle1对输入区域Region进行矩形膨胀应用。 构造矩形的大小为 Width x Height。该操作得到了放大的区域,并封闭了区域内部比矩形掩模小的孔。
        expression_rectangle1是一个非常快速的操作,因为矩形的高度仅以对数形式进入运行时复杂度,而宽度根本不输入。这使得运行时效率非常高,即使在非常大的矩形(边长>100)的情况下也是如此。

注意:
        dilation_rectangle1分别应用于每个输入区域。如果要消除不同区域之间的间隙,必须首先调用union1或union2。
        要在各个方向上扩大相同的区域,宽度和高度必须是奇数。如果不是这样,区域在右侧或底部分别比在左侧或顶部膨胀更多。
参数
Region (input_object) :待膨胀区域
RegionDilation (output_object):膨胀后的区域
Width (input_control) :构造矩形的宽度。
                                        默认值:11
                                       建议值:1、2、3、4、5、11、15、21、31、51、71、101、151、201
                                       典型值范围:1≤宽度≤511(lin)
                                       最小增量:1
                                       建议增量:10
Height(input_control):构造矩形的高度
                                       默认值:11
                                       建议值:1、2、3、4、5、11、15、21、31、51、71、101、151、201
                                       典型值范围:1≤高度≤511(lin)
                                       最小增量:1
                                       建议增量:10

Example (C++ (HALCON 5.0-10.0))

#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"

main()
{
  cout << "Reproduction of 'dilation_rectangle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Blue  = after dilation " << endl;
  cout << "Red   = after segmentation " << endl;

  HByteImage img("monkey");
  HWindow    w;

  HRegionArray regs   = (img >= 220).Connection();
  HRegionArray dilreg = regs.DilationRectangle1 (2, 4);

                        img.Display (w);      w.Click ();
  w.SetColor ("blue");  dilreg.Display (w);   w.Click ();
  w.SetColor ("red");   regs.Display (w);     w.Click ();

  return(0);
}

闭运算

消除噪点: opening_rectangle1(),opening_circle()
用于填充缝隙: closing_rectangle1(),closing_circle()

先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。

closing_rectangle1

closing_rectangle1 — 使用矩形结构元素闭合区域

函数原型:closing_rectangle1(Region : RegionClosing : Width, Height : )
功能:使用矩形结构元素对区域进行闭运算,填充缝隙 。先膨胀后腐蚀,矩形结构元素的大小由参数宽度和高度决定。区域边界被平滑,区域内小于矩形结构元素的洞被封闭。

参数
Region(输入参数)——输入区域
RegionClosing(输出参数)——闭合后的区域
Width(输入参数)——矩形结构元素的宽度
Height(输入参数)——矩形结构元素的高度

closing_circle

closing_circle——使用圆形结构元素闭合区域

函数原型:closing_circle(Region: RegionClosing: Radius:)
功能: 使用圆形结构元素对区域进行闭运算,填充缝隙。先膨胀后腐蚀。对区域边界进行平滑处理,并封闭区域内小于半径的圆形规整元素的孔洞。

注意:close_circle分别对每个输入区域使用。 如果要缩小不同区域之间的间隙,则必须首先调用union1或union2。

参数
Region(输入参数)——输入区域
RegionClosing(输出参数)——闭运算后的区域
Radius(输入参数)——圆形结构元素的半径

开运算

opening_rectangle1

函数原型:opening_rectangle1(Region : RegionOpening : Width, Height : )
功能:使用生成的矩形结构元素对区域进行开运算操作。
参数
Region——要进行开运算操作的区域
RegionOpening——开运算后获得的区域
Width/Height——矩形结构元素的宽和高

opening_circle

函数原型:opening_circle(Region : RegionOpening : Radius : )
功能:使用圆形结构元素对区域进行开运算操作。
参数:
Region——要进行开运算操作的区域
RegionOpening——开运算后获得的区域
Radius——圆形结构元素的半径

示例:

read_image (Image1, 'monkey')
threshold (Image1, Region, 120, 255)
* Close the small gaps.
* closing_circle (Region, RegionClosing, 3.5)
* Select the large regions.
opening_circle (Region, RegionOpening, 3.5)

在这里插入图片描述
上列图片分别为原图、阈值分割后的图、闭运算图及开运算图

对图像腐蚀或是膨胀操作后,和原区域做减操作,可以得到区域的内或是外边界

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&Mr.Gong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值