如何在隔行图像上检测帧是奇数还是偶数?

时间:2011-09-29 11:02:51

标签: image-processing interlacing

我有一个设备可以在精确的时间拍摄电视屏幕截图(它不需要不完整的帧)。

此截图仍然是由两个不同的原始帧构成的隔行扫描图像。

现在,问题是如何/如何识别哪些线路更新/更旧。

我必须提一下,如果需要,我可以拍几张连续的截图。

enter image description here

2 个答案:

答案 0 :(得分:4)

一个接一个截取两个截图,产生一系列两个图像(1,2)。将每个屏幕截图拆分为两个字段(奇数和偶数),并将每个字段视为单独的图像。如果你假设图像是一致的隔行扫描(非常安全的假设,否则它们看起来很糟糕),那么有两个可能性:(1e, 1o, 2e, 2o)(1o, 1e, 2o, 2e)。所以目前它是50-50。

您可以使用optical flow来提高机会。说你跟着去吧 第一个选项:(1e, 1o, 2e, 2o)。计算f1之间的光流(1e, 2e)。然后计算f2之间的(1e, 1o)f3之间的流(1o,2e)。如果f1f2 + f3大致相同,那么事情正朝着正确的方向发展,您选择了正确的安排。否则,请尝试其他安排。

光流是一种非常通用的方法,很难为整个图像计算。如果您想匆忙做事,请用video tracking替换光流。

修改

我一直在玩一些可以廉价地执行此操作的代码。我注意到如果3个场是连续的并且顺序正确,那么由于平滑,恒定运动引起的绝对误差将被最小化。相反,如果它们出现故障(或不连续),则此错误将更大。因此,实现此目的的一种方法是两个由3个字段组成的组并检查上述两个排序中的每一个的错误,并使用产生较低错误的排序。

我这里只有一些隔行扫描的视频可供测试,但似乎有效。除非有明显的平滑运动或使用的帧数低(少于20-30),否则唯一的缺点是它不是非常有效。

这是隔行扫描的框架:

enter image description here

以下是我的方法(同一帧)的一些示例输出:

enter image description here

顶部图像是奇数行。底部图像是偶数行。括号中的数字是图像被选为最新图像的次数。右边的数字是错误。在这种情况下,奇数行被标记为最新的,因为错误低于偶数行。你可以看到,在100帧中,它(正确地)判断奇数行是最近的80次。

答案 1 :(得分:0)

你有几个领域,F1,F2,F3,F4等。编织F1-F2,假设F1是一个偶数场。编织F2-F3以得出F2是偶数场的假设。现在测量每帧中的梳理量。假设有运动,将会有一些正确的隔行扫描,但更多的是与错误的隔行扫描相结合。您必须多次执行此操作才能在有运动时找到某些字段。