如何检测帧是奇数还是交错图像?
我有一个设备在准确的时间拍摄电视截图(不需要不完整的帧)。
此截图仍然是由两个不同原始帧构成的交错图像。
现在,问题是如果/如何可能确定哪些行更新/更旧。
我必须提到,如果需要,我可以拍摄多个连续的屏幕截图。
一个接一个地截取两张截图,产生两个图像序列(1,2)
。 将每个屏幕截图拆分为两个字段(奇数和偶数),并将每个字段视为单独的图像。 如果你认为图像是一致的交错(非常安全的假设,否则它们看起来很可怕),那么有两种可能性: (1e, 1o, 2e, 2o)
或(1o, 1e, 2o, 2e)
。 所以现在是50-50。
那么你可以做的是使用光流来提高你的机会。 假设你选择第一个选项: (1e, 1o, 2e, 2o)
。 计算(1e, 2e)
之间的光流f1
。 然后计算(1e, 1o)
和f3
之间(1o,2e)
之间的流量f2
。 如果f1
与f2 + f3
大致相同,那么事情就会朝着正确的方向移动,并且你选择了正确的安排。 否则,尝试其他安排。
光流是一种非常普遍的方法,可能很难计算整个图像。 如果您想匆忙做事,请用视频跟踪替换光流。
编辑
我一直在玩一些可以便宜的代码。 我注意到,如果3个区域是连续的并且按正确的顺序排列,则由于平滑,恒定的运动引起的绝对误差将被最小化。 相反,如果他们失序(或不连续),这个错误会更大。 因此,一种方法是两个3个字段的组合,检查上述两个顺序中的每一个的错误,并按照产生较低错误的顺序进行。
我只有几个隔行扫描的视频在这里进行测试,但它似乎工作。 唯一不利的方面是它不是非常有效,除非有实质的平稳运动或使用的帧数很少(小于20-30)。
这是一个隔行帧:
以下是我的方法(同一帧)的一些示例输出:
顶部图像是奇数行。 底部图像是偶数行。 括号中的数字是图像被选为最近的次数。 右边的数字就是错误。 在这种情况下,奇数行标记为最近的行,因为该错误低于偶数行。 您可以看到,在100帧中,它(正确)将奇数行判断为最近的80次。
您有几个字段,F1,F2,F3,F4等。在F1是偶数字段的假设下编织F1-F2。 针对F2是偶数场的假设编织F2-F3。 现在测量每帧中的梳理量。 假设存在运动,将会有一些梳理正确的交错,但更多的梳理错误的交错。 您需要多次执行此操作才能在发生移动时找到某些区域。
链接地址: http://www.djcxy.com/p/55033.html上一篇: How to detect if a frame is odd or even on an interlaced image?
下一篇: Building GSL (GNU Scientific Library) in Windows for use with VS2005