【Halcon】动态跟踪一

太久没有踏上篮球场了,昨天终于酣畅淋漓了一次。虽然被虐、体力跟不上,但却满满激情,喜欢球场上的大家相互间协作、喝彩、拼抢…..爱好,还是需要坚持下去的!


言归正传,今天要学习的是利用dual_threshold实现动态跟踪。
对于该种方法可以引申到简单抠图应用等。
1.算子
对符号图像进行阈值化
dual_threshold(Image : RegionCrossings : MinSize, MinGray, Threshold : )
2.理论
根据Threshold选择大于Threshold小于Threshold的区域,同时通过设置MinSize来去除一些干扰的小区域。区域的绝对最大灰度值小于MinGray将被直接截断。

该算子经常应用于Laplace操作之后,用于边缘检测;用于sub_image之后,用于对比两幅图像差别(本博文所用)。
3.代码

 * Threshold operator for signed images
 * 
dev_close_window ()
read_image (Traffic1, 'traffic1')
read_image (Traffic2, 'traffic2')
convert_image_type (Traffic1, ImageConverted1, 'int2')
convert_image_type (Traffic2, ImageConverted2, 'int2')
 * Subtract two images.
sub_image (ImageConverted1, ImageConverted2, ImageSub, 1, 0)
dual_threshold (ImageSub, RegionDiff, 500, 20, 10)
get_image_size (Traffic1, Width, Height)
dev_open_window (0, 0, 2 * Width, 2 * Height, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_part (0, 0, Height - 1, Width - 1)
dev_set_draw ('margin')
dev_set_colored (6)
dev_display (Traffic1)
dev_display (RegionDiff)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
 * Select regions based on gray value features
select_gray (RegionDiff, Traffic1, SelectedRegions, 'deviation', 'and', 20, 255)
dilation_circle (SelectedRegions, RegionDilation, 1.5)
reduce_domain (Traffic1, RegionDilation, ImageReduced)
binary_threshold (ImageReduced, Region, 'max_separability', 'dark', UsedThreshold)
 * Transform the shape of a region.
shape_trans (Region, RegionTrans, 'convex')
dev_set_draw ('margin')
dev_set_colored (6)
dev_display (Traffic1)
dev_display (RegionTrans)

4.结果
* traffic1

Image1

  • traffic2
    这里写图片描述

  • 结果图
    这里写图片描述
    5.其他算子
    1.转换图像数据类型
    convert_image_type(Image : ImageConverted : NewType : )
    这里写图片描述
    2.图像作差
    sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )
    这里写图片描述
    这里写图片描述
    这里写图片描述
    5.参考
    1.Halcon官方参考文档

猜你喜欢

转载自blog.csdn.net/y363703390/article/details/81216457