画像処理関連のコードの一部にOpenCVを使用しています。私は特定の時点で立ち往生しています。
特定のコードでは、画像のCIE L * a *b*値に基づいて画像のピクセル値を比較する必要があります。私はBGRのために私達がこのような何かをすることができることを知っています:
// img is the image, suppose
uchar *data = ( uchar* )img->imageData;
for(i=0; i< img->height; i++)
for(j=0; j<img->width; j++)
{
b = data[i*img->widthStep + j*img->nChannels + 0];
g = data[i*img->widthStep + j*img->nChannels + 1];
r = data[i*img->widthStep + j*img->nChannels + 2];
}
私の質問は、l * a * b*カラーモデルでも同様のことを行うことができるかということです。つまり、最初は画像を次のように変換します
cvCvtColor(img, lab, CV_BGR2Lab);
次に、上記の場合のように個々のチャネル情報にアクセスします(L * a * b *も3つのチャネルで構成されているため、間違っていない場合)、ピクセル値を取得できますか?
私がこれを求めている理由は、それを実装しようとしたのですが、非常に高い負の数のようないくつかの本当に奇妙な値を取得しています(範囲「a」と「b」がわからなかったので、ucharの代わりにintデータ型を使用しましたウィキペディアでは、「L」は0〜100の範囲の値しか持てないことがわかりました。では、これらのピクセル値をどのように正確に取得できますか?
前もって感謝します !!