【发布时间】:2011-03-22 07:54:35
【问题描述】:
我正在实现一个从视频中去除闪烁的工具。要测试该工具, 我正在寻找一些视频序列(任何视频格式 - MPEG4、H263、MPEG2、H264、Raw YUV),它们中存在明显的闪烁量。我搜索了,但找不到任何此类视频。
顺便说一句,是否有已知的视频后期处理工具可以消除闪烁?
任何指针都会有所帮助。
谢谢。 -AD
【问题讨论】:
我正在实现一个从视频中去除闪烁的工具。要测试该工具, 我正在寻找一些视频序列(任何视频格式 - MPEG4、H263、MPEG2、H264、Raw YUV),它们中存在明显的闪烁量。我搜索了,但找不到任何此类视频。
顺便说一句,是否有已知的视频后期处理工具可以消除闪烁?
任何指针都会有所帮助。
谢谢。 -AD
【问题讨论】:
如果您有一个 YUV 序列,那么在某个周期(50 Hz、60 Hz 或其他)添加人工闪烁将非常简单,方法是在相关周期插入一个白框,或者您可以摆弄色度平面使有问题的框架更轻。
可以在此处找到测试序列。 yuv test-sequences
顺便说一句。通常,移动电话内置了闪烁消除功能,该功能非常有效,可以在多个净频率下运行。以不是 25 或 30 Hz 的倍数的帧速率录制慢动作视频是某些相机模块在录制时无法补偿 @ 说 VGA 100 fps。
这是一个帮助您入门的 python 函数,它将 YUV 4:2:0 拆分为帧并将每个帧存储为单独的文件。
def split(fname):
src_yuv = open(fname, 'rb')
cif = 352*288*1.5 # YUV 4:2:0 change to reflect your input!
# Get file size in bytes
src_yuv_size = os.stat(fname)[6]
nr_files = src_yuv_size / cif
filecnt = 0
while True:
buf = src_yuv.read(cif) # read qcif number of bytes
if buf:
s = "frame" + "%s" % filecnt + ".yuv"
dst_yuv = open(s, 'wb')
dst_yuv.write(buf) # write read data into new file
print "writing frame", filecnt
dst_yuv.close()
filecnt = filecnt + 1
else:
break
src_yuv.close()
【讨论】: