2007-04-28[n年前へ]
■Spectrum Color Conversion
Spectrum Color Conversion は分光的な色変換を行うことができるWEBページです。 Spectrum Color Conversion::RGBtoCMY はディスプレイで用いられているような赤・緑・青のRGB加算混色で示された色(スペクトル)を、印刷などで用いられているシアン・マゼンダ・イエローのCMY減算混色で表現された色(スペクトル)へと変換します。その逆に、CMYからRGBへの変換を行うのが、Spectrum Color Conversion::CMYtoRGB です。各色に対する入力値は、RGBtoCMY・CMYtoRGBのいずれの場合も、0から255までの値を入れるようになっています。なお、CMYtoRGB の際のD65という欄には、255という数値が入っていますが、これは減算混色時にインクを照らす照明光の明るさです。この数値を変える必要は特にありませんが、もしも、この照明光D65の強度を変えたりしてみれば、その強度に応じて明るくなったり・暗くなったりすることは確認できると思います。
CMY<=>RGB の色変換の際に用いている基準は、「スペクトル強度の差の自乗和が最小になること」です。つまり、人の視覚特性などに特化した色変換ではなく、単純に分光強度の形状が近くなるような色変換を行っています。また、赤・緑・青、および、シアン・マゼンダ・イエローの各色のスペクトルは非常に大雑把な値を使っています。特に、シアン・マゼンダ・イエローに関しては、印刷で用いられているインクとは異なり、比較的理想に近い吸収スペクトルの場合を示しています。もしも、赤・緑・青、および、シアン・マゼンダ・イエローの各色のスペクトルを眺めてみたい場合には、RGBtoCMYやCMYtoRGBの入力値として、単色だけを255にして、それ以外の色を0にしてみて下さい。たとえばシアンだけがある場合の単色スペクトルを眺めたければ、シアン=255, マゼンダ=0、イエロー=0にする、という具合です。すると、その色だけを使った時のスペクトルを見ることができるわけです。ただし、減産混色の場合に表示されるのは、いわゆる吸収スペクトルではなく、インクに吸収されなかったスペクトルということになります。また、CMYが示している量には対数変換がかけられています。
RGBtoCMYとCMYtoRGBは、相互に入力スペクトルと再現されたスペクトルを比較することもできますから、RGBとCMYの間で相互に色変換を繰り返しながらスペクトルの変化を眺めてみるのも面白いかもしれません。
なお、このSpectrum Color Conversion は、離散化を必要としない連続的なスペクトル演算・表示を扱うためのパッケージをWolfram Technology 社のMathematica上で作成し、webMathematica エンジンを用いることで、web アプリケーションとして動作しています。
2007-05-11[n年前へ]
■「画像ジェネレータ・サービス」を簡単に作るジェネレータ・サービス
15秒で作る画像処理サーバ
「画像ジェネレータ・サービス」を簡単に作るジェネレータ・サービスで、「画像処理ジェネレータ・サービス」を作り出す"Imagenerator"を作りました。例えば、下に貼り付けたのは、Imageneratorで作り出した「古いポートレート」ジェネレータです。このように処理ページを独立に作ることもできますし、下に貼り付けたように他のページ内に貼り付けることもできます。
一方、自分の画像を自分で変えて楽しむのはImagination You Makeです。現時点の「画像処理ジェネレータ・サービス」を作り出す"Imagenerator"とImagination You Makeが一番異なるのは、画像間合成機能とテキスト描画機能です。この二つの機能を知ることが、"Imagenerator"を使いこなすコツです。なぜなら、いわゆる(滝川クリステルジェネレータのような)「画像処理ジェネレータ」の面白さ・楽しさを決めるのは、マスク画像とコメントの内容であることが多いからです。もちろん、イラストレーション化や色調補正を用いた画像処理サービスを作るために使う場合には、マスク画像とコメントの内容がすべてなどということはありません。けれど、このような場合でも、マスク画像の使いこなし方を知れば、画像加工の種類を増やすことができます。あなたがマスク画像としてめにアップロードした画像は、いわば(あなたの)"Imagenerator"の機能拡張になるのです。
"Imagenerator"では、いつでも"CURRENT IMAGE"に対して画像処理がかけられます。"CURRENT IMAGE"と"MASK IMAGE"は、"Swap backup and current"ボタンを押すことでいつでも交換することができます。ですから、自分がアップロードした画像を"CURRENT IMAGE"として使うこともできますし、"MASK IMAGE"として使うこともできるのです。また、「"Imagenerator"であなたがPublishした瞬間のMask Imageが、ユーザーが画像をアップロードした瞬間のMask Imageになる、ということ」と「StartボタンとStopボタンを押すまでの作業だけが、ユーザーが投稿した画像に対して行われる」という2つのことが、マスク画像機能を使いこなすためにはとても大切です。
"Imagenerator"には、三種類の画像間合成機能があります。1つは、マスク画像の左上の点の色を透過色として用い、マスク画像とユーザ投稿画像を合成する機能です。例えば、左上の画像がRGB値で[255,0,0]の赤色だったとしたら、"CURRENT IMAGE"は"MASK IMAGE"の[255,0,0]の赤色に近い部分に"CURRENT IMAGE"が合成されたような画像になります。だから、雑誌の表紙風「画像ジェネレータ」を作りたい時には、「雑誌のタイトルや文字部分」以外を同じ色で塗りつぶし、画像の左上の点をその色にしておけば良いのです。「POPULAR SCIENCEの表紙」風画像ジェネレータは、そのようにして作成したものです。
2番目の画像間合成機能は、マスク画像をユーザ投稿画像の透過度合いとして用いることで、新しい画像を作成する機能です。例えば、黒背景に白い色で字を描いた画像を"MASK IMAGE"として用いれば、"CURRENT IMAGE"の「白い字」の部分だけが残り、それ以外の部分は白い色で塗りつぶされます。この種類の画像合成機能を使えば、ユーザがアップロードした画像を好きな形で切り抜いたりする機能を簡単に実現することができます。
そして、3番目の画像間合成機能が「顔合成用の機能」です。これは、"CURRENT IMAGE"と"MASK IMAGE"に入っている顔を合成する機能です。前もって、顔位置検出機能を使って、"CURRENT IMAGE"と"MASK IMAGE"の顔の瞳や口の位置を合わせておいて、"CURRENT IMAGE"の髪型や顔の形に"MASK IMAGE"の瞳や鼻や口を合成するのです。つまり、「他の人の髪・顔型を自分がしたらどうなるか」「自分の髪・顔型に芸能人の目・鼻・顔を合成したら、どうなるか」なんていうことを眺めることができる画像処理サービスを作ることができるのです。
また、現在の(吹き出し機能ではなく)単純なテキスト描画は"Imagination You Make"と違って、描画する場所を選ぶことができません。文字描画位置は自由ではありません。とはいえ、「ニュース画面などでは説明文章が下部に表示されることが多い」ので、画像ジェネレータを作る用途には、ある程度使いものになる…ことを願っています。