数字图像第四讲作业
问题一:高速公路的上方安装一台每秒钟可以拍摄 30 帧静止画面的摄像机, 高
速公路的管理方希望能够借助该摄像机检测到超速行驶的车辆. 请就该问题进行
讨论,找出检测超速行驶车辆的解决方案。(为了使问题简化,可以假设摄像机视
野内之会出现一辆汽车)
问题可简化为用摄像头拍摄一个兵乓球下落 AVI 视频, 在 matlab 中用 aviread()
读入视频, 从而求出下落速度.
Solution:
分析:
1.用 aviread() 读入视频,然后读入两帧图像 I1 和 I2,进行相减操作,除去背景,
得到两个小球的图像 I3,程序实现为 I3=(I1-I2)+(I2-I1)。查看 I3 的灰度直方图
选
择合适的阈值,对 I3 进行二值化,得到二值化图便于操作。
2.通过程序获知小球所占像素的首尾位置。由于小球是下落的,因此只要求出
在垂直方向上的首尾位置即可。首先,将 I3 在垂直方向上进行投影得到一维
的矩阵 S=sum(I3')。然后通过以下一段代码获取两小球的分界点 b(不是唯一
的),
for i=1:m-1
if(S(i)==0)&(S(i+1)>0)
b=i-1;
end
end
以b点为分界线分别检测第一个和第二个小球的最上部、最下部占的像素
head1、
tail1、tail2、head2。思路如下:从1到b进行搜索,如果有一像素的i满足S(i)==0
且S(i+1)>0则i+1点即为第一个小球的最上端像素位置。其他同理。
3.求小球某时刻的下落速度。先求小球在图像中垂直方向上占的像素数L0=tail1-
head1+1; 再 求 出 小 球 在 两 帧 的 时 间 里 运 行 距 离 所 占 的 像 素 数 L=head2-
head1+1;根据比例关系以及小球实际直径为l0=0.04可求得小球实际下落高
度 为 l=L*l0/L0 。 小 球 在 两 帧 之 间 下 落 的 时 间 可 求 为 time=(56-52)/
attribute.FramesPerSecond,因此小球再者两帧的中间时刻下落速度为:
v1=l/time。
4.求小球下落加速度a。根据3可分别求出第54和53两帧时刻的小球下降速度v1
和v2,可求得加速度为:a=(v1-v2)*attribute.FramesPerSecond。
评论1