HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0430
こん一番近い色を割り当てる方法5解決


こん

リンク

2012/4/30(Mon) 01:36:40|NO.46345

はじめまして
早速ですが質問させていただきます

現在、980個のアイコン画像一つ一つをドットに見立てたドット絵を作ろうとしています
そのためまず、元の画像を用意して、
そのドット一つ一つに一番近い色のアイコン画像を割り当てなければなりません

それで、僕が試した方法は
1.まず、アイコン画像一つ一つの平均色を出しファイル名とともにリストとして保存する
2.ドット絵にしたい元画像のそれぞれのドットの色の値を出し、リスト内の値から引いていき
 RGBの差の和がもっとも少ないアイコン画像ファイルをまたリストにする
3.2で出来たリストのファイルを一つ一つ読み込み16×16にリサイズして並べていく

この方法で出来た画像がこれです
http://uproda.2ch-library.com/520038Jg0/lib520038.png
これを見ていただければ僕が何をしたいのか分かると思います

しかし、見て分かるように色というより明るさで割り当てられてるように思います

50×50の画像を1.〜3.までの処理を終えるまで約1時間ほどかかりました
スクリプトの効率が悪いのは原因一つです

そこで、質問なのですが
例えば、
127,254,84
18,222,123
11,24,218

この3つの色の値から102,236,73という値に
もっとも近い値はどれかを算出する方法を教えていただきたいのです

考え方だけでもいいのでどなたか回答よろしくおねがいします



この記事に返信する


FPW

リンク

2012/4/30(Mon) 03:27:08|NO.46349

しっかり動作確認したわけではないので確実な方法かは分かりませんが、
近い色を調べたいのであれば、RGB空間を想定して色点と色点の間の距離を
測ればいいと思います。

すなわち
(スコア)=(調R-基R)^2+(調G-基G)^2+(調B-基B)^2
調:調べたい点  基:基準点
として一番スコアが小さかった点が最も色が近い点です。

とりあえずこんさんが例として挙げられた三色で試したところ、
一番近い色を選ぶことが出来たのでこれで問題ないと思います。

もしかしたら既に確立された方法が他にあるかもしれないです...
てかきっとあるでしょうがこれでも良いかと。



FPW

リンク

2012/4/30(Mon) 03:34:22|NO.46350

あ、スクリプトとしては
(スコア)=(調R-基R)*(調R-基R)+(調G-基G)*(調G-基G)+(調B-基B)*(調B-基B)

でしたね。



こん

リンク

2012/4/30(Mon) 04:13:52|NO.46351

2乗するのはマイナスにならないようにですか?



TMKL

リンク

2012/4/30(Mon) 06:40:17|NO.46355

三次元空間(X,Y,Z)において、
(x1,y1,z1)と(x2,y2,z2)の距離は、

二点間の距離=√(x2-x1)+(y2-y1)+(z2-z1)
となります

今回は、色のRGBをXYZの広がりとし、
(それが「RGB空間」)
それぞれの色を「点」として、
基準値との距離差(これが色のズレになる)を求めた感じです

大小比較だけなので、√を削除ています

決して、-を消去するのが目的ではありません
(まぁ-は消えますが . . . )



で、2乗は必要かという話をすると、必要です!
例を挙げて説明します


基準(100,100,100)

色1(102,102,100)
色2(101,103,100)


このようなとき、2乗しなければ、ズレは色1、色2ともに4ですが、
2乗すると色1のズレは8、色2のズレは10となり、
色1の方が、基準に近いことが分かります



. . . と、出しゃばって説明してみる



こん

リンク

2012/4/30(Mon) 18:17:23|NO.46377

>TMKLさん
何故、2乗するのかやっと分かりました
例がとても分かりやすかったです

僕は2乗せずに足していたのでRGBそれぞれの色の差が反映されず
色合い関係なしの明度だけで判断されたわけですね^^;

今、少し書き換えてもういちどやってみました
http://uproda11.2ch-library.com/346827WnK/11346827.png

横1列は同じアイコンがかぶらないように設定しました
予想よりうまくいってよかったです^^

お二人とも、ありがとうございました
いい勉強になりました



ONION software Copyright 1997-2021(c) All rights reserved.