如何使用每 n 个像素 OpenCV 计算直方图

how to calculate histogram using every nth pixel opencv

本文关键字:OpenCV 计算 直方图 像素 何使用      更新时间:2023-10-16

我正在使用这个opencv函数来计算直方图(对于蓝色)。

calcHist( &bgr_planes[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate );

在这里,我们使用图像中的所有像素来计算直方图。假设我需要使用每 10 个像素或第 100 个像素计算直方图。有没有有效的方法可以做到这一点?我需要这样做,因为我认为即使丢失了一些细节,它也可以提高直方图计算的性能。

任何帮助,不胜感激。

计算时间与像素数成线性关系。 您基本上将每个像素取一次并将其放入垃圾箱中。 提前对它们进行任何转换都会导致浪费时间。

因此,做一些事情,比如调整大小或创建新图像,会破坏目的。

实现任何节省的最佳方法是使用您自己的直方图计算函数,该函数只是在迭代像素时将索引增加(10、100 或 1000)。 直方图算法很容易重写。 这是本科生典型的家庭作业问题。

我认为在少数情况下,值得尝试通过用更少的像素制作直方图来节省时间。 您必须使用非常紧迫的时间限制或非常大的数据。

使用带有

最近邻"插值"的cv::resize()沿两个轴每 10 个像素对图像进行子采样。然后计算子采样图像上的直方图。

除了使用额外的 1% 内存(超出图像)之外,它还应该与动态计算直方图一样有效。