こんにちは
OpenCVを用いてカメラに映る画像の輝度値のCr,Cb成分(画素数全体の平均を取り)を表示する
プログラムを作ろうと考えているんですが、サイトを検索していると輝度値の求め方が・・・
Y→輝度値, Cr,Cb→輝度値からそれぞれR成分,B成分を引き取ったもの
R,G,B→RGBそれぞれの値,delta→8ビット画像(128) があるとしまして
Y = 0.299*R + 0.587*G + 0.114*B
Cr = 0.5*R - 0.419*G - 0.081*B + delta
Cb = -0.169*R - 0.332*G + 0.5*B + delta
と
Y = 0.299*R + 0.587*G + 0.114*B (Yは同じ式)
Cr = 0.713 * (R - Y) + delta
Cb = 0.564 * (B - Y) + delta
2通りあります.どちらの式も違う値(小数部の範囲で)が出ます.
どちらが正しいCr成分,Cb成分を求める式なのでしょうか?
あるいどちらがより正確な値が求められるのでしょうか?
画像処理を始めたばかりでなので,ご教授よろしくお願い致します.
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の定義を表している後半の式が良いと思います。
回答ありがとうございます。
RGBの値は結構変化するのですね・・・
予想以上でした^^;
展開したらほぼ同じ式になるんですね・・・
途中計算式が難しくてどらがいいのか迷っていました。
参考にさせて頂きます。
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 …
http://opencv.jp/opencv-2.2/cpp/core_operations_ …
で、Y,Cr,Cbそれぞれだけが入った1チャンネルの画像になります。
あるいは、RGB画像からR,G,Bをそれぞれ取り出す要領で、Y,Cr,Cbが取りだせます。
No.1
- 回答日時:
小数部の違いというのは誤差の範囲ではないかと。
それより、OpenCVを使っているのなら
http://opencv.jp/opencv-2.2/c/imgproc_miscellane …
http://opencv.jp/opencv-2.2/cpp/imgproc_miscella …
を使えばいいのではないでしょうか。
この回答への補足
どの式も正しいのでしょうか?
cvtColorのことでしょうか?
これは使っています.
実はYCrCb変換のCrとCbの値の入手したいのです.
こちらのサイトでは後者の式を用いてますね・・・どちらが正しいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 据え置き型ゲーム機 PS2 TO HDMI 2 2022/04/14 16:00
- 数学 情報処理詳しい人!! A4縦のレポート文書に4:3の大きさの横向きの写真画像を貼り付けることにした。 2 2022/12/18 02:30
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 1 2023/01/31 18:53
- 統計学 信頼区間についての質問です。 6 2023/06/25 17:34
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 5 2023/01/31 23:35
- 数学 数2Bの数列の問題です。 自分は、 まず数列 an=ar^(n-1)と置き こちらの問題の、y= の 1 2022/07/07 16:26
- 統計学 統計検定2級の過去問について 1 2023/01/04 16:40
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- 数学 難題集から 最大と最小 7 2023/02/22 19:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
Excel VBAのリストボックスの値...
-
マクロ 特定のセル値のみクリ...
-
ハッシュテーブル(連想配列)が...
-
fscanfでC言語の空欄を読んだ場...
-
スクロールバーの境界値は?
-
【C++/CLI.NET】コンボボックス...
-
RegisterClassExのエラー原因
-
textboxとLabelを動的に変更する
-
vbaの繰り返しで求める最大値に...
-
テキストボックスの設定。
-
【ASP.NET】 DataTextFieldの値...
-
テキストボックスの値をコンボ...
-
変数名の取得
-
VB2008 iniファイルの指定セク...
-
コンボボックスを読み取り専用...
-
ComboBoxで選択した値をReplace...
-
setcookieで「path」に複数の値...
-
コンボボックスの幅の変更について
-
ユーザーフォームのテキストボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
ハッシュテーブル(連想配列)が...
-
textboxとLabelを動的に変更する
-
PL/SQLでのTO_DATEの時間取得に...
-
VB.NETでアクティブなformを知...
-
Excel vba ユーザーフォームテ...
-
DataTableに対するLINQについて
-
マクロで奇数と偶数の値を2か所...
-
[VBA]選択範囲の下から上に処理...
-
【C++/CLI.NET】コンボボックス...
-
変数に代入してある数値を表示...
-
vbscriptを使いexcelを参照して...
-
範囲が指定されている乱数について
-
[VB.net] DataGridViewのコンボ...
おすすめ情報