篮球运动轨迹 项目报告
图
像
处
理
三
级
项
目
报
告
册
项目名称:篮球运动轨迹的确定 指导教师:赵彦涛
组员:李健楠,马兰女,邱思逸,廖善真 日期:2013年12月10日
摘要:
本小组的课题是通过图像处理的方法探索已知图片如何求取篮球运动轨迹,主要是运用了帧差法,二值化,灰度化,中值滤波,确定中心点的坐标,坐标的相对变换等编程知识与图像处理的知识相结合,实现预期想要的结果,并最终求出篮球运动轨迹,完成课题。 关键字:帧差法,二值化,中心点坐标,中值滤波
前言:
目的和范围:为了通过编程,达到通过特定程序实现在给定图片或视频能够找出其中核心运动物体的运动变化情况,并绘制出随时间的运动轨迹曲线。本组成员应课题要求,主要是针对图片方面进行的编程和研究。在现有的程序的基础上稍作改动可完成视频类型的读取计算。
预期结果:项目的预期结果为能过通过程序,读取图片,最终出现相关的运动轨迹曲线。 组内分工:组长李健楠,主要负责核心部分的编写及最后的整合,组员马兰女,主要负责查找相关资料,并进行图片读取部分和绘制曲线部分的程序编写,组员邱思逸,主要负责查阅背景资料,和相关文献,及提供思路,和程序修改调试,组员廖善真,负责后期相关内容的整合和ppt的制作文档书写。
正文:
本组项目主要分为5个主要部分:1.图片的读取,2.通过帧差法求的相邻两张图片的变化,3.二值化和中值滤波,4.中心点的确定,5.绘制曲线。
1.首先,对已知60个图片进行编号,建立空的细胞矩阵,然后用for循环将图片读入并存放在细胞矩阵中。
2.通过对细胞矩阵中的数据进行利用,然后将相邻两张图片进行相减,得到两张图片中的差异部分,其中就运用了帧差法。
帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的方法,它可以很好地适用于存在多个运动目标和摄像机移动的情况。当监控场景中出现异常物体运动时,帧与帧之间会出现较为明显的差别,两帧相减,得到两帧图像亮度差的绝对值,判断它是否大于阈值来分析视频或图像序列的运动特性,确定图像序列中有无物体运动。图像序列逐帧的差分,相当于对图像序列进行了时域下的高通滤波。在对相减后的图片进行二值化处理,通过不断地调试的到最佳的阈值,是图像只有黑白两种颜色。图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化
3,二值化后的图像发现存在一定的噪声,这对中心的确定有很大的影响,因此进行了中值滤波,一次后发现仍有微小噪声,再进行一次滤波尝试,消除噪声。中值滤波法是一种
非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。
4,中心的确定是程序的核心部分,通过for循环分行和列找到每副处理后的图像的第一个行的白点,最后一个行的白点,以及第一列和最后一列的白点,然后两个坐标相减除2,并进行坐标的平移,得到中心点的坐标。
5,通过中心点的坐标,将他们存入一个空的矩阵中,然后通过plot函数画出曲线。 主要程序:
I=cell(1,60);
bw=cell(1,60);
a=cell(1,60);
rows=240;
cols=320;
l=1:59;
p=1:59;
q=1:59;
toplen=0;
tpln=0;
leftsi=0;
lftln=0;
for b=1:60
m1=imread(['C:\Users\Administrator\Desktop\
\ball\',int2str(b),'.jpg']);
m1=rgb2gray(m1);
I{b}=m1;
end
for b=2:60
a{b-1} = abs(I{b}-I{b-1});
a{b-1}= im2bw(a{b-1}, 0.1);
a{b-1}=im2double(a{b-1});
a{b-1} = medfilt2(a{b-1});
a{b-1} = medfilt2(a{b-1});
figure,imshow(a{b-1});
cou=1;
for h=1:rows 三级项目
for w=1:cols
if(a{b-1}(h,w)==1)
toplen = h;
if (cou == 1)
tpln=toplen;
end
cou=cou+1;
break
end
end
end
coun=1;
for w=1:cols
for h=1:rows
if(a{b-1}(h,w)==1)
leftsi = w;
if (coun == 1)
lftln=leftsi;
end
coun=coun+1;
break
end
end
end
disp(b-1);
disp(tpln);
disp(toplen);
disp(lftln);
disp(leftsi);
widh=leftsi-lftln;
heig=toplen-tpln;
widt=widh/2;
disp(widt);
heit=heig/2;
with=lftln+widt;
heth=tpln+heit;
p(b-1)=with;
q(b-1)=heth;
end
plot(200-q,'m-');
figure,h=plot3(l,p,200-q,'g-');
结果与讨论:
50060
200
180
160
140
120
100
80
60
40
[**************]
如图所示,篮球运动的轨迹成上下震动,红色的为二维物体在纵向随时间变化的曲线,绿色的为三维(x,y)随时间变化的曲线。黑色图像为一幅二值化后的图像。由图像可以看到图片中的篮球随时间变化而上下震动。在红色曲线中可以看到球体运动近似为简谐振动。 结论:
本次的课题在我组成员的共同努力下,能够较为出色的完成了题目要求的内容。其中,通过查阅资料,借助图书馆,百度,谷歌学术等方式,了解了相关的内容,而调试程序的过程更是让我们更加受益匪浅,了解了matlab得书写方式,函数,以及如何利用已有函数实现我们想要的功能。让我们提高了编程的能力。这次的项目中,我们也犯了一些错误,走了一些弯路,在最后的结果上也有一些不足,但是在组员的齐心协力的,在我们目前的能力下已经尽全力的解决了其中的一些问题,相信在下一回的课题中我们会更有经验,能够做得更好。
主要参考文献:
百度文库,谷歌学术,超星电子阅览室数据库, Elsevier ScienceDirect期刊全文数据库、SpringerLink外文期刊全文数据库、 Wiley-Blackwell期刊全文数据库 www.scholar.google.com