探究算子find_shape_model中参数MaxOverlap的准确意思

基于形状的模板查找算子:

find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

 

MaxOverlap:意思是允许的最大重叠区域。

 

那么我们想问,这个重叠区域指的是哪个区域呢?

如果下图是创建形状模型的图像:

image.png

那么对于下图来说,其中的2个形状有重叠吗?

image.png

按照一般的理解,很显然没有重叠,只是一个刚好插到另一个的缝隙中去了,但是两个形状貌似并没有实质上的重叠。

 

后来看了一些资料,说这里的重叠指的是每个形状的最小外接矩形重叠的部分。即下图中红色的色块:

image.png

事实是否如此,我来验证一下:

*建立模型 01.png是本文第1张图,02.png是本文第2张图
read_image (Image_mode, 'C:/Users/happy xia/Desktop/01.png')
create_shape_model (Image_mode, 'auto', -3.0, 6.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID2)

*验证
read_image (Image, 'C:/Users/happy xia/Desktop/02.png')
dev_set_draw ('margin')
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
connection (Region, ConnectedRegions)
smallest_rectangle2 (ConnectedRegions, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
select_obj (Rectangle, ObjectSelected, 1)
select_obj (Rectangle, ObjectSelected1, 2)
area_center (ObjectSelected1, Area1, Row11, Column11)

intersection (ObjectSelected, ObjectSelected1, RegionIntersection)
area_center (RegionIntersection, Area, Row1, Column1)

*(Area1 + 0.1)是想让商为小数,不然的话ratio会等于0
ratio := Area/(Area1 + 0.1)
disp_message (3600, ratio, 'image', 160, 205, 'red', 'true')

dev_display (Image)

*注意:第6个参数NumMatchs = 0,意思是不限制匹配的个数,可以匹配出多个
find_shape_model (Image, ModelID2,-3.0, 6.79 ,0.5, 0, ratio + 0.01 , 'least_squares', 0, 0.9, Row2, Column2, Angle2, Score2)

* get_shape_model_contours (ModelContours, ModelID2, 1)
* vector_angle_to_rigid (0, 0, 0, Row2[0], Column2[0], Angle2[0], HomMat2D0)
* affine_trans_contour_xld (ModelContours, ContoursAffinTrans0, HomMat2D0)

* vector_angle_to_rigid (0, 0, 0, Row2[1], Column2[1], Angle2[1], HomMat2D1)
* affine_trans_contour_xld (ModelContours, ContoursAffinTrans1, HomMat2D1)

image.png

这里,重叠部分和单个形状最小外接矩形的面积比值为0.426317。

当find_shape_model中参数MaxOverlap取值为ratio + 0.01(或者ratio)时,Score2 = [0.999136, 0.998544]

当find_shape_model中参数MaxOverlap取值为ratio - 0.01时,Score2 = 0.999136,即只找到了一个。

 

由此可以说明:ratio(值为0.426317)确实是本例中的允许的最大重叠比例的分界值,进而可以确定find_shape_model中的MaxOverlap指的是每个形状的最小外接矩形重叠的部分所占单个最小矩形的比例


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864