Halcon 第四章『图像特征与提取』◆第1节:基于区域形状特征

        第1节:区域形状特征&相关算子

        定义是描述图像中局部区域的几何属性,如面积、中心等。

        1、区域的面积和中心点

        Image图像 / Features特征

        计算区域的面积和中心点坐标

area_center(Regions : : : Area, Row, Column)

        Regions:输入参数,输入的区域。

        Area:输出元组,为每个独立区域的面积。

        Row:输出元组,为每个独立区域中心点的行Y坐标。

        Column:输出元组,为每个独立区域中心点的列X坐标

案例1:计算ROI区域的面积和中心点坐标

read_image(Image, 'data/holes')
*将图像转换为单通道灰度图
rgb1_to_gray (Image, GrayImage)
*创建矩形选区,选择感兴趣部分
gen_rectangle1 (Rectangle, 180, 83, 371, 522)
*输出感兴趣的区域
reduce_domain (GrayImage, Rectangle, ROI1)
*阈值分割区域
threshold (ROI1, Regions, 0, 95)
*分割后的区域,将不相连的区域连通为独立的区域
connection (Regions, Snowcity)
*计算所有不相连区域的面积和中心点坐标
area_center (Snowcity, Area, Row, Column)
*在窗口中显示面积信息
disp_message(200000, Area, 'window', Row, Column, 'red', 'true')
原图
ROI1区域
Region区域
计算目标区域Snowcity的面积并显示

        2、封闭区域(孔洞或封闭的裂缝)的面积

        Image图像 / Features特征

        提取一个区域中洞(封闭的裂缝)的面积

area_holes(Regions : : : Area)

        Regions:输入参数,输入需要测量的区域。

        Area:输出参数,输出该区域中孔/洞的总面积(数组);如果没有则为0。

read_image (Image, 'rings_and_nuts')
threshold (Image, Region, 128, 255)
*提取Region区域中洞的总面积
area_holes (Region, Area)
*在窗口中显示面积信息
disp_message (200000, 'Size of enclosed area (holes): ' + Area + ' pixel', 'window', 12, 12, 'black', 'true')
原图rings_and_nuts
计算此图中黑色部分的总面积,并显示在窗口中

        3、根据特征值选择区域

在菜单栏中此图标为特征直方图

        Image图像 / Features特征

         根据要求的区域特征提取适应的区域。

select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )

        Regions:输入参数,输入需要测量的区域(数组)。

        SelectedRegions:输出参数,输出符合的区域(数组),不符合的区域则不会显示在此。

        Features:输入参数,输入要检测的特征,如下

【 'anisometry'——最小外接椭圆,Ra/Rb长轴与短轴的比值。

'area'——区域的面积。

'area_holes'——所有洞的面积

'bulkiness'——椭圆参数,蓬松度π*Ra*Rb/A

'circularity'——区域的圆度。

'roundness'——圆度,与circularity计算方法不同

'compactness'——区域的紧密度。

 'connect_num'——输入区域中非连通区域的数量。

'contlength'——轮廓线总长度。

 'convexity'——凸性(Min,Max百分比值0.0-1.0)。

'dist_deviation'——区域边界到中心距离的偏差

'dist_mean'——区域边界到中心的平均距离

'euler_number'——欧拉数,即连通数和洞数的差

'height'——输入区域的高度(平行于坐标轴)。

'width'——输入区域的宽度(平行于坐标轴)。

'holes_num'——输入区域包含的孔洞数量。

'inner_radius'——输入区域的最大内接圆的半径。

'outer_radius'——输入区域的最小外接圆的半径。

'inner_width'——输入区域的与坐标轴平行的最大内接矩形的宽度。

 'inner_height'——输入区域的与坐标轴平行的最大内接矩形的高度。

'max_diameter'——输入区域的最大直径。

