vector配列の重複を無くすには?
画像処理で各ピクセルごとのRGB値をそれぞれ取得し、
重複を除いた形で全て表示したいと考えています。
(仮に4ピクセルしかないとして、RGB(255,255,0),
RGB(255,255,255),RGB(255,255,255),RGB(255,0,255)
といった値が取れたときにRGB(255,255,0),
RGB(255,255,255),RGB(255,0,255)のみを表示するといった感じです。)
画像ごとにピクセル数が異なり分からないので、
各ピクセルのRGB値を格納するのに動的配列vector<int*> pixelを
用い、そこにred,green,blueそれぞれの値を格納した
配列RGB[3]を格納しようと思い以下のように書いたのですが、
vector配列に配列を格納したときに重複を削除する方法が
分からず困っています。
for(int x = 0; x->width; x++) {
for(int y = 0; y->height; y++) {
/*getRGBはそのピクセルのRGB値を取得する仮想関数*/
RGB[0] = (int)getRGB(x,y,RED);
RGB[1] = (int)getRGB(x,y,GREEN);
RGB[2] = (int)getRGB(x,y,BLUE);
}
}
pixel.push_back(RGB);
と格納しても、そこからpixel配列に格納された物の中から
RGBが全て一致するものを消去する方法が分かりません。
格納していたものが配列でなければ、pixelをsortして、
unique関数で重複を無くせるのでしょうが…
どなたか良い方法をご教授願えませんでしょうか?
お礼
早速のご回答、ありがとうございます。 >各画素の分光分布をもとめて,対象となる範囲の平均をとり, >その分光分布対して刺激値を求める。 なるほど~ やはりそうですか 手順として分かりましたので、今度試してみます >画像データのRGB値自身にはガンマが…(略 あっ、そうですよね これは失念していた… というか漏れていました… 大変参考になりました! 色々と試してみたい事がありますので、 少々時間が掛かりそうです。 また、他の方のご意見もお聞きしたいため、 もう暫くこのまま受け付けたいと思います。ご了承下さいm(_ _)m