当前位置:网站首页>halcon知识:区域(Region)上的轮廓算子(1)
halcon知识:区域(Region)上的轮廓算子(1)
2022-06-23 17:45:00 【无水先生】
一、提要
在Region相关的算子中,有get_region_chain,意思就是对区域的外轮廓线进行提取,并以链式码格式存放。本篇详细告诉大家,get_region_chain原理和测试。
二. get_region_chain介绍
功能:一个对象的轮廓(contour)作为链式码。
运算符 get_region_chain 返回区域的轮廓。轮廓是描述区域轮廓的一系列像素。轮廓“位于”该区域。它从最小的行号开始;在该行中具有最大列索引的像素处。旋转顺时针进行。该区域的孔被忽略。方向码(链码)定义如下:

运算符 get_region_chain 以元组的形式返回代码。在非空区域的情况下,参数 Row 和 Column 为起点坐标,Chain 是当前点的方向码,指向下一个点坐标。在空区域的情况下,参数 Row 和 Column 为零,Chain 是空元组。该区域的孔被忽略。只能传递一个区域,并且必须只有一个连接组件。
三、测试代码
以下是我写的,“硬性”测试该函数的代码,代码和结果如下:
read_image (Image, 'f:/images/DOTS/block.jpg')
rgb1_to_gray(Image,gray)
get_image_size(gray,width,height)
* gen_rectangle1(rect,0,0,height,width)
fast_threshold (gray,rect,0, 50 , 7)
get_region_chain(rect, Row, Column, Chain)
gen_image_const(BlkImage,'byte',width,height)
tmpRow := Row
tmpClm := Column
solid:=[]
x:=[]
y:=[]
for I:=0 to |Chain|-1 by 1
set_grayval(BlkImage, tmpRow, tmpClm, 228)
ttsmp := Chain[I]
switch( ttsmp )
case 0:
tmpClm := tmpClm + 1
break
case 1:
tmpRow := tmpRow -1
tmpClm := tmpClm +1
break
case 2:
tmpRow:=tmpRow -1
break
case 3:
tmpRow := tmpRow -1
tmpClm := tmpClm -1
break
case 4:
tmpClm:=tmpClm-1
break
case 5:
tmpClm := tmpClm -1
tmpRow := tmpRow +1
break
case 6:
tmpRow := tmpRow +1
break
case 7:
tmpClm := tmpClm +1
tmpRow := tmpRow +1
break
endswitch
endfor
dev_display(BlkImage)
输入图Image:

输出图:BlkImage

四、关于get_region_contour
运算符 get_region_contour 返回区域的轮廓。轮廓是线(Rows)和列坐标(Columns)的结果,描述了区域的边界。轮廓位于该区域上。它从最小的行号开始。在具有最大列索引的像素处。旋转方向为顺时针。轮廓的第一个像素与最后一个像素相同。该区域的孔被忽略。运算符 get_region_contour 以元组的形式返回坐标。空区域作为空元组传递。
read_image (Image, 'f:/images/DOTS/block.jpg')
rgb1_to_gray(Image,gray)
get_image_size(gray,width,height)
* gen_rectangle1(rect,0,0,height,width)
fast_threshold (gray,regin,0, 50 , 7)
* get_region_chain(rect, Row, Column, Chain)
get_region_contour(regin,row,col)
gen_image_const(BlkImage,'byte',width,height)
for I:=0 to |row|-1 by 1
tmpRow :=row[I]
tmpCol :=col[I]
set_grayval(BlkImage, tmpRow, tmpCol, 228)
endfor
dev_display(BlkImage)输入图:

结果图:

结论:
因为get_region_chain只能对单个区域实现轮廓提取,get_region_contour能对多区域实现轮廓提取,因此,get_region_contour算子更有优势。
边栏推荐
- Know Chuangyu: content oriented, ai+ artificial empowerment
- Leetcode question brushing: hash table 03 (happy number)
- After the Computer College changed its examination, the College of Cyberspace Security also changed its examination! Nanjing University of technology computer postgraduate entrance examination
- 渗透测试基础,初识渗透测试
- Redis 集群
- 凸优化笔记
- [QT] Chapter 3 and 4: window components and layout management
- Leetcode question brushing: hash table 01 (valid Letter ectopic words)
- Leetcode 1218. 最长定差子序列(提供一种思路)
- [sword finger offer] 46 Translate numbers into strings
猜你喜欢

Remote connection raspberry pie in VNC Viewer Mode

Leetcode: hash table 02 (intersection of two arrays)

1、 Array -- sliding window problem -- subarray with the smallest length -- fruit basket problem

Yapi installation

QML type: Loader

2022 t elevator repair test question bank and simulation test

CSDN salary increase secret script: Jenkins integrated allure test report complete tutorial

TT 语音落地 Zadig:开源共创 Helm 接入场景,环境治理搞得定!

leetcode刷题:哈希表01 (有效的字母异位词)

用软件可编程FPGA加速网络边缘的移动应用总结
随机推荐
各种解背包问题
[failure announcement] there is a problem with the redis that replaces memcached, causing the website to fail
为什么要创建公开的OKR?
Regular expression use graph bed
渗透测试基础,初识渗透测试
高级计网笔记(五)
云原生行业应用崛起,从“可用”到“好用”有多远?
What does the science and technology interactive sand table gain popularity by virtue of
How to make good use of daily time to review efficiently?
leetcode刷题:哈希表04 (两数之和)
正则表达式使用图床
Paper reading (58):research and implementation of global path planning for unmanned surface vehicle based
【故障公告】取代 memcached 的 redis 出现问题造成网站故障
leetcode刷题:哈希表07 (三数之和)
知道创宇:内容向善,AI+人工赋能
【Qt】第十章:数据库
Improving efficiency or increasing costs, how should developers understand pair programming?
MySQL -- classic interview questions
产品设计- 需求分析
Leetcode 1218. Longest definite difference subsequence (providing an idea)