Region特征算子与形态学运算——第3讲
问题提出:求下图中楔形缺口到圆心的最短距离。

【涉及知识点讲解】
一、Region特征算子
在图形窗口中用鼠标单击选中某个Region,然后点击菜单栏的“打开特征检测”图标,就可以看到当前Region的所有特征了。

由特征检测页面可知,Region的特征很多,如何知道用什么算子可以获得这些特征呢?
① 鼠标放在特征上悬停。

② region_features
二、形态学算子(以下面四个为例)
dilation_circle
erosion_circle
opening_rectangle1
closing_rectangle1
拓展阅读:https://www.cnblogs.com/xh6300/p/6397289.html
三、tuple_concat和tuple_length、tuple_min
tuple叫做元组,类似于C#中的ArrayList。
a := 3
a := [a,4]
tuple_concat (a, 5, Concat)
a := [a,5]
tuple_length (Concat, Length)
len := |a|
tuple_min (a, Min)
minValue := min(a)
https://www.cnblogs.com/xh6300/p/6117688.html
四、完整代码
*方法1:逐次逼近法

dev_set_draw ('margin')
read_image (Image, 'circle.jpg')
threshold (Image, Region, 0, 80)
opening_circle (Region, Region, 3.5)
smallest_circle (Region, Row, Column, Radius)
*Row, Column即是圆心坐标
gen_circle (Circle, Row, Column, Radius)
gen_cross_contour_xld (Cross, Row, Column, 6, 0.785398)
difference (Circle, Region, RegionResult)
*去掉细窄边缘
opening_circle (RegionResult, RegionResult, 3.5)
*求最小外接圆直径
diameter_region (RegionResult, Row1, Column1, Row2, Column2, Diameter)
gap := Radius - Diameter
*设置缺省值
realGap := gap
for i := gap to Radius by 1
gen_circle (Circle1, Row, Column, i)
intersection (Circle1, RegionResult, RegionIntersection)
area_center (RegionIntersection, Area, Row3, Column3)
if (Area > 0)
realGap := i
break
endif
endfor
dev_display (Image)
disp_message (3600,'MinDist1:' + realGap, 'image', Row, Column, 'black', 'true')
*方法2:distance_pr
distance_pr (RegionResult, Row, Column, DistanceMin, DistanceMax)
disp_message (3600,'DistanceMin: ' + DistanceMin, 'image', Row, Column, 'black', 'true')
dev_display (Image)
*方法3:遍历点坐标,求最小距离
get_region_points (RegionResult, Rows, Columns)
Distances := []
for i := 0 to |Rows|-1 by 5
distance_pp (Row, Column, Rows[i], Columns[i], Distance)
Distances := [Distances , Distance]
endfor
tuple_min (Distances, Min)
disp_message (3600,'MinDist1:' + realGap, 'image', Row, Column, 'black', 'true')
disp_message (3600,'DistanceMin: ' + DistanceMin, 'image', Row+20, Column, 'black', 'true')
disp_message (3600,'Min: ' + Min, 'image', Row+40, Column, 'black', 'true')
Region特征算子与形态学运算——第3讲的更多相关文章
- region特征
一: 查看阈值之后的region特征,可以通过特征检测来看,在工具栏上 region特征分三部分: 1.基础特征: region面积,中心,宽高,左上角及右下角坐标,长半轴短半轴椭圆方向,洞数及其面积 ...
- OpenCV2.x自学笔记——形态学运算
名称 标识符 作用 原理 腐蚀 MORPH_ERODE 膨胀 MORPH_DILATE 开运算 MORPH_OPEN 消除细白点 先腐蚀后膨胀 闭运算 MORPH_CLOSE 消除小黑洞 先膨胀后腐蚀 ...
- halcon形态学运算
腐蚀.膨胀.开运算(先腐蚀后膨胀).闭运算(先膨胀后腐蚀) 以halcon自带案例ball.hdev为例(开运算),注意代码有所缩减.关于sort_region函数,参考http://blog.sin ...
- OpenCV计算机视觉学习(5)——形态学处理(腐蚀膨胀,开闭运算,礼帽黑帽,边缘检测)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 形态 ...
- select_shape_proto算子的几种特征模式含义解析
select_shape_proto是一个非常有用的region筛选算子,但是由于难以理解,因此一般人使用得不是太多. 算子签名如下: select_shape_proto(Regions, Patt ...
- 形态学及其他集合运算(Morphological and Other Set Operations)
摘 要:本实验主要实现形态学图像处理.主要验证图像集合的交并补运算.膨胀和腐蚀处理并利用图像集合的运算,实现形态学边界抽取算法并进行特征边界抽取.同时将膨胀和腐蚀扩展至灰度图像,编写函数实现灰度 ...
- 学习 opencv---(10)形态学图像处理(2):开运算,闭运算,形态学梯度,顶帽,黒帽合辑
上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换. 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和 ...
- 【OpenCV新手教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/23184547 作者:毛星云(浅墨) ...
- Halcon算子--区域特征
当我们想要提取Region时,图像处理后,往往存在几个类似的Region,此时,需要根据Region的一些特殊特征,来选择指定的Region. 求Region指定特征值:region_features ...
随机推荐
- python3 string
字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var2 ...
- XPath 常用语法札记
* 不包含属性的元素 例如不包含属性的span: span[not(@*)] * 文本包含某部分的元素 例如文本包含Rank的元素: *[contains(text(),'Rank')] * 选择匹配 ...
- xss总结漏洞篇
Xss漏洞 Xss漏洞出现在1996年.Xss漏洞又名跨站脚本漏洞 Xss可能造成的危害 网站弹框(刷流量) 网站挂马 会话劫持 Cookie被盗取 用户提权 账号被盗 尽量DDOS 蠕虫攻击 Xss ...
- django返回状态码的页面,指定p地址访问
只有DEBUG = False 才能展示自定义的错误页面,否则djnago会报错,给出提示信息. ps:django DEBUG=FALSE, 会导致不能加载静态文件 ALLOWED_HOSTS ...
- c#面向对象基础5
字符串 string (1)字符串的不可变性 当给字符串重新赋值时,老值没有被销毁,而是重新开辟了一块新的空间去储存新值<------------------堆中,在栈中地址发生变化重新指向新 ...
- leetcode492
public class Solution { public int[] ConstructRectangle(int area) { Dictionary<int, int> dic = ...
- Android手机与服务器(案例一) webservice
1.服务端 建立webservice,增加方法gettime和sum. 测试正常8080端口,关闭防火墙. Start启动服务,并且OpenBrowser,XE6真是方便啊 http://localh ...
- 五种方法实现Java的Singleton单例模式
面试的时候经常会问到Java的单例模式,这道题能很好的考察候选人对知识点的理解程度.单例模式要求在系统运行时,只存在唯一的一个实例对象. 下面我们来详细剖析一下其中的关键知识点,并介绍五种实现方法,以 ...
- 前端-CSS-5-继承性&层叠性&权重比较
1.继承性 <style type="text/css"> .father{ font-size: 30px; background-color: green; } . ...
- egret-初步接触
class HelloTime extends egret.DisplayObjectContainer { public constructor() { super(); this.addEvent ...