WMPCam: Capture pictures from AVI or DVD stream into BMP files, then enhance them with image average technique, or enlarge them with cubic interpolation.
作者:马健
邮箱:stronghorse@163.net
主页:http://stronghorse.yeah.net
前言
使用说明
一、截图
二、批量放大
三、图像平均
四、指定图像浏览器
附录A 鸣谢
附录B 版本更新记录
以前为了从动画VCD中截图,我曾开发过自带MPEG I、II解码器,能够直接从VCD中解码图像帧的工具软件--Mpeg2Jpeg。后来开发过集Real
Player和Windows Media Player于一体的截图软件--MediaCam。由于在MediaCam中过度的集成妨碍了对播放器本身功能的发挥,所以现在又将MediaCam中的WMP部分拆出来,成为WMPCam。WMPCam的功能如下:
- 能够按照指定的频率,将Windows Media Player所支持的媒体流(包括AVI、ASF等)中的图像截取为JPG或BMP文件。
- 采用“图像平均”技术,对截取的画面进行补偿,提高质量。
- 能够将指定目录下的所有文件批量放大到1.5倍、2倍、3倍,或640*800、800*600、1024*768。由于本程序采用三次样条插值技术对图像放大造成的失真进行补偿,可以获得比Photoshop
6.01更好的放大效果。不过WMPCam没有图像处理功能,如果需要编辑图像,请用Photoshop等图像编辑工具。
与其它软件相比,WMPCam具有以下优点:
- 超级解霸、PowerDVD等播放软件在播放流媒体时也能截图,但一次只能截一张,不能连续截,因此在截图的时候需要眼疾手快。而WMPCam可以按指定的频率连续截图,然后在截出的一堆图中慢慢挑,或者用图像平均功能合成一张高质量的图。
- 与HyperSnap等通用截图软件相比,WMPCam集成了对处理视频截图处理非常有用的图像平均和放大功能。尤其是图像平均功能更是本软件独有的功能。
但程序在使用时也有以下限制:
- 在使用本程序前,系统中必须先安装Windows
Media Player及其插件,并保证它们工作正常。WMP不能播放或播放不正常的流媒体文件,用本程序也不可能播放出来。
- 由于采用Intel
Image Processing Library (IPL)完成图像放大功能,本程序只能在支持MMX指令集的机器上运行。
- 由于采用的是截屏技术,因此:a.
在工作前请先将你的显示设置更改为24位或32位真彩,否则截取出来的图像色彩不能保证效果。b.
截图过程中不可以移动播放窗口,或用其它窗口遮挡播放窗口。
- 流媒体的播放和截取是以金钱为支撑的,在配有高速CPU、高速硬盘、大内存、高速显卡的机器上,截取频率和截取质量会高一些,反之则低一些。
- 如果万一图像截取失败,即截出来的图片一片黑,可以在Windows的“开始”菜单中点“运行”,运行程序dxdiag.exe后,在“显示”页中点“禁用”DirectShow硬件加速。截完后再启动硬件加速即可。
如果您发现程序的bug,欢迎与我联系。
注意:
WMPCam是一个“友情软件”(Friendware),用户在承诺不用于商业目的,也不对文件及其附件进行任何更改的条件下,不需要为使用该软件负任何费用,最多是在动漫讨论区看到我发帖子灌水时,进去捧个人场,作为友情回报,或者在年节时发个email问声好(所以叫“友情软件”)。我承诺绝不在程序中暗藏任何商业广告、木马,但不承诺为使用WMPCam的后果承担任何责任。如果您需要将它用于商业目的,或加入您的网站,请与我联系,否则保留追究一切责任的权利。如果您能提供更好的数字图像处理算法或源码,或者是发现程序的bug,欢迎与我联系。如果你用WMPCam制作出了精彩壁纸,也欢迎与我分享你的得意之作,或交流使用心得。
一、截图
一般操作过程是:
- 点击“Target folder”旁边的“...”按钮,选择保存截取下来的文件的目录。
- 点击“Open”按钮,打开AVI或VOB文件。
- 文件打开后将自动播放,播放到合适的位置点击“Record”按钮即可开始截图。截完后点“Stop”按钮即可。如果只是想截停止处的单张图像,点击“Save
Now”按钮后输入文件名即可。
- 平时的播放控制可以用控制条上的按钮和播放器的右键菜单进行控制。
- 如果希望保存为JPG文件,别忘了选中“As jpg file”选项。
- 如果需要中断截图工作,可以在中断后点“Other >>”按钮,在弹出的菜单中选“Save
Parameter”,即可将当前状态保存到INI文件中。下次启动后再点“Other
>>”按钮,在弹出的菜单中选“Load
Parameter”,即可恢复到上次保存的状态。
二、批量放大
具体操作步骤是:
- 在主界面中点“Other >>”按钮,在弹出的菜单中选“Scale...”,打开Scale对话框。
- 选择“Source folder”,再选择“Target folder”。
- 选择“Scale rate”。
- 点“Begin”按钮,开始放大。
- 点击“Reset”按钮可以将参数清空。
三、图像平均
“图像平均”技术的原理是这样的:
从数字信号的角度来看,产生媒体流时有损压缩造成的碎片、毛刺、色块等,可以看做是在正常信号中混入了随机噪声信号,消除随机噪声信号最简单的方法就是统计平均。具体到这里则是:对屏幕上的一个短暂定格来说,人眼看上去可能是同一幅图像,但对媒体流来说,却是多幅近似的图像帧,将这些图像帧全部截取下来,然后对它们逐点取平均,生成新的图像,自然就把偏离正常值的噪声过滤掉。平时正常播放时的画面总觉得比静态画面质量好,其实是人眼自然进行了这种平均处理。
从原理上可知,“图像融合技术”具有以下局限:
1.
可以消除或减低有损压缩算法本身对图像质量造成的影响,但对放大失真无能为力。
2.
从统计角度讲,降噪质量与样本数有关,样本越多降噪效果越好,因此只能处理定格镜头。
3.
从实际使用效果看,碟版动画由于图像比较稳定,因此降噪效果较好;录像带版动画由于磁带变形等会造成图像不稳定,定格镜头中甚至会出现整体画面轻微漂移,因此融合后图像会比较模糊。
4.
最终融合出来的图像质量,不太可能比正常播放时人眼看到的动态效果更好。
具体操作步骤是:
- 用ComicsViwer或ACDSee浏览一下源目录下的内容,删除多余文件,只留下与欲截取的定格镜头相关的文件。
- 在主界面中点“Other >>”按钮,在弹出的菜单中选“Average...”,打开Average对话框。
- 选择“Source folder”,再选择“Source files”。为了保证质量,减少后续处理时的信息衰减,选择目标文件时的“Source
files”最好选择为“Bmp
Files”。
- 点“Begin”按钮,开始平均。如果“800*600”或“1024*768”选项被选中,则平均结果会直接放大到所需的尺寸。
- 如果需要截取多个定格镜头,在完成一个后将源目录下的所有文件删除,然后重复步骤2~4。
- 启动Photoshop,用Automate Batch功能,一次对Tgt目录下的所有图像进行色彩平衡或对比度平衡。
- 如果对图像质量要求甚高,可以用Photoshop对生成的图像进行细部编辑。一般我都会进行曲线调节,曲线形状为轻微的S型,上半弧用于消除图像中残留的碎片,下半弧用于巩固边线,使画面上的线条看起来更坚实一些。
注意事项:
- 上面说的虽然是“定格”,但是动画片中的定格和一般影片中的定格略有不同,有时候一段连续动作也可以看作几个定格图片的反复重复,如动画片中的对话镜头,经常就是嘴唇在动,其它部分不动。这时有可能经过筛选后取到更多的样本。
- JPEG是一种有损压缩算法,反复压缩会造成图像信息的衰减,因此在最后定稿前,建议用无损的BMP格式保存图像,定稿后再转成JPG图像。就我的体会,ACDSee的转换要比PhotoShop好一些,成批转换也比较容易,注意转换时将JPG的图象质量系数设高一点(缺省为65,我一般设为96),否则质量难以保证。
- 上面说的直接取平均、放大的方法其实是一种偷懒的方法,因为在原始尺寸下有些图像缺陷是看不出来的。如果要追求更好一点的效果,应该先把样本批量放大,再筛选一次样本,然后取平均。
- ComicsViewer的“文件->复制到...”和“文件->复制到上次目录”就是专门为整理图像平均所需的图片开发的,请善用。
四、指定图像浏览器
在截图、放大、平均过程中都少不了用图像浏览器查看图像,如果对系统默认的浏览器感到不满意,可以点击主对话框的“Other
>>”按钮,在弹出的菜单中选择“Set Viewer...”项,在弹出的对话框中点击“...”按钮,选择合适的图像浏览器(我一般是选ComicsViewer),然后点OK即可。
本程序的的媒体播放部分采用了Microsoft公司提供的Windows
Media Player控件,JPEG编码部分采用了Independent JPEG Group(独立JPEG小组)发布的JPEG LIB,图像放大部分采用了Intel
Image Processing Library (IPL),具体放大算法参见IPL说明书中的附录B部分。
Version 1.01
图像平均部分改用浮点运算,提高运算精度,减小舍入误差。
Verion 1.00
1、提供Windows Media Player的播放、截取功能。
2、提供图像平均、批量放大功能。