2014-12-03 49 views
0

我有一个视频源为不同的设备(例如:高清电视,平板电脑,智能手机等)生成许多数据流,他们每个人都必须相互检查相似度。视频流每秒发布50个图像,每20毫秒发布一个图像。例如,在ts1 = 1时,来自stream1的img1,ts2 = 1时来自stream2的img2,ts = 2时来自stream1的img1.1(比ts = 1晚20毫秒),比较结果应该是这个样子:检查不同大小图像上的相似度

比较(IMG1,IMG1)= 1个相同的图像大小相同

比较(IMG1,IMG2)= 0.9相同的图像大小不同

比较(IMG1,img1.1) = 0.8不同图像相同尺寸

理想情况下这应该是实时完成的,因此在20毫秒内,目标是了解流是否不同步,我已经实施了一些比较方法(它们中没有人适用于这种情况):

1)直方图( SSE和OpenCV cuda),结果比较(img1,img2)〜=比较(img1,img1.1)

2)pnsr(SSE和OCV cuda),结果比较(img1,img2)< compare(img1,img1 1.1)

3)SSIM(SSE和OCV CUDA),导致同PNSR

也许我得到,因为调整大小interpola的不良后果方法?

是否有可能实现满足我的要求,任何想法的比较方法?

+0

请看phash.org – berak 2014-12-03 11:36:21

回答

0

恐怕你遇到了真正的问题(TM)。这不是一个简单的让我们付诸实践的问题。

主要挑战是你不能做一个蛮力比较。高清图像是3 MB或更多,并且您正在讨论O(N * M)比较(在时间和跨流)。

你基本上需要的是一种对调整大小但随时间而变化的指纹。正如你没有意识到的那样(例如直方图的想法是相当时间稳定的),你没有在这个问题中包含必要的信息。

所以这不是一个C++的问题,真的。你需要了解你的输入。

相关问题