{几何矩

'moments_i1', 'moments_i2', 'moments_i3', 'moments_i4',

'moments_ia', 'moments_ib',

'moments_m02', 'moments_m02_invar', 'moments_m03', 'moments_m03_invar',

'moments_m11', 'moments_m11_invar', 'moments_m12', 'moments_m12_invar',

'moments_m20', 'moments_m20_invar', 'moments_m21', 'moments_m21_invar',

'moments_m30', 'moments_m30_invar',

'moments_phi1', 'moments_phi2', 'moments_psi1',

'moments_psi2', 'moments_psi3', 'moments_psi4',

'num_sides'——多边形边数

'orientation':区域方向

'phi'——等效椭圆方向。

'ra'——等效椭圆长轴半径长度。

'ratio'——比例。

'rb'——等效椭圆短轴半径长度。

'rect2_len1'——最小外接矩形长度的一半。

'rect2_len2'——最小外接矩形长度的一半。

'rect2_phi'——最小外接矩形的方向

'rectangularity'——矩形度。

'row'——输入区域中心点行坐标。

'column'——输入区域中心点列坐标。

'row1'——左上角行坐标。

'column1'——左上角列坐标。

'row2'——右下角行坐标。

'column2'——右下角列坐标。

'struct_factor'——椭圆参数,Anisometry*Bulkiness-1

】 

        Operation:输入参数,特征的方式,【 'and'全部特征, 'or'特征之一】。

        Min:输入参数,输入该特征的最小值,范围0.0-99999.0。

        Max:输入参数,输入该特征的最大值,范围0.0-99999.0。

        Image图像 / Features特征

        选择彼此有某种关系的区域。

select_shape_std(Regions : SelectedRegions : Shape, Percent : )

        Regions:输入参数,输入要检测的区域。

        SelectedRegions:输出参数,输出符合的区域(数组),不符合的不会在此显示。

        Shape:输入参数,输入要检测的形状特征,【 'max_area'找出最大面积的区域, 'rectangle1'外形类似与水平矩形的百分之多少, 'rectangle2'外形类似于任意矩形的百分之多少】

        Percent:输入参数,类似尺寸的百分比,范围0.0-100.0(lin)。

read_image (Image, 'fabrik')
*区域生长分割出的Regions
regiongrowing (Image, Regions, 1, 1, 3, 10)

dev_set_color ('red')
*Ra/Rb长轴与短轴的比值在0.95-1之间的,输出区域Snowcity-1
select_shape (Regions, Snowcity-1, 'convexity', 'and', 0.95, 1)
dev_set_color ('green')
*区域的高度范围在100-512之间的,输出区域Snowcity-2
select_shape (Regions, Snowcity-2, 'height', 'and', 100, 512)
dev_set_color ('blue')
*面积大小在1-100之间的,输出区域Snowcity-3
select_shape (Regions, Snowcity-3, 'area', 'and', 1, 100)
原图fabrik
区域生长分割的Regions
椭圆Ra/Rb长轴与短轴的比值  Snowcity-1
区域的高度范围在100-512之间的Snowcity-2
面积大小在1-100之间的Snowcity-3

        4、根据特征值创建区域

        Image图像 / Features特征

        计算一个区域最大的内切圆

inner_circle(Regions : : : Row, Column, Radius)

        Regions:输入参数,输入的区域

        Row,Column:输出参数,输出最大内接圆的圆心坐标。

        Radius:输出参数,该最大内接圆的半径。

        Image图像 / Features特征

        计算一个区域内部最大的矩形

inner_rectangle1(Regions : : : Row1, Column1, Row2, Column2)

        Image图像 / Features特征

        计算一个区域的最小圆的半径

smallest_circle(Regions : : : Row, Column, Radius)

        Image图像 / Features特征

        计算包围一个区域最小的水平矩形

smallest_rectangle1(Regions : : : Row1, Column1, Row2, Column2)

        Image图像 / Features特征

        计算包围一个区域最小任意方向摆放的矩形

smallest_rectangle2(Regions : : : Row, Column, Phi, Length1, Length2)

        Regions:输入参数,输入的区域。

        Row, Column:输出参数,最小外接矩形的几何中心坐标。

        Phi:输出参数,最小外接矩形的角度方向。要求【- pi / 2 < Phi && Phi <= pi / 2】

        Length1:输出参数,输出长轴半径。【 Length1 >= 0.0】

        Length2:输出参数,输出短轴半径。【Length2 >= 0.0 && Length2 <= Length1】

read_image (Image, 'fabrik')
dev_open_window (0, 0, 512, 512, 'black', WindowID)
dev_set_color ('white')
dev_set_draw ('fill')
regiongrowing (Image, Regions, 1, 1, 3, 500)
inner_circle (Regions, Row, Column, Radius)
dev_set_color ('red')
disp_circle (WindowID, Row, Column, Radius)
fabrik
被白色填充的Regions
Regions实际的分割情况
每个区域最大的内切圆

dev_close_window ()	
read_image (Image, 'data/garlic2')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/1.5, Height/1.5, 'black', WindowHandle)
rgb1_to_gray (Image, GrayImage)
*使阈值处理提取出了较暗的区域
threshold (GrayImage, Region, 100, 255)
*将非连通区域分割成一组区域的集合
connection (Region, ConnectedRegions)
*利用面积特征,将比较大快的区域分割出来
select_shape(ConnectedRegions,selectRegion,'area','and',50000,200000)
*求最小外接矩形
smallest_rectangle2 (selectRegion, Row1, Column1, Phi, Length1, Length2)
*根据矩形参数创建举行的轮廓
gen_rectangle2_contour_xld (Snowcity, Row1, Column1, Phi, Length1, Length2)
*显示最小外接矩形
dev_set_window (WindowHandle)
dev_set_draw ('margin')
dev_set_line_width (3)
dev_display (Image)
dev_display (Snowcity)
原图
ConnectedRegions
selectRegion
Row1, Column1, Phi, Length1, Length2
Snowcity
最后以原图为背景显示创建的矩形

参考文献:

杨青—《Halcon机器视觉算法原理与编程实战》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值