algorithm - 图像比较快速 GPU 算法找到未匹配

标签 algorithm opencl rgb h.264 yuv

我想知道比较 2 个 RGB 图像的最佳方法是什么。 我想找到差异的边界框列表。 或所有更改的统一边界框。两者都可以。

假设我正在比较 2 个桌面屏幕,其中一个图像的右下角时间不同,并且屏幕左上角的图标移动了

该算法可以找到移动的图标和变化的数字(第二个)的边界框,这给了我 2 个包含更改的框或者它可以生成 MIN/MAX 类型的逻辑并生成一个框,包括这两个变化的结合。在这种情况下,框将是整个屏幕的大小,因为我的示例是针对最坏情况的。 (我知道可以合并这些盒子并得到一个合并的盒子)。但也许有一个更快的算法然后找到每个盒子分开。这就是为什么找到联合的算法也可以的原因。

我逐个像素地比较,发现整个屏幕的最小最大值,其中变化存在于嵌套循环中,如时尚。
我什至在 OPENCL 上试过这个,但是 4K 图像的速度是 0^2,所以不能接受。

是否有类似搜索的算法可以加快屏幕搜索速度。 也许将其表示为图表。有点像 A* 或其他一些基于启发式的搜索?

也许缩小它并进行搜索,然后仅在检测到变化的部分进行第二次搜索?

也许转换为 YUV 有帮助?

最佳答案

我能想到的最快解决方案。将图像转换为灰度图像,对两幅图像执行异或运算,然后使用聚类算法找到边界框。

关于algorithm - 图像比较快速 GPU 算法找到未匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744926/

相关文章:

javascript - 获取特定日期的所有年份日期

python - pyOpenCL 和 opencl4py 的区别

c - 使用 libpng 在 C 中以灰度或 RGB 编写 PNG

numpy - RGB 图像的每 channel 归一化

c - 查找不超过给定值 n 的素数的优化方法

python - 图更新算法

opencl - SYCL设备选择器中的host_selector是什么?

parallel-processing - POCL(可移植计算语言)和OpenCL有什么区别?

c# - 将 RGB 字节转换为 HSL 并返回?

algorithm - Big-O for while 用户输入循环