用CUDA实现DVD倍线(DVD画质转1080p)算法 对播放器选择resizer算法很有启发

来源:http://blog.21ic.com/user1/5184/archives/2009/61680.html

利用CUDA提供的纹理存储器和GPU内部的纹理流水线单元可以轻松实现各种算法的图像缩放处理,而且纹理流水线单元不占用SP流处理单元的计算资源。

尝试了5种算法(最邻近插值、双线性插值、双立方插值、双立方插值+锐化、双线性插值+快速算法的锐化)用Geforce GTX 285通过CUDA来处理一张DVD画质的样品图片(960×540),使其放大到1920×1080高清分辨率。局部效果如图:

1、最邻近插值

 

马赛克很严重。是最快的算法,处理时间0.24ms(每秒86亿个像素)。

2、双线性插值(实时3D渲染中常用的纹理插值算法)

没有马赛克,但颜色过渡边缘有少量锯齿。由于GPU纹理流水线本身支持硬件双线性插值,处理速度很快,也是0.24ms(每秒86亿个像素)。

3、双立方插值(Photoshop缩放图像的默认算法)

完全没有了锯齿,但略显模糊。这里采用了快速算法,处理时间0.61ms(每秒34亿个像素)。

4、双立方插值+锐化(3×3拉普拉斯算子)

颜色边缘过渡和字幕的边缘都很清晰,有点像1080p了。是最耗时的算法,处理时间4.5ms(每秒4.6亿个像素)。

5、双线性插值+快速算法的锐化

用了固定为2倍的快速锐化放大算法,有少量锯齿,效果不如双立方插值+锐化,比双线性插值要稍清晰。处理时间1.24ms(每秒17亿个像素)。

展开阅读全文

没有更多推荐了,返回首页