什么是本地峰值检测器 skimage.feature.peak_local_max 的 C++ 实现或类似物?

What is a C++ implementation or analogue of the local peak detector skimage.feature.peak_local_max?

我需要在深度图像上找到局部峰值,以便为 C++ 中的分水岭算法生成标记。

我的 Python 实现使用 skimage.feature.peak_local_max 为分水岭算法生成标记。

找不到 C++ 实现C++ 类似物 skimage.feature.peak_local_max函数。

一些用于查找矩阵局部最大值的算法也可能有所帮助。

distance = scipy.ndimage.distance_transform_edt(image)
local_maxi = skimage.feature.peak_local_max(distance, indices=False, footprint=np.ones((3, 3)), labels=image)
markers = scipy.ndimage.label(local_maxi)[0]
labels = skimage.segmentation.watershed(-distance, markers, mask=image)

Example of the peak finder

请问您对本地寻峰器的 C++ 实现有什么想法吗?谢谢!

如果你想要一个纯 C++ 实现,我建议你看看 ITK。 ITK 中的 RegionalMaximalImageFilter class 将生成一个二值图像,前景代表局部最大值。它甚至适用于局部最大值恒定的“平坦”区域。 link 显示了一个示例:RegionalMaximal

原图:

局部最大值图像: