2017-10-08 12 views
0

私は2DでRGB画像を持っています。Neighborhood-forを使用してすべてのチャンネルを使用する方法?

同じ色(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になるように画像を拡大します。 –

関連する問題