我想为彩色图像实现组件标签算法。
计算四个相邻像素与 (i,j) 处的当前像素的颜色距离,算法进行如下:
如果没有一个邻居的颜色距离小于预定义的阈值 (T),则为像素 (i,j) 分配一个新标签。
如果只有一个邻居的颜色距离小于 T,则将其标签分配给像素 (i,j)。
(a) 如果两个或更多邻居的颜色距离小于 T,则 (i,j) 处的像素被分配具有最小颜色距离的那个的标签。
(b) 颜色距离最小的像素的标签也分配给其他相邻像素。
(c) 图像中与其他相邻像素具有相同标签的所有先前标记的像素被重新分配具有最小颜色距离的像素的标签。
我想使用 opencv 库在 C++ 中实现代码。我可以用来实现上述算法的最佳数据结构是什么?我应该使用 std::map 来存储邻居距离值吗?
此外,如果任何一个条件满足(1-3),我需要将相应像素的标签分配给当前像素(i,j)。所以我还需要知道它是哪个邻居的标签(即左、上、左上对角线、右上对角线)。我怎么得到它?