基于HALCON的视频对象分割及跟踪方法总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于HALCON的视频对象分割及跟踪方法总结相关的知识,希望对你有一定的参考价值。

参考技术A 前面总结了利用HALCON进行模板匹配的一些方法,讨论了利用物体形状的轮廓进行匹配的步骤和如何来优化匹配的速度,提高匹配的精度和速度,当然这两者之间本身也存在着制约,而在这两者之间找到一个适合自己要求的结合点,正是我们要研究和实验的。模板匹配并不是单纯的一个任务,它是一些其他工作的一个必备环节,比如物体识别、对象跟踪、检验产品、零件统计等等一些机器视觉应用。在很多情况下,模板匹配是个不错的选择。在前面总结模板匹配方法的基础上,利用HALCON做了一些视频对象跟踪的实验,并多次试验来调整程序参数优化跟踪过程,采用标准视频进行测试,将这些方法作了如下总结。

首先来看看HALOCN中的帧采集器(FrameGrabber),HDevelop提供这样一个函数来开启你采用的帧采集器(这里我的理解就是图像采集卡或工业摄像机)open_framegrabber(),这个函数中指定了HALCON目前支持的一些帧采集器的文件参数,主要有'BARRACUDA', 'BaumerFCAM', 'BCAM1394', 'BitFlow', 'DahengCAM', 'DahengFG', 'DFG-BW', 'DFG-LC', 'DirectFile', 'DirectShow', 'DT315x', 'DT3162', 'File', 'FireGrab', 'FirePackage', 'FlashBus', 'FlashBusMX', 'Ginga++', 'GingaDG', 'IDS', 'INSPECTA', 'Leutron', 'MatrixVision', 'MeteorII', 'mEnable3', 'MultiCam', 'Opteon', 'p3i2', 'p3i4', 'PT1000CL', 'PX', 'PXC', 'PXD', 'PXR', 'SaperaLT', 'TAG', 'TWAIN', 'uEye';除此之外,在官方网站上也在逐步推出新支持的一些采集卡,比如近期推出的支持大恒的DahengCAM的USB2.0接口(更多的信息请访问http://www.mvtec.com/halcon/news/)。由于实验条件有限,我在实验中只能采用标准的视频,有CIF和QCIF两种格式的。这个当中我也在摸索,read_sequence()只是读取无格式的图像数据,因为找不到如何直接打开视频文件,所以在实验时只能采用保存好的单帧图像。

在利用模板匹配进行跟踪之前,需要对选定的初始帧或者某一帧进行分割,比如在实验中,采用标准Akiyo视频文件(352×288),我选定初始帧进行分水岭的分割,然后采用马儿可夫随机场的分类,分割出前景对象和背景;也可以直接利用watersheds_threshold()进行阈值化的分割,当然分割的方法还很多,比如基于边缘的,基于区域增长的,基于阈值的,其中基于阈值的用的较多,里面也分为二值化,自动阈值,动态阈值等,各具特点,使用针对图像特征采用不同的方法。如果想进一步的获取精确的分割,可以采用数学形态学算子,这个可以根据具体需要选择不同的膨胀、腐蚀、开、闭操作的结合,这里就不多说了。

对已经分割好的初始帧建立模板,这里没有再确定某个区域,因为是采用已分割的图像。也可以先确定感兴趣区域(ROI),然后在对该区域建立模板,但这样获得的模板就不怎么精确了。接下来的步骤就更按模板匹配的方法来进行,用create_shape_model()来对初始帧创建模板,但这里要注意一点,Metric有个可选项,use_polarity(匹配时要求有相同的对比度),ignore_global_polarity(在全局上有对比度的情况下仍可匹配),ignore_local_polarity(即使局部灰度发生变化,也可找到模板,可以应用于遮挡条件)如果在非常低对比度下找到模板,可将MinContrast设置为一个相应小的值;如果即使在严重重叠条件下,仍可以认识模板,MinContrast应该大于噪声造成的灰度波动范围,这是为了确保模板的位置和旋转能被精确的找到。之后获取轮廓,照样使用inspect_template()监视模板。

再接下来就是跟踪的过程,因为是对单帧图像进行匹配,所以要读取这个视频文件的所有帧。如何自动读取多个图像文件也就成了一个问题?这里采用for循环,还是利用read_image(Image,’E:/实验图像/Akiyo/’+k$’d’)来读取,循环当中采用find_shape_model()来匹配,这个过程跟前面介绍的一样,不再细说。要重点总结的是如何来加速匹配以及模板更新的问题,因为考虑到由于视频对象变化过大,或者发生了非刚体的运动,这时某帧不能匹配,就需要重新针对该帧重新建立模板,便于后面帧的匹配。当然在这之前的跟踪过程中,对象与模板之间的测量匹配需设定一个阈值,两者之差在这个阈值之内,则认为是匹配的,否则是不匹配的。当出现不匹配时,记录下该帧;然后对这帧采用图像分割并分类,跟初始帧样建立新模板;于是继续后面的跟踪匹配。在实验中,我采用的视频图像有对象相对于背景变化不大的,比如新闻人、视频会议等;也有对象相对于背景变化大,但对象的运动是刚体运动;如果对于非刚体的运动,匹配过程会更复杂,考虑的问题也更多。

例如,采用claire标准视频图像序列(176×144),由于对象相对背景变化较小,在匹配中尽量不采用更新模板来匹配,这里可以放宽匹配的要求,比如在MaxOverlap参数设置中可以减小其值,将MinSocre的值尽量调小点,这样会增加匹配的时间,可以在匹配的前提下尽量增大Greediness的值,这个实验中我设置的值分别为MaxOverlap=0.3, MinSocre=0.35, Greediness=0.9,共有492帧,总共匹配的时间大约12秒左右。当然这里的时间还更计算机配置有关。对foreman视频序列,由于摄像机的运动,对象和背景都有较大变化,因此在这里匹配要放宽要求,在创建模板时将对比度设置大一点,而在优化过程中选取忽略局部对比度变化的参数,在找模板中将贪婪度(Greediness)设置较低值,并且匹配度也尽量设较低值,这样可以通过部分匹配来跟踪对象。

采用Vectra标准视频图像序列(352×288),汽车行走,可作为一个刚体运动,这时就需要更新模板了,因为在行走的过程中,汽车在转弯或遇到遮挡物时就无法跟踪了,这里暂时不考虑完全遮挡的情况。在这个视频中,汽车在途中会有一些树木的遮挡,遮挡面积不大,可以完整看到汽车的轮廓。这时在前面有转弯的地方,可以放宽匹配的要求,当遇到遮挡时,更新不能匹配的模板。这个视频有141帧,在前面100帧以内,可以很好的跟踪,而在以后出现了较大的偏差,这跟寻找模板的参数设置有关;由于更新模板需要消耗时间,所以整个跟踪匹配的时间会较长。在实际应用中,我们更应该考虑到跟踪的效果,即跟踪的准确性;如何提高视频对象跟踪的精确性和快速性也是需要进一步研究实验的。

这是我搜集的机器视觉halcon资料分享给大家,有需要的自己保存:

  全套链接: https://pan.baidu.com/s/1bXUX8ZLw9_MzrnHzymwG2g  提取码:vsps

未来视觉发展趋势是结合神经网络、深度学习进行相应的人工智能机器视觉开发。

我不能保证我所说的全部是对的,不同的人有不同的见解,但我能保证每一篇都是用心去写的,我始终认同“分享的越多,你的价值增值越大”,在分享中进步,越努力越幸运,期待我们都有美好的明天!

支持我的朋友们记得点波推荐哦,您的肯定就是我进步的动力。

图像分割基于matlab直方图的自适应阈值方法分割前景与背景含Matlab源码 2144期

一、一种基于直方图的实时自适应阈值分割方法简介

1 引言
在交通管理中,为了获得车辆的运动数据,需要对交通视频进行实时监测,从监测图像序列中检测出运动对象,并对运动对象进行分析处理,从而获得车辆和行人的运动数据。实时视频运动对象检测与跟踪是数字图像处理技术的一个主要部分,它是计算机视觉、目标识别与跟踪、安全监控等视频分析和处理的应用的关键技术。常用的视频运动目标检测算法主要有基于相邻帧差分的算法和基于背景图像和当前帧差分的算法。对于背景差法,其基本原理是将当前帧与背景图像进行差分来得到差图像,对得到的差图像还应作二值化处理,从而分割出运动目标。传统的目标分割方法主要包括:阈值法、边缘检测法和区域跟踪法等。其中阈值化方法由于计算简单、运算效率高,所以是图像分割的常用方法。
常用的二值化算法有,最大类间方差法,它是由大津(Otsu N.A)于1979年提出的,是基于整幅图像的统计特性,实现阈值的自动选取的。但是当目标和背景对比不明显即灰度相差不大或图像有噪声时,大津法 (Otsu) 的效果不理想。根据直方图进行分割,一般直方图呈现双峰形状,一个峰为背景,另一个峰对应目标,选择两峰之间的谷作为阈值T来进行分割,能得到较好结果,但是在光照和噪声影响下,不能形成双峰形状。另外对于差图像,其直方图呈现递减形状,而不是双峰形状,故其直方图自适应阈值的确定就不可能用到双峰谷底分割,针对这样的直方图提出了一种自适应阈值的方法,该方法主要思想为,将统计出的频率值从高到低排序,这样就形成了一条光滑递减的直方图曲线,将直方图最高点与最低点连接得到一条直线,然后取出直方图上的到该直线距离最大的点对应的灰度值作为阈值来进行二值化。该算法对每一个点计算距离时,计算量大,速度慢。鉴于此,本文提出了一种快速计算最大距离的方法,避免了大量的乘法运算。

2 一般自适应阈值法
在运动目标检测中,在用背景差方法获得差图像后,通过观察该图像直方图可以看出,直方图基本上是呈递减状态,如图 1 所示,为了保证直方图的递减,将该直方图频率排序,得到一组从高到低的频率,其直方图就绝对递减了,为了消除直方图锯齿,用高斯滤波进行平滑处理,下面就是寻找阈值,用以将图像分割成二值图。该算法步骤如下: (1)寻找直方图上的最高点和最低点,连接得到一条直线。
(2)在直方图上求每一点到该直线的距离。
(3)通过比较求出最大的一个距离,该距离对应的灰度值(横坐标)即为所求阈值T。
(4)用第三步求得的阈值T分割差图像,即:

二、部分源代码

close all;
[F_name P_name]=uigetfile(‘*.jpg’,‘Open a jpg’); %文件打开对话框
H= strcat(P_name,F_name);
image_H = imread(H);
[row column] = size(image_H);

%设定三个阈值
set_T = ‘S_T1:’,‘S_T2:’,‘S_T3:’;%设置三个阈值
answer = inputdlg(set_T);%打开输入对话框
if isempty(answer)
return;
end
S_T1 = str2num(answer1);
S_T2 = str2num(answer2);
S_T3 = str2num(answer3);

%original
figure;
imshow(image_H);
title(‘original’);

%S_T1
HH = zeros(row,column);
[r c] = find(image_H>S_T1);
index = sub2ind(size(HH),r,c);
HH(index) = 1;
figure;
imshow(HH);
title(['threshold = ’ num2str(S_T1)]);

%S_T2
HH = zeros(row,column);
[r c] = find(image_H>S_T2);
index = sub2ind(size(HH),r,c);
HH(index) = 1;
figure;
imshow(HH);
title(['threshold = ’ num2str(S_T2)]);

%S_T2
HH = zeros(row,column);
[r c] = find(image_H>S_T3);
index = sub2ind(size(HH),r,c);
HH(index) = 1;
figure;
imshow(HH);
title(['threshold = ’ num2str(S_T3)]);

%自适应阈值法
GrayLevelCount = 256;
image_HH = double(image_H);
histogram = imhist(image_H);
fg = histogram/(row*column);

mean_value = sum(sum(image_HH))/(row*column);
P = 0;
K_array = zeros(GrayLevelCount,1);
for GrayLevel = 1:GrayLevelCount %遍历灰度级
threshold_current = GrayLevel - 1;
P_out = sum(fg(1:threshold_current)); %前景outlook
P_back = 1 - P_out;%背景background

Mean_out = 0;
Mean_back = 0;
for i = 1:GrayLevelCount
    j = i-1;
    if i < threshold_current+1   %左侧取到阈值
        Mean_out = Mean_out + j*fg(i);
    else
        Mean_back = Mean_back + j*fg(i);
    end
end

三、运行结果





四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]左建军,吴有富.一种基于直方图的实时自适应阈值分割方法[J].毕节学院学报. 2014,32(04)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于基于HALCON的视频对象分割及跟踪方法总结的主要内容,如果未能解决你的问题,请参考以下文章

Halcon中模板匹配方法的总结归纳

基于HALCON的模板匹配方法总结 (转)

基于模糊集图像分割的人脸美颜

车辆分割和跟踪

CVPR 2021 | 基于Transformer的端到端视频实例分割方法

医学图像分割及应用