图像采集模块 、 存储模块 、 VGA驱动模块、图像处理模块
存储模块SDRAM
SDRAM中存储两帧相邻灰度图像的数据,使用VGA驱动程序将两帧数据同时从SDRAM中取出,使用中值滤波将两帧数据进行平滑操作,去噪。 对图像信息进行差分,
图像处理模块:帧间差分法 灰度值变化大的为运动目标
不同帧对应像素点相减,判断灰度值的绝对值。
二值化 膨胀 腐蚀算法是用来扩展边界的,然后求出边界的区域,叠加到原图像上。。得到运动目标的检测。
在SDRAM中存储两帧相邻灰度图像的数据,使用VGA驱动程序将两帧数据同时从SDRAM中取出。使用中值滤波算法将两帧数据分别进行滤波平滑噪声,对图像信息进行差分。
差分后的二值化像素群使用膨胀算法拓展边界,稳定检测效果,通过最小包围盒模块确定二值化图像边界,画出包围盒方框。将方框叠加在原图像上并输出即可完成对运动目标的检测。
差分、二值化、膨胀+腐蚀的形态学滤波扩展边界、
将两帧图像数据存储于同一地址存储空间中取出时序更加简单。两帧图像在取出时拥有相同的行场同步信号时序,数据也自然对齐,有利于后续图像算法的进行。
对于同一地址空间写入两次数据,第一次写入的数据将会被第二次的数据覆盖。
为了解决这个问题,一般的存储器都会提供数据掩码功能。通过掩码屏蔽特定位置的数据写入便可防止数据覆盖。
SDRAM提供了数据掩码引脚DQM[1:0],DQM真值表如表所示,当DQML引脚为高电平时屏蔽低字节数据的写,当DQMH为高电平时屏蔽高字节数据的写入。
本设计使用的SDRAM芯片存储数据位宽为16比特。而从摄像头采集的RGB565格式数据为16比特,SDRAM不能同时将两帧RGB图像存储。因此在存入SDRAM前先将RGB格式转换为YCbCr格式并提取亮度分量作为灰度图像,这时图像数据的位宽为8比特可以将两帧图像存于SDRAM高低位中。
YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量 RGB888到Ycbcr444
Ycbcr444
YUV三个信道的抽样率相同,因此在生成的图像里,每个像素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。
对于图像数据此时应该存放于高位还是低位可以通过对图像场同步信号的监测来实现。当检测到场同步信号的下降沿时说明本帧显示结束即将开始下一帧显示。因此可以使用帧标志信号,每一帧画面结束时对帧标志信号进行翻转。通过帧标志信号就能够准确的计算本帧数据存放在低位还是高位。SDRAM掩码及帧标志控制关系如表所示。
基于灰度的帧差法:
帧间差分法是通过两帧相邻图像间做差并选取合适的阈值对图像进行二值化从而选取出运动的物体,算法流程,f(x, y)为灰度差分图像,D(x, y)为帧间差分图像,gk(x, y)、gk-1(x, y)为相邻两帧灰度图像,差分阈值为T。
灰度差分后二值化。膨胀 腐蚀 算法
将两帧相邻图像对应像素进行差分并取绝对值获得灰度差分图像,将灰度差分图像与预设阈值作比较,将大于阈值的像素划分为运动物体。
形态学处理算法:
从图像中提取用于表达和描绘区域形状的图像成分,如边界,骨架。
腐蚀: 腐蚀缩小或细化了二值图像中的物体,种操作将小于结构元的图像细节从图像中滤除。腐蚀是原图的高亮部分被腐蚀,
膨胀: 将断裂的线段连起来。膨胀是图像中的高亮部分进行膨胀
先膨胀再腐蚀: 平滑轮廓的一部分,它通常会弥合较窄的间断和细长的沟壑,消除小的孔洞。填补轮廓线中的断裂。