gpt4 book ai didi

opencv - 在 OpenCV 中有效判断一幅图像是否完全由另一幅图像的像素值组成

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:58 25 4
gpt4 key购买 nike

我正在尝试找到一种有效的方法来查看一幅图像是否是另一幅图像的子集(这意味着一幅图像中的每个唯一像素也可以在另一幅图像中找到。)像素的重复或排序无关紧要。

我在 Java 工作,所以为了效率,我希望我所有的操作都在 OpenCV 中完成。

我的第一个想法是导出一个唯一像素值列表,并将其与第二张图片中的列表进行比较。由于没有内置函数来提取唯一像素,我放弃了这种方法。

我还了解到,我可以使用包含的 inRange 和 findNonZero 操作找到特定颜色的位置。

  Core.inRange(image, color, color, tempMat); // inclusive
Core.findNonZero(tempMat, colorLocations);

不幸的是,这并不能提供足够的答案,因为它需要按颜色执行,并且仍然需要提取唯一像素。

本质上,我想问的是是否有一种聪明的方法可以使用内置的 OpenCV 函数来查看一幅图像是否由另一幅图像中的像素组成。

我知道这不适用于轻微的色差。我正在处理一个有限的数据集,并且关心确切的像素值。

更数学地提出这个问题:

最佳答案

因为您唯一感兴趣的是像素值,所以我建议您执行以下操作。

  1. 使用 hist1 = calcHist() 计算图像 1 的直方图
  2. 使用 hist2 = calcHist() 计算图像 2 的直方图
  3. 计算差向量diff = hist1 - hist2
  4. 检查子图像 hist 的每个 bin 是否小于或等于较大图像 hist 中的相应 bin

感谢 Miki 的修复。

关于opencv - 在 OpenCV 中有效判断一幅图像是否完全由另一幅图像的像素值组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45290665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com