• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:OpenCVにおいてのYCrCb値の求め方)

OpenCVでのYCrCb値の求め方

このQ&Aのポイント
  • OpenCVを利用してカメラ画像の輝度値のCr,Cb成分を求める方法について調査しています.
  • 2つの式が存在し、異なる値が得られますが、どちらが正しいかやより正確な値を求める方法についても知りたいです.
  • 画像処理初心者であるため、ご教授いただけるとありがたいです.

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

kmeeさんが言っているように、式の表記方法が違うだけで、YCrCb変換の式としては同じと思った方が良いと思います。 ちなみに、後半の式を展開しても Y = 0.299*R + 0.587*G + 0.114*B Cr = 0.499813*R - 0.41853*G - 0.08128*B + delta Cb = -0.16864*R - 0.33107*G + 0.499704*B + delta となり、RGBの値が0~255の場合、2通りの式の計算の差の絶対値が一番大きくても-0.23766 しかもcvCvtColorを使っているのであれば、RGBの値は入力も出力の8Bitで使っている?でしょうから、計算結果には、なんら影響はないと思います。 また、カメラで画像を撮影した時のRGBの値は、普通に2~3ぐらいはふらつくので、RGBの値が1以下の話をしても、あまり意味が無いと思います。 あえて、どちらが正確か?というと、YCrCbの定義を表している後半の式が良いと思います。

dezeckco
質問者

お礼

回答ありがとうございます。 RGBの値は結構変化するのですね・・・ 予想以上でした^^; 展開したらほぼ同じ式になるんですね・・・ 途中計算式が難しくてどらがいいのか迷っていました。 参考にさせて頂きます。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

cvtColorでRGB→YCrCbに変換したら、3チャンネルあるうちのそれぞれのチャンネルにY,Cr,Cbが入っています。 Cr,Cbの値が欲しいなら ・cvtColorでRGB(BGR?)→YCrCbに変換 ・splitでチャンネル毎に分離 http://opencv.jp/opencv-2.2/c/core_operations_on_arrays.html#split http://opencv.jp/opencv-2.2/cpp/core_operations_on_arrays.html#cv-split で、Y,Cr,Cbそれぞれだけが入った1チャンネルの画像になります。 あるいは、RGB画像からR,G,Bをそれぞれ取り出す要領で、Y,Cr,Cbが取りだせます。

dezeckco
質問者

お礼

3チャンネルで分離ですか・・・ 了解しました。時間的に実装できるかわかりませんが、やってみます。 回答ありがとうございます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

小数部の違いというのは誤差の範囲ではないかと。 それより、OpenCVを使っているのなら http://opencv.jp/opencv-2.2/c/imgproc_miscellaneous_image_transformations.html#cvtcolor http://opencv.jp/opencv-2.2/cpp/imgproc_miscellaneous_image_transformations.html#cv-cvtcolor を使えばいいのではないでしょうか。

dezeckco
質問者

補足

どの式も正しいのでしょうか? cvtColorのことでしょうか? これは使っています. 実はYCrCb変換のCrとCbの値の入手したいのです. こちらのサイトでは後者の式を用いてますね・・・どちらが正しいのでしょうか?