【halcon每日一练】

== 测试图片==


原图


形态学腐蚀+膨胀

Tips:通常物体粘连度不高,且目标与背景对比度比较大的情形下,采用这种方法可有效获取物体分离后的区域。

*01 方式1--腐蚀+膨胀+分离物体与原图threshold后的区域求交集实现粘连物体分离
gen_empty_obj (splitedRegion)

median_image (Image, ImageMedian, 'circle', 3, 'mirrored')
threshold (ImageMedian, Regions, 96, 255)
connection (Regions, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions, 'area', 'and', 0, 2500)
concat_obj (splitedRegion, SelectedRegions, splitedRegion)

*为分离的对象
difference (ConnectedRegions1, SelectedRegions, RegionDifference)
union1 (RegionDifference, RegionUnion)
erosion_circle (RegionUnion, RegionErosion, 11.5)
connection (RegionErosion, ConnectedRegions)
dilation_circle (ConnectedRegions, RegionDilation, 11.5)
intersection (RegionDilation, RegionUnion, RegionIntersection)

concat_obj (splitedRegion, RegionIntersection, ObjectsConcat)
count_obj (ObjectsConcat, Number)

== 方式一效果==
在这里插入图片描述

距离转换+分水岭

Tips:该方式也常用于物体粘连度不高,且目标与背景对比度比较大的情形下,采用这种方法可有效获取物体分离后的区域。若背景有噪声等干扰,可对原图进行相应的平滑处理。

*02 方式2--distance_transform+分水岭算法+盆地区域与原图threshold后的区域求交集实现粘连物体分离
distance_transform (Regions, DistanceImage, 'octagonal', 'true', Width, Height)
*因为距离变换图像输出是有符号INT4,灰度表示范围为(-21474836482147483647)
convert_image_type (DistanceImage, ImageConverted, 'byte')
*转换后的图像由于灰度太低不利于观察,因此反转图像。
invert_image (ImageConverted, ImageInvert)
*灰度灰度延申至0-255,对比度更明显
scale_image_max (ImageInvert, ImageScaleMax)
*分水岭算法
watersheds_threshold (ImageScaleMax, Basins, 25)
dev_display (Image)
dev_display (Basins)
*将盆地区域与threshold后的区域求交集,获取粘连物体
intersection (Basins, Regions, RegionIntersection1)
count_obj (RegionIntersection1, Number1)

== 方式二效果==
在这里插入图片描述

NCC互相关性匹配

Tips:

  1. NCC本质是比较一幅模板图像和搜索图像之间的相关性,也就是说可以将模板看成整幅图像的一个子集,以可变搜索窗口去扫描整幅图像,若搜索到的纹理【灰度共生矩阵】、灰度【均值,方差等】较为相似,则它的NCC值越接近于1;表示相关性很高,如果是-1,表完全无关;
  2. 粘连性较高的场合,通常用于统计个数,不适用于定位精度高的场合。
*03 方式3--NCC模板匹配
*创建NCC模板
*创建单个物体模板
gen_rectangle1 (ROI_0, 286.362, 255.149, 344.883, 340.002)
reduce_domain (Image, ROI_0, ImageReduced)
threshold (ImageReduced, Region, 128, 255)
opening_circle (Region, RegionOpening, 1.5)
reduce_domain (Image, RegionOpening, ImageReduced2)
create_ncc_model (ImageReduced2, 'auto', rad(-180), rad(180), 'auto', 'use_polarity', ModelID1)
*NCC模板匹配
find_ncc_model (Image, ModelID1,  rad(-180), rad(180), 0.5, 0, 0.5, 'true', 0, Row1, Column1, Angle1, Score1)
dev_display_ncc_matching_results (ModelID1, 'red', Row1, Column1, Angle1, 0)
disp_message (WindowHandle, '方式三获取分离个数:'+|Row1|, 'window', 12, 12, 'blue', 'true')

== 方式三效果==
在这里插入图片描述
从图中,可以看到对于重合度接近50%的物体也能够有效分离,但由于目标形变较大导致匹配到的精度不是很高,因此该方法适用性场合需要自己去考量。图中最下面三个缺损的目标由于和模板差异性较大因此未能匹配上。这种情况我们可以单独设定面积阈值先将残缺的目标先分割并保存下来,然后仅针对完整的目标及粘连的目标进行NCC匹配。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星wen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值