第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机器视觉算法原理与编程实战》

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

  1. Halcon 第七章『图像的几何变换』◆第1节:图像的仿射变换(位置变换、形状变换)及应用

    一.介绍 由于相机拍摄的时候可能存在角度偏差,因此实际获得的画面可能会与想象中有所差异.为了校正图像在拍摄中的失真问题,可以对图像进行一些简单的几何变换,如平移.缩放和旋转等,这些是图形学中的基本几何 ...

  2. Halcon 第七章『图像的几何变换』◆第2节:投影变换

    一.介绍 投影变换也叫透射变换.投影映射.透射变换是将图像投影到一个新的视平面,是一种二维坐标到三维坐标的变换. 透射变换是仿射变换的延续,也可以说仿射变换是透射变换的一种特殊形式.其特殊性在于变换后 ...

  3. Opencv图像特征点提取(

    目录 特征点分类 1 ORB ①特征点检测 ②计算特征描述 2 SIFT 1 SIFT特征检测的步骤 ①.在DOG尺度空间中获取极值点,即关键点. ②.特征点方向估计 ③生成特征描述 ④.代码实现 3 ...

  4. 一起自学SLAM算法:3.4 图像特征点提取

    连载文章,长期更新,欢迎关注: 写在前面 第1章-ROS入门必备知识 第2章-C++编程范式 第3章-OpenCV图像处理 3.1 认识图像数据 3.2 图像滤波 3.3 图像变换 3.4 图像特征点 ...

  5. 图像处理之图像特征及提取

    图像处理之图像特征及提取 图像处理过程中常用的特征提取方法 图像特征: 几何特征(位置与方向.周长.面积.长轴与短轴.距离(欧式距离.曼哈顿距离.切比雪夫距离.余弦距离)): 形状特征(几何形态分析( ...

  6. 麻雀要革命 第四章 旋转!追逐游戏的命运齿轮 第一节

    麻雀要革命 第四章 旋转!追逐游戏的命运齿轮 第一节[@more@] "上霞姐,您听说了吗?那个丑女人找蒙太要手机,他给了." "是啊,上霞稀,那个女人不过是坐在蒙太一旁 ...

  7. 高等数学笔记-乐经良老师-第四章-微分中值定理和导数的应用-第五节-曲线的曲率

    高等数学笔记-乐经良 第四章 微分中值定理和导数的应用 第五节 曲线的曲率 一.弧长和弧微分 弧长 曲线内接折线长度的极限 ( 组成折线的线段长 → 0 \rightarrow 0 →0​​ ) 设曲 ...

  8. Halcon 第五章『模板匹配Matching』◆第5节:基于组件的模板匹配|Component-Based

    一.介绍 基于组件的模板匹配是基于形状匹配的一种应用,也可以说是基于形状的模板匹配的加强版,加强的地方在于,这种方法允许模板中包含多个目标,并且允许目标之间存在相对运动(位移和旋转).区别在于基于形状 ...

  9. 关于图像特征的提取【转】

    特征提取时计算机视觉和图像处理中的一个概念.它指的是计算机提取图像信息,决定每个图像的点是否属于一个图像特征.特征提取的结果是把图像上的点分为不同的子集,这些自己往往属于孤立的点,连续的曲线或者连续的 ...

最新文章

  1. HttpClient 连接池设置引发的一次雪崩!
  2. Android自定义XML属性以及遇到的命名空间的问题
  3. 外汇汇率接口 java_基于JAVA的货币汇率api调用代码实例
  4. ts获取服务器数据_怎么使用Satruts2实现页面列表数据导出到Excel表格
  5. AppleScript快速入门教程
  6. Windows环境下的安装gcc
  7. android学习笔记---42_服务的生命周期
  8. FCK编辑器去掉html标签
  9. 华为:崛起的 5G 巨龙
  10. 软件编程常用数据类型打印print
  11. android 反编译jar包
  12. NanoPC-T4 RK3399和PC有线本地网络传输摄像头视频python
  13. 最常见的社会工程攻击
  14. 视觉工程师:工业相机50问
  15. STM32-GPRS模块连接系统主站
  16. 新世纪大学英语(第二版)综合教程第一册 Unit 3 重点单词
  17. 中国目前拥有的物种和人造卫星的作用
  18. IPD解读--华为500强的研发第一名,除了钱还有IPD
  19. C语言程序设计精髓 第13周——原来内存也可以这么玩,我是指针我怕谁 练兵区——编程题
  20. 在线社交网络影响力分析——总结

热门文章

  1. cordic的FPGA实现(三)sin、cos函数运算与源码分析
  2. 【Java】使用idea打jar包
  3. spring依赖注入简介以及依赖注入的两种方式
  4. Java实现证件照简单换背景
  5. 频谱仪设计基于FPGA的频谱仪设计,可以测试分析多种频率的频谱,分辨率100HZ
  6. angular2如何整合mysql_Angular2如何整合其他插件
  7. 中国信通院发布《大数据白皮书(2019年)》(附PPT解读及下载链接)
  8. Matlab p文件解密,pcode解密,甚至exe文件解密!
  9. 174. 地下城游戏(Dungeon Game)
  10. 平面设计和美工区别在哪,学平面设计和美工哪个难