实验6,运动目标跟踪算法与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对图像进行阈值分析,并进行二值化处理
确定目标在像素平面上
结束
通过以形心位置为中
含目标的矩形框一. 实验名称:运动目标跟踪算法设计与实现 二. 实验目的
1. 熟悉各种图像预处理方法,如直方图处理、图像去噪声、图像增强与复原、图像变换等,了解这些方法在图像分析与识别、目标检测及跟踪等各种应用中所起的作用。
2. 熟悉基本的图像分割原理。
3. 能够利用MATLAB 工具完整实现从图像预处理、图像分割、特征提取与分析及各种实际应用的完整流程。
4. 该实验为一个综合设计及应用的实验,目的是要求学生综合利用学到的光电图像处理知识,解决图像识别、目标检测及目标定位与跟踪问题。进一步深入理解光电图像处理的重要性,提高学生利用光电图像处理基本理论、方法等解决实际问题及提高分析问题的能力。
三. 实验原理及步骤
1. 序列图像中的运动目标形心跟踪
(1) 序列图像的读取与显示
本实验提供了200 帧的图像序列,为BMP 文件,文件名后缀的序号按场景出现的先后顺序排列。
(2) 图像分割
首先,对图像进行必要的阈值分析。根据实际情况自行确定合适的阈值后,再对图像进行二值化处理。
(3) 形心计算
在分割的单帧图像上,计算图像中目标区的形心坐标(Xc ,Yc ),确定目标在像素平面上的位置坐标。
(4) 形心跟踪
① MATLAB 确定跟踪波门:即以形心位置为中心,在图像中包含目标的区域添加一个合适的矩形框(如取32×16
pixels ,32×32 pixels ,64×32 pixels 等),
② 实时跟踪:循环读取序列图像,对每帧图像均计算目标区的形心坐标,
连续绘制包含目标区域的波门(即矩形框)。实现对200 帧序列图像中运动目标的实时稳定跟踪。
2.序列图像中的运动目标相关跟踪
实验原理及步骤如下:
(1)序列图像的读取与显示
同实验内容1,序列图像数据另选。
(2)参考模板制作
在起始帧图像中,手动选取包含目标的矩形区域(根据目标尺寸,确定模板尺寸)。另(缓)存为预制图像模板数据。
(3)模板匹配
①确定搜索区域大小:在当前帧目标区域扩大适当范围
作为下一帧图像的搜索区域。
②确定匹配准则:MSE、MAD、NCC 或MPC 等(选
其一种),进行搜索区域的匹配度(相似度)计算,画出搜
索区域内的相似度3D曲面图(画连续2 帧之间的搜索过程的
结果即可),确定最佳的匹配位置。视频数据若为彩色图像,可先进行灰度化处理,然后用像素灰度值进行计算。
③实时跟踪:重复步骤①-②,实现序列图像中的目标的连续稳定跟踪。
四.实验结果及分析
1.序列图像中的运动目标形心跟踪
通过对形心的定位,可以实现更好的目标跟踪
制作参考模版,确定搜索区域大小
读入一副图像I
确定匹配准则和最佳的匹配位置
结束
进行目标的实时跟踪
2.序列图像中的运动目标相关跟踪
该实验采用MAD最小平均绝对差进行目标跟踪,通过前后两帧的最小差,可确定目标位置,实验结果与理论相符。
五.实验心得体会和建议
●心得体会:通过该试验不仅使我加深了对之前做过的图像预处理的方法的理
解,同时提高了自己运用这些知识的综合能力。
●建议:使用多种匹配准则,进行搜索区域的匹配度计算。
六.程序源代码
1.序列图像中的运动目标形心跟踪
path='E:实验6\CODE\image200s\';
filecount = 200;
for i=1:filecount
name=num2str(i);
if i<=9
filename=strcat('0000000',name, '.bmp');
elseif i<=99
filename=strcat('000000',name,'.bmp');
elseif i<=199
filename=strcat('00000',name,'.bmp');
end
I=imread([path filename]);
I1=im2bw(I,0.75);
[m n]=size(I1);
k=0;
xc=0;
yc=0;
for a=1:m
for b=1:(n-30)
if I1(a,b)==0;
k=k+1;
xc=xc+a;
yc=yc+b;
end
end
end
imshow(I1,[]),rectangle('position',[yc/k-32,xc/k-16,64,32]); title(['Frame NO. ' num2str(i)]);
pause(0.01);
end
2.序列图像中的运动目标相关跟踪
path = 'E:实验6\CODE\f16takeoff_396s\';
prefix = '';
fmt = '.jpg';
nframes = 396;
I0=rgb2gray(imread('E:实验6\CODE\f16takeoff_396s\001.jpg')); I0=double(I0);
L=10;
x0=90;y0=130;
height=40;width=110;
M1=I0(x0:x0+height,y0:y0+width);
follow=zeros(2,1);
for k = 1:nframes
fnum = num2str(k, '%03d');
fileName = strcat(path,prefix,fnum,fmt);
source=imread(fileName);
sourceImg =im2double(rgb2gray((source)));
A=zeros(L+1,L+1);
for i=(x0-L/2):(x0+L/2)
for j=(y0-L/2):(y0+L/2)
M2=sourceImg(i:i+height,j:j+width);
A(i+(L/2)+1-x0,j+(L/2)+1-y0)=sum(sum(abs(M2-M1))); end
end
[q,p]=find(A==min(min(A)));
x1=x0-(L/2)+q-1;
y1=y0-(L/2)-1+p;
imshow(source),hold on
rectangle('Position',[y1 x1 width height],'edgecolor','k'); title(['Frame NO. ' num2str(k)]);
x0=x1;
y0=y1;
M1=sourceImg(x0:x0+height,y0:y0+width);
MAD(1:1+height,1:1+width,k)=1/(width*height)*M1;
pause(0.01);
end
figure(2),mesh(MAD(1:1+height,1:1+width,1));title('相似度/最小阈值')
报告评分:
指导教师签字: