实验6,运动目标跟踪算法与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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('相似度/最小阈值')

报告评分:

指导教师签字:

相关文档
最新文档