2017-10-08 64 views
0

我有一个二维的RGB图像。如何使用邻居 - 使用所有渠道?

我想要创建具有相同颜色(RGB值)的像素组;他们从左到右,然后从上到下阅读。

当当前像素的RGB值与前一个不同时,这意味着我找到了一个组(其中包含以前的像素)。

我知道CImg的功能CImg_for2x2(img,x,y,z,c,I,T)但问题是,它只适用于频道c,而我对RGB值感兴趣。 Doc:http://cimg.eu/reference/group__cimg__loops.html#lo6

您是否知道是否可以告诉“CImg”了解我使用RGB值而不是红色值,例如?

回答

1

很难从你的问题告诉,但我认为你正在寻找“连接成分分析”,或“标签”

CImg工具为label()

所以,如果你开始与此图像具有3个白色斑点在它:

enter image description here

,然后运行这个:

#include <iostream> 
#include "CImg.h" 
using namespace std; 
using namespace cimg_library; 

int main(int argc, char** const argv) 
{ 
    CImg<int> img("input.png"); 
    img.label(0,0); 
    img.save_png("result.png"); 
} 

它将“标签”所有不同图像中的斑点具有唯一的编号,如下所示:

enter image description here

+0

黑色部分是否也被识别? –

+1

所有的黑色像素都标出(即彩色)为0,所以它们碰巧是黑色的。左上角块中的所有像素都带有标签(即颜色)1。右侧高柱中的所有像素都标记为2.大方块中的所有像素都标记为3.然后, 'normalized()'(即将值分布在0-255的全部范围内)使图像1变为85,2变为170并且3变成255。 –