Halcon_二维测量_Atoms

主要功能:利用Watersheds定位原子网格结构中的不规则结构
主要函数:
一、
watersheds(Image : Basins, Watersheds : : )
功能:从图片中提取Basins和Watersheds
• 分水岭算法是根据灰度值的拓扑关系进行图片分割的。原理是将整个图片看成一个山脉群,其中,灰度高的区域可以被认为是山峰,而灰度值低的区域则被认为是山谷。输出值中,Basins往往是含有多个basin的区域,而Watershelds通常只含有一个watersheld,而这个watersheld往往只有一个像素宽度。
• 如图中,黑色的区块就是输出的Basins,而红线就是输出的watershelds
在这里插入图片描述
通常,在应用watershelds算子之前,会进行高斯模糊等处理,以此减少输出的Basins中含有的区域数量,过滤掉小面积的区域。
二、smallest_rectangle1(Regions : : : Row1, Column1, Row2, Column2)
功能:获取Regions对应的最小外接矩形
如果在Regions中传递多个区域,则结果存储在元组中,元组中值的索引对应于输入中区域的索引。在空区域的情况下,如果没有设置其他行为,所有参数的值都是0
在这里插入图片描述
源码及注释如下:

*窗口相关配置、读取图片及获取图片参数
dev_close_window ()
dev_update_window ('off')
read_image (Image, 'atoms')
get_image_size (Image, Width, Height)
*将一个图片切割成一个或多个矩形区域,参数3-6分别为矩形的左上角坐标以及右下角坐标
*此处取图片的下半部分
crop_rectangle1 (Image, Image, Height / 2, 0, Height - 1, Width - 1)
get_image_size (Image, Width, Height)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowID)
set_display_font (WindowID, 14, 'mono', 'true', 'false')
*设置填充模式
dev_set_draw ('margin')
dev_set_line_width (2)
dev_display (Image)
disp_message (WindowID, 'Original image', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowID, 'black', 'true')
stop ()
*高斯滤波
gauss_filter (Image, ImageGauss, 5)
*使用分水岭法分割图片
watersheds (ImageGauss, Basins, Watersheds)
dev_display (Image)
dev_set_colored (12)
dev_display (Watersheds)
disp_message (WindowID, 'Watersheds', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowID, 'black', 'true')
stop ()
*得到最小的外接矩形
smallest_rectangle1 (Basins, Row1, Column1, Row2, Column2)
*以下4行起到过滤图片边缘的区域的作用
select_shape (Basins, SelectedRegions1, 'column1', 'and', 2, Width - 1)
select_shape (SelectedRegions1, SelectedRegions2, 'row1', 'and', 2, Height - 1)
select_shape (SelectedRegions2, SelectedRegions3, 'column2', 'and', 1, Width - 3)
select_shape (SelectedRegions3, Inner, 'row2', 'and', 1, Height - 3)
*对中心距进行判定,选出满足两个区间之一的区域,其中monments_i1为区域的二阶矩
select_shape (Inner, Irregular, ['moments_i1','moments_i1'], 'or', [0,9.5e8], [1.5e8,1e10])
*显示异常区域
dev_display (Image)
dev_set_line_width (1)
dev_set_color ('white')
dev_display (Inner)
dev_set_line_width (3)
dev_set_color ('red')
dev_display (Irregular)
disp_message (WindowID, 'Defects', 'window', 12, 12, 'black', 'true')

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值