首页 > 其他分享 >[Halcon&定位] 解决Roi区域外的模板匹配成功

[Halcon&定位] 解决Roi区域外的模板匹配成功

时间:2023-12-22 21:06:49浏览次数:35  
标签:Roi domain 匹配 RegionDifference Image dev Halcon 搜索 模板

  • 作者: 丶布布

一.问题描述

[Halcon&定位] 解决Roi区域外的模板匹配成功_人工智能

用halcon形状模版匹配,红色矩形框是搜索范围,ROI 矩形框中间的是训练的模版,按理说应该只会匹配到ROI中中间的那个为什么会搜到搜索区域之外的部分,而且匹配分数还很高,即模板在搜索区域外仍能匹配成功。
 
二.原因分析

使用reduce_domain裁切搜索区域部分的图像时,只是将搜索区域以外的图像遮盖了,并不是彻底消失了。所以在参数设置没问题,匹配分数依然很高的情况下,只要模板的重心在搜索Roi内,依然能搜索模板。
 

三.解决措施

搜索区域以外的图像彻底遮盖掉,这样即使模板的重心还在搜索Roi内,也不能匹配到搜索区域以外的图像了。

Halcon代码:

dev_close_window ()
dev_open_window (0, 0, 648, 512, 'black', WindowHandle)
read_image (Image, '图像1.png')
*建模
*draw_region (OutRegion, WindowHandle)
*draw_region (InRegion, WindowHandle)
*difference (OutRegion, InRegion, RegionDifference)
read_region (RegionDifference, 'ModelRegion.hobj')
reduce_domain (Image, RegionDifference, ImageReduced1)
create_shape_model (ImageReduced1, 5, 0, 0, 'auto', 'auto', 'ignore_global_polarity', 'auto', 50, ModelID2)

*匹配
read_image (Image, '图像1.png')
*draw_circle (WindowHandle, Row2, Column2, Radius)
gen_circle (SerRegion, 433, 620, 100)
***↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓***
*这里取消掉reduce_domain得到搜索图像,而是采用paint_region方式
*reduce_domain (Image, SerRegion, ImageReduced3)
get_domain (Image, Domain)
difference (Domain, SerRegion, RegionDifference1)
paint_region (RegionDifference1, Image, ImageReduced3, 1, 'fill')
***↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑***
find_shape_model (ImageReduced3, ModelID2, -0.39, 0.79, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row7, Column7, Angle3, Score3)
get_shape_model_contours (ModelContours4, ModelID2, 1)
vector_angle_to_rigid (0, 0, 0, Row7, Column7, Angle3, HomMat2D)
affine_trans_contour_xld (ModelContours4, ContoursAffineTrans, HomMat2D)

dev_display (Image)
dev_set_color ('red')
dev_display (SerRegion)
dev_set_color ('green')
dev_set_line_width (2)
dev_display (ContoursAffineTrans)

C++源码:

if (m_RegionSer.AreaCenter(&HTuple(), &HTuple()) > 0)
{
    //_reduceImg = _inImg.ReduceDomain(_inRegion);
    HObject Domain, RegionDifference;
    GetDomain(m_TriggerImg, &Domain);
    Difference(Domain, m_RegionSer, &RegionDifference);
    PaintRegion(RegionDifference, m_TriggerImg, &imgReduced, 0, "fill");
}
else
{
    imgReduced = m_TriggerImg;
}

戳戳小手帮忙点个免费的赞吧,嘿嘿。


标签:Roi,domain,匹配,RegionDifference,Image,dev,Halcon,搜索,模板
From: https://blog.51cto.com/u_16436086/8938508

相关文章

  • [贴装专题] 基于halcon的拟合矩形边缘验证贴装精度
    作者:丶布布......
  • [Halcon] 2023.2月license分享(关注持续更新)
    作者:丶布布友情提示:Halcon18以下版本不再提供HDevelop试用授权License(只有运行License需要配合加密狗),请大家升级到最新版本!Halcon是一款商业化的视觉程序,它封装了很多方便的强大的图像处理算法,很多视觉项目都有用它,与visionpro一样,都是一款商业化的软件,加密狗相当的贵,不过Halcon......
  • 关于Android图像Bitmap类你要知道的一切
    Bitmap介绍Bitmap是一种图像文件格式,它由像素阵列组成,每个像素都有自己的颜色信息。在计算机图形学中,Bitmap图像可以被描述为一个二维的矩阵,其中每个元素代表一个像素的颜色值。Android中的Bitmap是用来表示图像的类,它可以用来加载、显示和处理图像。你可以通过Bitmap类来创建一个......
  • Android新手程序员提升技术最快的3个方法,你知道吗?
    前言对于刚刚进入职场的1-3年的程序员来说,首要任务无疑是全身心地投入到技术开发工作中,用最专业的技术知识和熟练度来开展工作。这项任务需要你花费大量的时间和精力去学习、探索和实践。只有充分掌握了当前技术的使用方法和功能,以及行业内的趋势和动态,你才能够在这个领域中不断进......
  • Android平台RTSP流如何添加动态水印后转推RTMP或轻量级RTSP服务
    技术背景我们在对接外部开发者的时候,遇到这样的技术诉求,客户用于地下管道检测场景,需要把摄像头的数据拉取过来,然后叠加上实时位置、施工单位、施工人员等信息,然后对外输出新的RTSP流,并本地录制一份带动态水印叠加后的数据。整个过程,因为摄像头位置一直在变化,所以需要整体尽可能的低......
  • android添加c语言的可执行程序
    在android源码的external目录下添加test目录。在test目录下新建test.c文件和Android.mk文件。test.c文件例如:#include<stdio.h>intmain(){printf("helloworld\n");return0;}Android.mk文件:LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LO......
  • Android应用开发长按拖拽-Flutter的LongPressDraggable控件回调函数onDraggableCancel
    onDraggableCanceled介绍LongPressDraggable的onDraggableCanceled回调在拖动被取消时触发。拖动可能会被取消,例如用户在拖动开始后移动了太快或在放置之前取消了拖动。onDraggableCanceled的使用以下是如何使用onDraggableCanceled的示例:LongPressDraggable<int>(//......
  • Android创建引导时的镂空View漏空view
     importandroid.graphics.RectFimportandroid.view.Viewimportandroid.view.ViewGroupobjectMyGuideUtil{/***@baseView在哪个view基础上进行镂空*/funguideMain(baseView:View){vallocation=IntArray(2)baseView.ge......
  • prometheus告警记录——grafana模板
    grafana面板{"annotations":{"list":[{"builtIn":1,"datasource":{"type":"datasource","uid":"grafana"},......
  • 优测云服务平台总结Android开发常见风险及解决方案
    Android作为一个普及度、成熟度极高的平台,每天都有大量新APP涌现。开发一款Android应用,除了要有新颖的创意和高效的性能,保证安全性也是不容忽视的问题。俗话说打铁还需自身硬。接下来,我们会陆续与大家分享一些常见、不常见的代码风险问题,希望对您的Android开发工作有一定的......