Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查不同大小图像的相似性_C++_Opencv - Fatal编程技术网

C++ 检查不同大小图像的相似性

C++ 检查不同大小图像的相似性,c++,opencv,C++,Opencv,我有一个视频源,可以为不同的设备(如:高清电视、PAD、智能手机等)生成许多流,每个流都必须相互检查以确定相似性。视频流每秒释放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个

我有一个视频源,可以为不同的设备(如:高清电视、PAD、智能手机等)生成许多流,每个流都必须相互检查以确定相似性。视频流每秒释放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)<比较(img1,img1.1)

3) ssim(SSE和OCV cuda),结果与pnsr相同

也许我得到的结果不好,因为调整插值方法


有没有可能实现一种符合我要求的比较方法,有什么想法?

恐怕你遇到了一个真正的问题(TM)。这不是一个微不足道的问题,让我们把它交给实习生吧

主要的挑战是你不能做一个蛮力比较。高清图像的容量为3MB或更大,您谈论的是O(N*M)比较(在时间上和跨流)

你所需要的基本上是一个指纹,它对大小调整具有鲁棒性,但随时间变化。由于你没有意识到(例如,直方图的概念是相当时间稳定的),你没有在这个问题中包含必要的信息

这不是C++问题,真的。你需要理解你的输入