太久没有踏上篮球场了,昨天终于酣畅淋漓了一次。虽然被虐、体力跟不上,但却满满激情,喜欢球场上的大家相互间协作、喝彩、拼抢…..爱好,还是需要坚持下去的!
言归正传,今天要学习的是利用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
traffic2
结果图
5.其他算子
1.转换图像数据类型
convert_image_type(Image : ImageConverted : NewType : )
2.图像作差
sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )
5.参考
1.Halcon官方参考文档