- 締切済み
RGB、HSVの色相の範囲
R,G,B,Y…などの色相をRGB値で表した範囲などで定義されているのでしょうか? またHSVでは、色相はHの値ですが、 R,G,Bなどの色相の範囲の定義はあるのでしょうか? S、Vで無彩色を示す範囲も分かる方がいたら教えてください。
- yduakiishi
- お礼率76% (16/21)
- 科学
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
みんなの回答
>30≧H>90はY色相、90≧H>150はG色相など >0≦S<0.1は無彩色など そういった定義はどこからがYでどこからがGなのかという定義が存在しないと表現不能。(境界値と言う筈) RGBが120度ずつで分割されていて 各頂点が Rの最大値・Gの最大値・Bの最大値、となっている だからその間はそれらが混在してるわけだからR1%とG100% これは緑?赤? 人間的には緑かもしれないけれどデジタル、または理論数値的にはどちらも混ざった色という答えにしかならない。 他の値に関しても同様。 http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=HSV%20%E8%89%B2
ええと 光の色の話なのかPCのRGBの話なのか 質問の文が変で 聞きたい事がさっぱりわからないんだけど? HSV←→RGB はRGBのbit深度が決定してないとPCでは変換できないよ。 算術的には%でなら求まる。
補足
文章が分かりづらくてごめんなさい。 RGBだと分かり辛いのでHSV空間だと 例えば、 30≧H>90はY色相、90≧H>150はG色相など 0≦S<0.1は無彩色など そういった定義はありますか? この説明なら分かりますか?
関連するQ&A
- RGB値からHSV値への変換式に関して質問があります.
RGB値からHSV値への変換式に関して質問があります. S=MAX[R,G,B]-MIN[R,G,B] V=MAX[R,G,B] の2式は分光分布を見れば,その式の意味は理解できました. ただ, H=60*(G-B)/(MAX[R,G,B]-MIN[R,G,B]) if R=MAX[R,G,B] H=60*(B-R)/(MAX[R,G,B]-MIN[R,G,B])+120 if G=MAX[R,G,B] H=60*(R-G)/(MAX[R,G,B]-MIN[R,G,B])+240 if B=MAX[R,G,B] の式の意味が理解できません. なぜ,最大値でない残りの2値の差を彩度で割ると色相が算出されるのでしょうか. どなたか分かる方,回答よろしくお願い致します.
- 締切済み
- 科学
- PCCS色相環のビビッドトーンのRGB値を教えてください。
色彩のPCCS色相環をPC上で表示しようとしています。ビビッドトーンの各色のRGBの値が知りたくてインターネットを検索したのですが、サイトによって情報が異なっているようです。 こちらのサイト http://www.geocities.jp/net_t3/color/tone-v.html とこちらのサイト http://homepage1.nifty.com/color-gogo/PCCS.html なぜこのように分かれてしまうのですか? 一意の対応表、計算式、規格のような物はないのでしょうか? それとも、RGBの値は自分の目で見て決めるしかないのでしょうか?
- ベストアンサー
- その他([技術者向] コンピューター)
- 画像処理アルゴリズム
いちおうC#でやってますが、あくまで考え方、概念、アルゴリズムの回答で構いません 今取りあえず、ある画像の全ピクセルのRGBとHSVデータを配列として持っているとします 色情報[x,y][R]に赤 色情報[x,y][G]に緑 色情報[x,y][B]に青 同様に HSV[x,y][H]にH HSV[x,y][S]にS HSV[x,y][V]にV ここから、配列をfor文で回してもなんでもいいんですが、画像の色情報を取得して 1.単色刷り画像の取得(白、黒、ある色のみで高声された画像、閾値でふるい分け) (黒白赤,黒白薄緑とか) を実現するためにどうすればいいでしょうか? (全部の色を混ぜてその色の彩度で判定・・・しらたちょっと予想と違う検索結果に・・・)
- ベストアンサー
- その他(プログラミング・開発)
- C++の関数等を使った書き方
C++OpenCVで関数等を使ってプログラムをみやすくまとめたいのですが、教えていただけないでしょうか。 プログラムの内容はHSV変換をしています。 これをmain文より外に出したい場合どのような書き方をすればいいでしょうか。 返り値はHSVの3つがほしいです。 struct _HSV { int H; int S; int V; }HSV[2000][2000]; main(void){ 宣言 src_img = cvLoadImage (filename, CV_LOAD_IMAGE_COLOR); for(y = 0; y < src_img->height; y++) { for(x = 0; x < src_img->width; x++) { p[0] = src_img->imageData[src_img->widthStep * y + x * 3]; // B p[1] = src_img->imageData[src_img->widthStep * y + x * 3 + 1]; // G p[2] = src_img->imageData[src_img->widthStep * y + x * 3 + 2]; // R if (p[0] >= p[1] && p[0] >= p[2]) {max = p[0];} //Bがmax else if (p[1] >= p[0] && p[1] >= p[2]) {max = p[1];} //Gがmax else {max = p[2];} //Rがmax if (p[0] <= p[1] && p[0] <= p[2]) {min = p[0];} //Bがmin else if (p[1] <= p[0] && p[1] <= p[2]) {min = p[1];} //Gがmin else {min = p[2];} //Rがmin if(max==min){ HSV[y][x].H = 0; HSV[y][x].S = 0; HSV[y][x].V = p[0]; //R } else { if(max==p[2]){ //Rがmax HSV[y][x].H = 60 * (p[1]-p[0])/(max-min); } else if(max==p[1]) //Gがmax { HSV[y][x].H = 60 * (p[0]-p[2])/(max-min); HSV[y][x].H += 120; } else //Bがmax { HSV[y][x].H = 60 * (p[2]-p[1])/(max-min); HSV[y][x].H += 240; } if(HSV[y][x].H < 0) { HSV[y][x].H += 360; } } if(x % 60== 0){ fprintf(fp, "%d ,%d\n", HSV[y][x].H, HSV[y][x].S); } } } } 初歩的な質問ですみません。 できれば、関数以外でもこうすれば見やすい等ご指摘頂けると助かります。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- ラベルをRGBに変換する方法
k=1,2...,n-1,n の値をRGBに変換したいんです。 k=1をR=50,G=89,B=32 という風に。(数字はランダムです) RGBはすべて0~255の範囲です。 近いkのRGBとは離れた色にしたいんです。 画像関係のことなんですが、処理は数学なので投稿しました。 お願いします。
- ベストアンサー
- 数学・算数
- 色相の平均値の算出方法
画像内の色相の平均値の算出方法 画像を、HSV色空間で表現した場合に、 色相の平均値を算出する方法を教えていただきたく思います。 色相は円環で表現される為、単純に加算して画素数で割るという手法に疑問を覚えます。 問題点の例: 色相を0~360の範囲で表現した場合において、 0の画素が5ピクセル分、 359の画素が5ピクセル分存在するような画像の場合、 単純に平均を算出すると179.5となります。 しかし、色相は円環で表現される為、 平均値としては359.5の値をとるのが正しいと私は思います。 上記の問題に対して、解決案をご教授願いたく思います。 もしくは私の解釈に間違いがありましたら、ご指摘をお願いいたします。 よろしくおねがいいたします。
- ベストアンサー
- 科学
- 画像のRGBの値
画像フィルタが必要になり、そのために画像の性質を知るために、画像のRGBの値を直接求めようと思いました。 具体的には、画像ファイル(BMP)があり、その画像の全画素のRGBの値をテキストファイル(CSV形式)に変換したいのです。そのようなツールありますか? 特殊な用途なので、 while(getpixel(r,g,b)) { printf("%d,%d,%d\n",*r,*g,*b); } のようなプログラムを書かないといけないと思うのですが、「BMPファイルの先頭から順番に画素のRGBの値を持ってくる関数getpixel」が書けません。
- ベストアンサー
- その他([技術者向] コンピューター)
- 人間キャラの肌を塗るときのRGBについて
基本的にはR255G225B205で肌を塗っているのですがどうも色が濃すぎてしまうんですが、それよりも薄くすると逆に薄すぎて肌の色が見えなくなってしまいます(透明になってしまいます)。 絵を描く人は肌の色を塗るときにRGBをどのようにかえているのでしょうか? どのように塗っているのでしょうか? 色オンチですが、わかる方いましたらどうか教えて下さい・・お願いいたします(´・ω・`;) ちなみに彩色テクニックという本を買いましたが、普通にお絵かきする上でまったく役に立ちません。
- 締切済み
- その他(アート・創作)
- サーモグラフィのRGB値
白黒画像を輝度値(0~255)が小さいときは青に,大きくなるにつれて緑,黄を経て赤になるというサーモグラフィーの色関係に対応させて色を付けたいのですが、RGB値の指定の仕方が分かりません…。現在はRGB値を以下のように定義しています。 輝度値 R G B 1 0 0 128 2 1 1 127 3 2 2 126 : : : : 127 127 127 1 128 128 128 1 129 1 127 1 : : : : 255 1 1 1 上の定義の仕方をいろいろ変えてみたのですがサーモグラフィーの緑や黄色部分の色合いの表現が難しくうまくいきません。 よろしくおねがいします。
- 締切済み
- C・C++・C#
お礼
境界値という言葉が適切でしたね。 色に関してそのようなことは重々承知はしているのですが、、、 やはり境界値の定義は出来ないのですね。 わかりました、ありがとうございます。