3.3.3 视频图像的显示
由于视频图像实质上是由每个捕获周期里的静态图片组成的,所以我们可以利用QT的painter类的drawImage函数可以方便地将包含着RGB图像的QImage类输出到设备的frambuff里。QT对不同的情况提供了不同的drawImage重载,函数原型如下:
void drawEllipse ( const QPoint & center, int rx, int ry )
void drawImage ( const QRectF & target, const QImage & image, const QRectF & source, Qt::ImageConversionFlags flags = Qt::AutoColor )
void drawImage ( const QRect & target, const QImage & image, const QRect & source, Qt::ImageConversionFlags flags = Qt::AutoColor )
void drawImage ( const QPointF & point, const QImage & image )
void drawImage ( const QPoint & point, const QImage & image )
void drawImage ( const QPointF & point, const QImage & image, const QRectF & source, Qt::ImageConversionFlags flags = Qt::AutoColor )
void drawImage ( const QPoint & point, const QImage & image, const QRect & source, Qt::ImageConversionFlags flags = Qt::AutoColor )
void drawImage ( const QRectF & rectangle, const QImage & image )
void drawImage ( const QRect & rectangle, const QImage & image )
void drawImage ( int x, int y, const QImage & image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor )
3.3.4视频图像的处理
由于QT中的对于像素的存储是将RGB以及alpha值一起存储在qRgb变量类型里,所以在进行像素操作的时候必须将RGB三个颜色分量分离开。由于R、G、B三个分量的值分别存在于qRGB的第17~24位、9~16位、1~8位,所以只需将无关的位用&&方法屏蔽掉取出便可。Qt中提供了相应的方法:
int qBlue ( QRgb rgb )
int qGreen ( QRgb rgb )
int qRed ( QRgb rgb )
使用以上3个方法,我们可以方便的获得每个像素点的RGB值。
3.4图像动态侦测算法
图像动态侦测的关键在于选取合适的特征量来表示视频内容的变化程度,即特征值的选取。本算法来自帧对比算法的一种改进。由于所用的pxa270平台没有关于图像运算的DSP模块,所以本算法的着重点在于对每帧的像素点本身的变化进行运算。
与其它基于感应器的动态侦测方法相比,基于图像处理的自动聚焦算法的实现不需要额外的信号源和相应的接收传感器,这有利于缩小器件的体积以降低成本,并降低器件的功耗。
在这类算法中,分析处理模块直接对获得的视频图像进行处理,以获得与上一帧的平均每点像素差,并且将取得的值与阀值进行比较,从而判断图像是否发生了改变。因此,构造合理的判决函数就成了基于帧差的动态侦测算法算法的关键所在。理想的动态判决函数应该具有对突变和渐变的图像都有较好的敏感度,同时应具有较强的抗干扰能力。
3.4.1算法原理
当摄像头所监控的景象发生改变的时候,反映到图像的数据上就是像素点发生了变化。因此,两帧相邻的图像的像素差可以作为判断图像是否发生了变化的依据。但是由于光电的基本性质以及系统内部的电磁干扰,系统获取的图像数据中有可能存在并非源于实际景象变化的噪声,所以直接求像素点的差无法成为判断图像发生变化的依据。
但由于在系统条件不变的情况下,图像数据中的噪声可以被认为近似恒定不变的。所以如果是求平均每个像素点发生了多少变化的话,噪声对图像的影响便可以忽略不计。
在同一镜头中的视频图像由于变化不大,所以其帧差大致呈现出相对平均分布,且平均值较小。而在发生突变处的帧差则明显要比同一镜头内图像之间帧差的平均值大很多,在发生渐变时(主要指淡入淡出和慢转换),其帧差也会发生较大的变化。
因此,平均每点的像素差可以作为判断图像是否发生了变化的依据。
具体算法如下:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页