问题描述
我需要在深度图像上找到局部峰值,以生成用于C ++中分水岭算法的标记。
我的Python实现使用 skimage.feature.peak_local_max 生成分水岭算法的标记。
找不到 skimage.feature.peak_local_max 函数的 C ++实现或 C ++类似物。
一些为矩阵找到局部最大值的算法也可能会有所帮助。
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)
请问有关本地峰值查找器的C ++实现的任何想法?谢谢!
解决方法
如果您要使用纯C ++实现,建议您看一下ITK。 ITK的RegionalMaximalImageFilter
类将生成一个二进制图像,其前景表示局部最大值。它甚至适用于局部最大值恒定的“平坦”区域。此链接显示了一个示例:RegionalMaximal
原始图片:
本地千里马图片: