
今、画像を使用して色を判断するプログラムを開発しています。
今日、カメラから取り入れた画像の比較したい部分のマスターとターゲットのRGB毎の平均レベルを出せる様に成りました。
これで色の判別をしたいのですが、何か良い方法、定番等ありますでしょうか。
今はR/G G/B B/Rをマスター領域とターゲット領域で計算し、各々の差の合計を使って出来ないかと考えて居ます。
即ち、マスターのR/G とターゲットのR/G の絶対差、マスターのG/B とターゲットのG/B の絶対差、マスターのB/R とターゲットのB/R の絶対差の合計です。
ちょっとやって見ると、色が似ていると少ない値が得られる様です。
ただ、自己流なので、何か定番があればお教え下さい・・・と行っても、インテグラムとかシグマが入った式だと全然理解出来ず、算数レベルで何かありませんでしょうか。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
そういうことであれば
例えばその6種類の中から一番近い色を選ぶ
とすればいいという事ですよね?
なのでRやBを割り算するよりも
距離の式を3次元(RGB)に拡張した式が
「論理的にそのまんま」なんで
確実性が高いんじゃないでしょうか
マスターを色1(R1,G1,B1)
ターゲットを色2(R2,G2,B2)
とすると
色の距離 = sqrt( ( R1 - R2 ) * ( R1 - R2 ) + ( G1 - G2 ) * ( G1 - G2 ) + ( B1 - B2 ) * ( B1 - B2 ) );
になるので、こいつが一番小さくなるやつを選んでやればいいんではないかと思います。
LongSecret様、いつもお世話に成ります。
前回のフレームレートはお手上げで保留にしています。
>色の距離 = sqrt( ( R1 - R2 ) * ( R1 - R2 ) + ( G1 - G2 ) * ( G1 - G2 ) + ( B1 - B2 ) * ( B1 - B2 ) );
色の距離で判断ですね。差の二乗の合計の平方根、この辺りなら私にも理解出来そうですし、私のレベルでもプログラム化出来ると思います。
月曜に会社で動作を調べてみます。
ありがとう御座いました。
No.4
- 回答日時:
あ、一応
比較するだけなら
a <= b (両方実数でa>=0かつb>=0)
のとき
√a <= √b
はいつも成り立つので、この場合
sqrtは外せますね。
色の距離の2乗 = ( R1 - R2 ) * ( R1 - R2 ) + ( G1 - G2 ) * ( G1 - G2 ) + ( B1 - B2 ) * ( B1 - B2 );
実装上はこれを比較すれば良いかと
今、エクセルで計算してみました。
各色のレベル差にきれいに反応していました。
実際は得られた数値を442(=255*255*3のルートの近似値)で割った数値をパーセントとして利用したいと考えて居ます。
ありがとう御座いました。
No.2
- 回答日時:
どうもこんばんは。
お力になれるかは分かりませんが
詳しい人がいても情報が足りないと答えられない可能性がありますので
>色の判別
といいますのは、具体的にはどういう内容なのでしょうか
・画像全体の話か(あるいは特定のピクセルか)
・それとも特定の大きさを持った領域ごとの、周囲との変化量の話か
・ここでいうマスターとターゲットとは具体的にそれぞれどういうものなのか
・「現在の計算式」とはどのような感じなのか
つまり
>R/G G/R G/B B/G B/R R/B のマスターとターゲットの差の絶対値の合計。
>これを1024で割ると0から100の数に成りそうで、0に近い程マスターとターゲットの色味が似ているのでは無いかと考えています。
なぜ、そうなるのか(各RGBのとり得る最小値と最大値は何かとかも)
等の情報が必要なのではないかと思います。
なお、No.1さんの回答のHSVの計算式は、一応算数レベルの計算ではあります。
例としてはこんな感じです。
・書く色は0から1.0までの間にとります。
(もし最大値が255で最小値が0とかだったら、255.0で割るなど)
double r, g, b;
//この隙間で0から1.0になるように代入する
double max = r > g ? r : g;
if ( max < b ) max = b;
//以下、同様にしてmin(最小値)も求める。
・色相(Hue)は
const double d = max - min;
double hue;
if ( r == max ) hue = 60 * ( g - b ) / d;
else if ( g == max ) hue = 60 * ( b - r ) / d + 120;
else hue = 60 * ( r - g ) / d + 240;
こんな感じで求まります。(maxとminが同じだった場合0で割ってしまうのでそこはもうちょっと書き足してください)
彩度(Saturation・Chroma)
明度(Brightness・Lightness・Value)
については遥かに簡単なので割愛します。
色相(Hue)とは
緑
赤
青
の円を描いたときに
赤を基点(0度)とする
反時計回りの角度、という感じのイメージです。
こちらをご覧いただければお分かりいただけるかなと
http://www.parof.jp/Misc/HSV/
この回答への補足
ご回答有難う御座います。
>具体的にはどういう内容なのでしょうか
マスター、ターゲット共に矩形領域が設定されています。
矩形領域の色は原則均一ですが、照明が悪いので多少ばらつきがあります。
今はこの領域、R、G、Bで領域内の平均レベルを算出出来る様に成った状態です。
このマスターとターゲットの色が同じであるかどうかの判別です。
矩形領域は例えば部品の色やラベルの色の所に割り当てられていると考えて下さい。
ターゲットの色とマスターの色が同じならOK、違って居ればNG判定をします。
ただ、色は中間色では無く、R G B や Y M C レベルの色が判断出来ればいいのです。
要は部品の色の付け間違いを判断したいのです。
ただ、私自身は余り画像処理系は分からないので、難しい事を言われても残念ながら分から無いのです。
逆に質問させて頂ければ、私が考えた R/G G/R G/B B/G B/R R/G の比率のマスターとターゲットの差の絶対値の和を1024で割った値がこの判断に使えるかどうかを検討して頂けたら幸いです。
例えば マスター、ターゲット共に赤系だとします。
マスターが R:200 G:50 B:40 ターゲットが R:220 G:60 B:50とします。
すると
マスターのR/G G/R G/B B/G B/R R/G は各々4.00 0.25 1.25 0.80 0.20 5.00 と成り
ターゲットは 3.67 0.27 1.20 0.83 0.23 4.40 と成ります。
この値のマスターとターゲットの差の絶対値は各々0.33 0.05 0.05 0.03 0.03 0.60と成ります。
この数値の合計は1.07と成ります。これを1024で割ると0.1%と成ります。
これを色々な色レベルで計算して見ると、数値が少ないと色が似ている、大きいと色が似ていないと成らないでしょうか。
No.1
- 回答日時:
定番といえば、HSV色空間か何かに変換して色相の差の絶対値を取るのが一般的かもね。
変換式は、Wikipedia に載ってるので十分。
参考URL:http://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9% …
ご回答ありがとう御座います。
ただ、ちと私には難し過ぎて分かりません。
色相の差ならば今やろうとしている各画像レベルの差の絶対値でも何とか行けそうですよね。
昨日、試算して居て、先の式に追加して、全ての差を取ってみようと思って居ます。
即ち、R/G G/R G/B B/G B/R R/B のマスターとターゲットの差の絶対値の合計。
これを1024で割ると0から100の数に成りそうで、0に近い程マスターとターゲットの色味が似ているのでは無いかと考えています。
更にこれだとマスター画像とターゲット画像の明るさが異なっても比較出来そうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- 大学受験 長文失礼します 高3受験生女 愛知教育大学理科 (偏差値50 国立)志望です。 先週の共通テスト模試 5 2022/09/13 00:21
- 大学・短大 アナロジーにおけるベース領域とターゲット領域とはなんですか?先生の説明によるとりんごが赤いということ 2 2022/06/17 16:02
- 大学受験 志望校で関関同立のどこにするか迷っている高3文系受験生です。 もともと自分は去年の夏の河合塾模試英国 9 2023/07/24 11:59
- 統計学 標準誤差の求め方 2 2022/07/04 19:59
- 大学受験 高三です。1ヶ月で偏差値があがりました。 共通テスト模試マーク6月(進研模試)で英語(リーディング) 7 2022/10/11 21:59
- 健康・生活トーク 潜在意識を使って願いを叶える方法を教えて下さい。 1 2023/03/21 11:58
- 大学受験 高三 進研模試偏差値34でした。 9月模試で英語と国語が30代前半でした。 英語のレベルは英検4級で 1 2022/10/08 14:32
- 大学受験 佛教大学の社会福祉士学部って相当レベル高いですか? 元々Fラン(BF)の大学進学予定でした。 通信制 1 2022/10/14 11:42
- その他(悩み相談・人生相談) 20代社会人女です。 他人と話してて、この人頭が悪いな、 と感じてしまう事に関して、 自分に対して罪 7 2023/08/03 06:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelでPC(パソコン)によって...
-
O(n log n)について2
-
有効数字について 以前質問をし...
-
c languageで 簡単な質問があ...
-
ExcelのINT関数の計算結果がお...
-
EXCELの関数"STDEV(標準偏差)"...
-
三菱シーケンサ(Aシリーズ)で...
-
VB.net Double と...
-
計算の丸め誤差の解消について
-
除算を使わずに10で割りたい。
-
2進数の足し算(C言語)
-
16進数 加算 減算 C言語
-
”/”を使わずに割り算したいんで...
-
CRCの計算方法について
-
VB6.0での小数点の扱いについて
-
VBAでミリ秒まで出力する方法
-
時刻の比較
-
2進数データのビット演算
-
教えて小数点の比較!(C言語)
-
C言語 型変換のタイミング
おすすめ情報