rmx20081573
助理工程师
助理工程师
  • 最后登录2016-09-01
  • 发帖数31
  • 金币249枚
  • 贡献勋章0枚
阅读:3853回复:9

halcon形状模版匹配问题

楼主#
更多 发布于:2013-10-15 21:45
 

用halcon形状模版匹配,红色矩形框是搜索范围ROI   矩形框中间的是我训练的模版,按理说应该只会匹配到ROI中中间的那个  为什么会搜到搜索区域之外的部分,而且匹配分数还很高,这个设置set_system ('border_shape_models', 'false'),不是可以决定是否可以匹配出图像边界的地方吗

set_system ('border_shape_models', 'false')
read_image (Image, 'D:/Img/IMG.0.bmp')
gen_rectangle1 (ModelRegion, 175.5, 310.5, 235.5, 357.5)
reduce_domain (Image, ModelRegion, TemplateImage)
create_shape_model (TemplateImage, 4, rad(0), rad(360), rad(3.0317), ['none','no_pregeneration'], 'use_polarity', [39,50,4], 5, ModelId)
get_shape_model_contours (ModelContours, ModelId, 1)
draw_rectangle1(3600, Row1, Column1, Row2, Column2)
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)
reduce_domain(Image,Rectangle, ImageReduced)
find_shape_model (ImageReduced, ModelId, rad(0), rad(360), 0.5, 0, 0.5, 'least_squares', [4,1], 0.75, ModelRow, ModelColumn, ModelAngle, ModelScore)
for MatchingObjIdx := 0 to |ModelScore| - 1 by 1
    hom_mat2d_identity (HomMat)
    hom_mat2d_rotate (HomMat, ModelAngle[MatchingObjIdx], 0, 0, HomMat)
    hom_mat2d_translate (HomMat, ModelRow[MatchingObjIdx], ModelColumn[MatchingObjIdx], HomMat)
    affine_trans_contour_xld (ModelContours, TransContours, HomMat)
  
    dev_display (TransContours)
    dev_set_draw('margin')
    dev_display(Rectangle)
endfor
* Matching 01: Clear model when done
clear_shape_model (ModelId)
* Matching 01: END of generated code for model application
longwu87
助理工程师
助理工程师
  • 最后登录2014-10-10
  • 发帖数20
  • 金币439枚
  • 贡献勋章0枚
沙发#
发布于:2013-10-15 22:57
你没有图片  呢  ?

好像是有个问题,如果彩色的图片   在ROI之外确实会有很高分数的匹配。  不知道怎么回事。。。
但是如果用R G B通道来检测  却不会有
rmx20081573
助理工程师
助理工程师
  • 最后登录2016-09-01
  • 发帖数31
  • 金币249枚
  • 贡献勋章0枚
板凳#
发布于:2013-10-16 07:39
halcon形状匹配问题
我的图片是简单的LED图片,而且是灰度的 我这不知道为什么图片贴不上去啊
taobao
高级工程师
高级工程师
  • 最后登录2014-10-22
  • 发帖数71
  • 金币1898枚
  • 贡献勋章0枚
  • 社区居民
  • 喜欢达人
4楼#
发布于:2013-10-16 09:29

图片上传方法:  选择插入〉再选择网络图片或本地图片即可。
zazaniao
工程师
工程师
  • 最后登录2017-02-20
  • 发帖数241
  • 金币1146枚
  • 贡献勋章1枚
  • 社区居民
  • 忠实会员
5楼#
发布于:2013-10-17 08:15
个人建议:
1、适当提高匹配分数
2、更改定位图像的信息,去掉非定位ROI的图像信息
*Rectangle2为定位区域,RegionComplement为补集,即整个图像除定位区域以后的区域的集合
complement(Rectangle2, RegionComplement)
*把RegionComplement画成0,消除非定位区域的干扰,只保留定位区域
paint_region(RegionComplement, GrayImage, ImageResult, 0, 'fill')
*在只包含有定位区域信息的图像内定位
3、用reduce模式和paint模式的定位结果对比:
reduce模式结果:

图片:reduce_domain模式定位结果.JPG


paint模式结果:

图片:paint_region模式定位结果.JPG


4、测试代码:
read_image (Image20131016074530671, 'C:/Documents and Settings/zazaniao/桌面/20131016074530671.jpg')
rgb1_to_gray(Image20131016074530671, GrayImage)
* draw_rectangle1(3600, Row1, Column1, Row2, Column2)
*创建模板
gen_rectangle1(Rectangle, 338, 204, 419, 272)
reduce_domain(GrayImage, Rectangle, ImageReduced)
create_shape_model(ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*定位ROI
gen_rectangle1(Rectangle2, 288, 306, 462, 458)
reduce_domain(GrayImage, Rectangle2, ImageReduced)
find_shape_model(ImageReduced, ModelID, -0.39, 0.78, 0.8, 4, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
dev_display_shape_matching_results(ModelID, 'red', Row, Column, Angle, 1, 1, 0)
 

*Rectangle2为定位区域,RegionComplement为补集,即整个图像除定位区域以后的区域的集合
complement(Rectangle2, RegionComplement)
*把RegionComplement画成0,消除非定位区域的干扰,只保留定位区域
paint_region(RegionComplement, GrayImage, ImageResult, 0, 'fill')
*在只包含有定位区域信息的图像内定位
find_shape_model(ImageResult, ModelID, -0.39, 0.78, 0.8, 4, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
dev_display_shape_matching_results(ModelID, 'red', Row, Column, Angle, 1, 1, 0)
 

楼主可根据这种形式,自行修改代码调试。
pmmiao
工程师
工程师
  • 最后登录2016-04-14
  • 发帖数60
  • 金币1093枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2013-10-17 11:15
给个原图吧,便于学习提高,谢谢
wfb2313
助理工程师
助理工程师
  • 最后登录2017-04-18
  • 发帖数49
  • 金币398枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
7楼#
发布于:2014-03-29 13:33
试着实践一下,很需要
vizardz
初学者
初学者
  • 最后登录2015-02-04
  • 发帖数14
  • 金币25枚
  • 贡献勋章0枚
8楼#
发布于:2015-02-04 00:01
好思路,我也下来试试
中秋节的乡愁
技术员
技术员
  • 最后登录2017-08-17
  • 发帖数36
  • 金币135枚
  • 贡献勋章0枚
  • 社区居民
9楼#
发布于:2017-01-11 21:25
666666666呀
游客

返回顶部