本发明属于数字视频图像处理与显示技术领域,涉及一种OSD(OnScreen Display,屏幕显示)的实现方法及系统。
背景技术:
在多媒体数字图像处理技术的运用中,视频检测系统常常是关注的重点。常用的视频图像叠加方法有两种:
1)使用叠加芯片进行叠加
2)使用计数器计算像素点进行叠加
这两种方法只能适用于叠加简单字符,很难支持复杂图形,故OSD所包含的信息量少。而且在进行图像叠加时字符会完全覆盖原视频图像的信息,并不支持透明度的调节,不能根据视频叠加融合场景的变化进行适应。另外这两种方法在使用时需要配置复杂的外围电路,如字符字模点阵存储器等。硬件电路设计比较复杂、使用不方便、稳定性差,且多数OSD不能编辑。OSD所用到的每一个字符也需要事前进行点阵描述和额外的空间进行存储,维护管理成本高。
本发明采用ARGB颜色空间的像素级图像数据叠加融合,可以解决以上问题。格式为ARGB的视频图像单一像素点的颜色为32位值:alpha、红色、绿色和蓝色各8位。存储在Alpha通道内的alpha值指示颜色的透明度,表示颜色与背景色的混合程度。即一个像素点的透明度可被视为区间[0,255]的随机变量,其中0表示完全透明的颜色,255表示完全不透明的颜色。直接对图像中的像素点进行数据运算,实现像素级的图像叠加融合。给定源颜色的三个分量(红色、绿色和蓝色)都按照以下公式与背景颜色的相应分量混合:
显示颜色=源颜色×alpha/255+背景颜色×(255-alpha)/255
技术实现要素:
本发明提供一种基于OMAP芯片的透明度可调的视频图像叠加方法及系统,旨在解决现有OSD实现方法编辑灵活性差和开发成本高的问题,其包括以下:
用户操作模块,采集模块,存储模块,ARM控制模块,DSP运算模块和显示模块。用户通过用户操作模块的交互界面选择想要叠加显示的图片及其透明度值,将OSD图片预处理后写入存储模块的缓冲区,OMAP芯片ARM控制模块采集模块获取特定格式的实时视频数据,OMAP芯片DSP运算模块根据设定的透明度值将实时视频数据和图片数据进行像素级的加权计算,显示模块通过LCD屏显示最终叠加融合效果。其中混合透明度值支持0~255共256级的调节。
具体的,采集模块使用CCD摄像头和TVP5146M2解码芯片,采用帧缓冲队列的形式获取YUV格式的视频数据。
具体的,ARM控制模块和DSP运算模块通过DSPlink通信,共享SDRAM数据缓冲区。
本发明通过DSP的运算能力,它充分利用了空间域处理计算简单的特点,避免了频域处理的复杂处理过程,在实时视频上叠加透明OSD的整个叠加过程与用户所选择图片的复杂度无关,支持混合透明度的实时修改,提高了OSD的灵活性和便捷性。
附图说明
图1为本发明处理流程框图;
图2为测试OSD图片omap.rgb;
图3为一帧实时采集的视频图像;
图4为视频图像与测试图片叠加融合的效果1;
图5为视频图像与测试图片叠加融合的效果2;
图6为视频图像与测试图片叠加融合的效果3;
具体实施方式
下面结合附图和实例对本发明进一步说明
用户通过交互界面从程序的当前目录下选择所需叠加的OSD图片,并设置整体混合透明度值参数alpha,其中数值范围为(0~255),共256级。所选取的OSD图片数据会被加载到OSD窗口,并记录图片的宽度参数i和高度参数j。
其中实时视频数据透明度值为alpha,OSD图片透明度为255-alpha。可参见图2,一张大小为400x272的测试图片,用于和实时视频图像叠加融合,从中能看出OSD测试图片为完全非透明图片,透明度值默认为255。
获取摄像头设备的性能参数,读取采集视频图像的制式并记录采集的YUV视频图像的具体存储格式,图像宽度参数m和图像高度参数n。通过CCD摄像头和TVP5146M2解码芯片获取实时视频数据,可参见图3为不进行叠加融合时,通过摄像头采取的一帧视频图像,其大小为720x576,该图像的透明度值默认为255,即非透明。
OMAP芯片ARM控制模块控制实时视频数据采集的帧缓冲队列,采集到的YUV格式实时视频数据会传输到DSP运算模块。
DSO运算模块根据YUV视频数据的具体存储格式(如4:4:4或4:2:2等),选择不同的DSP算法将单帧视频数据转换到ARGB颜色空间,将视频数据加载到视频窗口。其中单一颜色通道的计算结果值若大于255时则设置为255,若计算结果值小于0则设置为0。其中根据程序启动时输入的alpha值,对单帧视频图像的所有像素点进行透明度值设置。
以YUV422转换为ARGB为例:
ARGB(m,n)=alpha(m,n)+R(m,n)+G(m,n)+B(m,n)
其中ARGB(m,n)为一帧ARGB图像中第m行,第n列的像素值
alpha(m,n)为一帧ARGB图像中第m行,第n列的透明度值
1)R颜色通道的转换
R(m,n)=[1192*[YUV(m,n)-16]+1634*[YUV(m,n+3)-128]]>>10
2)G颜色通道的转换
G(m,n)=[1192*[YUV(m,n)-16]-833*[YUV(m,n+3)-128]-400*[YUV(m,n+1)-128]>>10
3)B颜色通道的转换
B(m,n)=[1192*[YUV(m,n)-16]+2066*[YUV(m,n+1)-128]]>>10
最后OSD窗口和视频窗口进行叠加显示,通过DVI输出接口与LCD屏连接,可以直接观察叠加融合效果,显示完一帧视频图像后,将当前帧缓冲重新放入队列尾,并从队列头取出新的帧缓冲,进行下一帧视频图像的叠加显示,直至停止采集图像。其中叠加区域的像素点值会根据视频图像和图片图像各自的透明度值进行加权混合,非叠加区域则直接显示原视频图像。对叠加融合后的单一像素点计算如下:
显示数据=视频数据×alpha/255+OSD图片×(255-alpha)/255
叠加融合区域:
非叠加融合区域:
图4,图5,图6是在不同的alpha输入值下本算法的处理效果,可以看出融合叠加后的图像很好的同时保留了视频图像和测试图片的图像信息,没有造成图像失真或模糊。
本发明未经描述的技术特征可以通过或采用现有技术实现,在此不再赘述。当然上述说明并非是对本发明的限制,本发明也并不限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、添加,也应属于本发明的保护范围。