質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

4回答

3207閲覧

色の見分け方

tastun

総合スコア22

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

1クリップ

投稿2017/07/10 03:27

編集2018/01/05 06:46

###前提・実現したいこと
javaで適当な色からHSV値取得してその色は赤,青,緑,それ以外の色の中から
どれかを判断するプログラムを作成しております。

java

1int C =; 2float[] hsv = new float[3]; 3Color.colorToHSV(C, hsv);

特定の色からHSV値を取得することはできたのですが、赤,青,緑それぞれのHSVの範囲を
考慮して判断することができません。また、H(色相)はほぼ固定の値で大丈夫だと思うのですが、
明るい色や暗い色の時を判断するときのS(彩度)とV(明度)の考慮の仕方がわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

色の判断は人の主観によるところが大きく、また周囲との比較によるところもあり、一概に言えないと思います。

RGBとHSV・HSBの相互変換ツールのようなところで実験してみて、どの割合で判断すればいいか見てみるといいのではないでしょうか。

投稿2017/07/10 04:45

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

HSVを使う理由が見当たりません。

赤、青、緑にカテゴリ分けするのであれば、RGBの方がやりやすくないですか?

Hが0(赤)でも、SとVが255なら白になりますし、0なら黒になります。
その境界線を定義するのは感覚による所が大きくなります。

赤、青、緑にカテゴリ分けが目的ならば、まさに赤、青、緑が明確に数値化されたRGB以上に最適な色空間はないと思います。
SとVの閾値を設定して判別もできますが、おそらくRGBの各色の突出具合などを計算したほうが精度が高いと思います。
逆に、色相環を使いたい場合はRGBではなくHSVである必要があります。

やりたい事と、それがHSV色空間とマッチしているかを明確にした方がよいと思います。

投稿2017/07/10 03:38

編集2017/07/10 05:06
pashango2

総合スコア930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pashango2

2017/07/10 03:47

色距離などを扱いたい場合は、HSV色空間よりもl*a*b色空間の方が適しています。 まずは、l*a*b色空間を検索することをおすすめします。
KSwordOfHaste

2017/07/10 05:35

人の目に感じる色の違いを問題にするならpashango2さんがおっしゃるとおりと思いました。 HSVの範囲を単純に決めても人の目が感じる色味の違いには相当しませんね!
guest

0

いろいろご意見があって興味深いですね。他の方のおっしゃるように、どういう基準で近い色と判断するかは質問者さんの必要とする要件によるところが大きいかと思います。

私もちょっと例を考えてみましたが、色はpashango2さんの案のようにRGBで扱うことにして、その色と黒・赤・緑・青・黄・シアン・マゼンタ・白の8色(ちょうど立方体の8頂点にあたる色)とのユークリッド距離を求めて、一番近くにあるのはどの色か、で判定するなんていうのはどうでしょう。

投稿2017/07/10 05:16

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

追記:pashango2さんの回答とコメントを拝見して「なるほど」と思ったので追記します。
HSVは以下のように白色光成分Wと一番強い光成分Vの比率がSaturationで白色光以外の2つの色だけが突出した部分hの2色の割合でHueが決まります。自分の回答は「目でみた色味の違い」ではなく「計算を単純化した大雑把な判定方法」でしかありません。

0.0................1.0 R |****|********** G |****| B |****|** <-W-><----h----> <------V------->

R,G,Bを直接用いて判定したとしても意味的に大雑把さに大した違いはなさそうに思います。「色空間上の特定の色と同じとみなせるか」といった判断ではどのような空間を使うにせよ基準の色との距離をなんらかの計算で求めて「近い」「遠い」を判断しますが、大雑把な計算ではなく「目で見る色味の違い」に配慮するなら、pashango2さんコメントにあるlab空間での色距離で判断するのが合理的に思えます。しかしそうまで厳密に考えるのではなく「大雑把」でよいならRGBやHSVで「適当に範囲を決めて」計算するというのでも「それはそれで一つの方法」だと思います。


「ほぼ赤」「ほぼ青」「ほぼ緑」「それ以外」のようなファジーな判定をしたいということかと思います。

S(彩度)とV(明度)の考慮の仕方がわかりません。

  • 明度

色味を判定する前提なら明度はあまり関係しないと考えてよいと思います。もちろん0だと色相に意味がでないため「それ以外」という判断になると思います。「暗すぎて色をはっきり視認できない」ことを「ほぼ赤」とはいえないという考え方なら「明度がある一定値以上」という条件を付ければとりあえずよいと思います。

  • 彩度

彩度が0.0ならグレースケールになるので色味はなく「それ以外」ということになるでしょう。0.0以外だったとしても「ピンク=白色光+赤」は「ほぼ赤」とはいえないという判断をするなら彩度が低すぎる場合は赤、青、緑のいずれかとは見做さないことになるでしょうから、明度と同様に「彩度がある一定値以上」という条件を付けることになると思います。

明度や彩度の閾値をどの程度に設定するかは応用(目的)次第と思います。

ライブラリを使用しない

ライブラリーを使用するかどうかの問題ではなく、目的に合った仕様をどう設定するかの問題だと思います。

投稿2017/07/10 03:52

編集2017/07/10 05:58
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問