视频去交错:基于模糊控制的运动自适应算法(GPU实现)
2010-10-20 18:32
155 查看
源码下载
隔行扫描最初是解决模拟电视广播中阴极射线管(CRT)显示问题的一种方法。它被设计成在保持提供较高垂直分辨率和足够高的场更新速率的前提下,能保证信号占有的频率带宽。保持足够高的场更新速率对于避免CRT的可视化闪烁是非常必要的。
在现代的高分辨率显示设备上,这种隔行扫描视频存在着行间闪烁和运动边缘锯齿化等缺点。为了消除这些缺点,人们提出了很多种De-interlacing算法。这些算法包括从简单的场内插值算法到非常复杂的运动补偿(Motion Compensation)算法。
简单的De-interlacing算法,开销较低,但获得的图像质量较差。复杂的De-interlacing算法,获的图像质量很好,但开销也很惊人。这里介绍一个在图像质量和开销之间有较好平衡的运动自适应算法。
这个算法的基本思想就是:对于图像中的绝对静止区域,采用场间插值算法,以提高垂直分辨率;对于图像中的绝对运动区域,采用场内插值算法,提高时域分辨率,快速运动场景效果很好。对于图像中处于绝对静止和绝对运动之间的区域,计算出运动因子,同时采用场间插值算法和场内插值算法。
算法的关键是运动检测部分,运动检测失败会导致在运动区域采用场间插值算法,这会产生难看的交织现象;若运动检测过于灵敏会导致在静止区域采用场内插值算法,这会明显降低图像的垂直分辨率。为了在灵敏性和健壮性之间达到一个较好的平衡,这里使用一个模糊运动检测器。
算法示例如下图:
算法的缺陷之一就是要引入一场的时延。
算法至少在两个地方还可以优化,一是Motion_factor的卷积计算,这里采用3X3的卷积窗口,可以改变卷积窗口的大小如5X5等,也可以尝试改变卷积权重。二是X的计算,这里采用了场间插值和场内插值,可以考虑增加斜边缘插值等。
源码采用了GPU实现De-interlacing算法和渲染算法。
参考:Motion Adaptive Video Deinterlacing Using One Dimensional Fuzzy FIR Filters.
隔行扫描最初是解决模拟电视广播中阴极射线管(CRT)显示问题的一种方法。它被设计成在保持提供较高垂直分辨率和足够高的场更新速率的前提下,能保证信号占有的频率带宽。保持足够高的场更新速率对于避免CRT的可视化闪烁是非常必要的。
在现代的高分辨率显示设备上,这种隔行扫描视频存在着行间闪烁和运动边缘锯齿化等缺点。为了消除这些缺点,人们提出了很多种De-interlacing算法。这些算法包括从简单的场内插值算法到非常复杂的运动补偿(Motion Compensation)算法。
简单的De-interlacing算法,开销较低,但获得的图像质量较差。复杂的De-interlacing算法,获的图像质量很好,但开销也很惊人。这里介绍一个在图像质量和开销之间有较好平衡的运动自适应算法。
这个算法的基本思想就是:对于图像中的绝对静止区域,采用场间插值算法,以提高垂直分辨率;对于图像中的绝对运动区域,采用场内插值算法,提高时域分辨率,快速运动场景效果很好。对于图像中处于绝对静止和绝对运动之间的区域,计算出运动因子,同时采用场间插值算法和场内插值算法。
算法的关键是运动检测部分,运动检测失败会导致在运动区域采用场间插值算法,这会产生难看的交织现象;若运动检测过于灵敏会导致在静止区域采用场内插值算法,这会明显降低图像的垂直分辨率。为了在灵敏性和健壮性之间达到一个较好的平衡,这里使用一个模糊运动检测器。
算法示例如下图:
算法的缺陷之一就是要引入一场的时延。
算法至少在两个地方还可以优化,一是Motion_factor的卷积计算,这里采用3X3的卷积窗口,可以改变卷积窗口的大小如5X5等,也可以尝试改变卷积权重。二是X的计算,这里采用了场间插值和场内插值,可以考虑增加斜边缘插值等。
源码采用了GPU实现De-interlacing算法和渲染算法。
参考:Motion Adaptive Video Deinterlacing Using One Dimensional Fuzzy FIR Filters.
相关文章推荐
- Unity中基于RPC机制实现摄像头视频传输
- 第五部视频:CC2538之TinyOS合辑,一步一步实现你的基于6lowpan的CoAP应用
- 第一个cuda程序-基于VS2010+CUDA5.0 两个向量相加的GPU实现
- 图像处理常用算法GPU实现四:基于中值滤波的二值图像平滑
- 通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输(上)
- 基于live555实现rtsp视频直播
- 高效的六面体变换算法实现(二) —— 基于GPU的转换方式A
- [转]通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输(上)
- 基于live555和raspberrypi的摄像头模块实现视频采集、传输、播放的功能
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)
- 基于Chrome、Java、WebSocket、WebRTC实现浏览器视频通话
- 基于深度感知和运动信息的3D视频质量评价
- FFT算法实现——基于GPU的基2快速傅里叶变换
- 基于USB2.0的视频图像处理芯片实现方案
- 通过(Node Js||.Net)基于HTML5的WebSocket实现实时视频文字传输(上)
- android基于ffmpeg的简单视频播发器 三线程实现播放器(完)
- 基于PaaS通用校园办公云平台的设计与实现视频教程
- GPU上基于SIMD的实现模式与多核CPU上基于MIMD的实现模式各有什么优缺点
- 基于Red5的流媒体实时视频系统的设计与实现