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

sor*_*rin 7 image-processing interlacing

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

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

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

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

在此输入图像描述

mpe*_*kov 4

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

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

光流是一种非常通用的方法,很难计算整个图像。如果你想快速做事,就用视频跟踪代替光流。

编辑

我一直在研究一些可以便宜地完成此操作的代码。我注意到,如果 3 个场是连续的并且顺序正确,则由于平滑、恒定的运动而产生的绝对误差将被最小化。相反,如果它们是乱序的(或者不连续的),这个误差就会更大。因此,一种方法是采用两个包含 3 个字段的组,检查上述两个排序中每一个的错误,然后选择产生较低错误的排序。

我这里只有少数交错视频可供测试,但它似乎有效。唯一的缺点是它不是很有效,除非有相当平滑的运动或使用的帧数较低(少于 20-30)。

这是一个交错的帧:

在此输入图像描述

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

在此输入图像描述

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