AnotherVision オプションパック 1. 概要 AnotherVision のための追加フィルタとフィルタ作成のための補助ツールです。 2. ツールの機能 式(スクリプト)を記述することでパレットを生成できます。 スクリプトというのはようするに簡単なプログラムですが、以下で例に示すような明 るさや彩度などの簡単な効果を与えるだけなら、だいたい 3 行程度で記述でき、サ ンプルの値を変更するだけでよいため、とくにプログラムを意識しなくても記述でき る程度のものと考えています。 3. 動作環境 ツールは HTML Application で記述されています。 見かけは普通のアプリケーション風ですが、結局のところ IE (InternetExplorer) 上で動作する HTML + スクリプトであるため、動作は全面的に IE に依存します。 動作にはおそらく最新の OS と IE が必要になります。 当方では以下の環境で動作確認を行っています。 - Windows XP + IE6(SP1) Win2000 でも動作すると思いますが、確認はしていません。 Win98 は動作確認を行いましたが、いくつか Win9x では標準でないコンポーネント を使用しているため、あらかじめそれらをインストールしておく必要があります。 Win98 の場合、少なくとも以下のものが必要です。 - MDAC の最新版(少なくとも2.5以上) http://www.microsoft.com/japan/msdn/data/download.asp - ScriptControl http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=151EF63D-23E9-4367-BB25-37310C6222FE 4. インストール 配付ファイルを任意のフォルダに展開します。 次に展開したすべてのファイルを AnotherVision フォルダに移動します。 (avfmk.hta が AnotherVision.exe と同じフォルダ階層になるようにコピーします。) このツールはどこに配置しても動作します。 しかし、このツールは展開されたフォルダにある filter フォルダ内のフィルタファ イル(.avf)を編集対象とするため、AnotherVision と同じフォルダに入れることで、 実際に使用するフィルタを編集できるようになります。 インストールで展開されるファイルには以下のものがあります。 avfmk.hta avfmk/loaddlg.htm savedlg.htm editdlg.htm avfmk.css avfmk.ico library.js filter.js filter/red.avf green.avf blue.avf satu_up.avf satu_up2.avf cont_up.avf 5. アンインストール インストールで展開したファイルをすべて削除します。 このツールはレジストリは使用しません。 6. 使い方 - 起動 展開フォルダ中に含まれる avfmk.hta をエクスプローラからダブルクリックして実 行します。 パレットの確認ビューが上部に 2 つ表示されています。 左がオリジナルの RGB の色を表しています。左のパレットは常に固定です。 右が作成したフィルタのパレットの色を表します。 新しいフィルタを読み込んだり、パレットを更新すると右のビューに反映されます。 - 終了 右下の「閉じる」ボタンでいつでも終了できます。 - クリア 現在読み込んでいるパレット情報、名前、ファイル名をすべて初期化します。 - 編集 フィルタファイルのテキストを直接編集する場合に使用します。 - 読込み filter フォルダ内のフィルタファイルを読み込みます。 - 保存 作成したフィルタに名前をつけて保存します。 - 適用 スクリプト入力欄に記述したスクリプトを実行してフィルタを作成します。 この「適用」がこのツールのメインの機能になります。 7. スクリプトについて まず以下を把握しておく必要があります。 これが基本です。 - 変数 src の値を入力とし、変数 dst の値を出力とする。 - 「適用」ボタンによってパレットの各色(216色)毎に216回このスクリプトが呼ば れ、変更後の色を計算する。 - 入力値の R 成分は src.r と表現する。G,B成分についても同様。 - 出力値の R 成分は dst.r と表現する。G,B成分についても同様。 - スクリプト内では RGB 値は 0.0〜1.0 で表現する(0〜255ではない)。 - スクリプトの文法は JavaScript そのもの。 - ガンマ、グレイスケール変換、HSI(色相、彩度、明度)の変換については あらかじめ library.js に定義してあるサポート関数を利用できる。 この library.js はユーザ定義関数を追加する場合にも利用する。 (必要に応じて直接編集してください) - 若干のプログラミングの知識が必要かもしれません。 次に、簡単な例を示します。 まず何もしないスクリプトです。 dst.r = src.r; dst.g = src.g; dst.b = src.b; このスクリプトは入力の値をそのまま変更せずに出力します。 R,G,B各成分をそのままコピーしています。 次に値を修正するサンプルです。 dst.r = gamma(src.r, 2); dst.g = gamma(src.g, 2); dst.b = gamma(src.b, 2); このスクリプトは RGB の各色要素を明るくするフィルタの例です。 スクリプトは 3 行から構成されますが、適用する色成分(R,G,B)が異なるだけで同じ 式を使用しています。先頭行では赤成分 src.r を入力として組み込み関数 gamma によって値を全体に引き上げ、それを出力先である dst.r に格納しています。 ここではガンマ値を 2 としています。この値を 1〜5 くらいの範囲で変更すると明 るさを調整できます。 単純に明るくするなら dst.r = gamma(src.r, 2); の代わりに dst.r = src.r + 0.5; などの式を用いることもできます。しかし、この方式ではもともと明度の高い部分の 色がとんでしまうので、代わりに gamma 関数を用います。 src、dst は RGB オブジェクトとして定義されています。 (RGB オブジェクトは当アプリケーションが提供するオブシェクトです。) dst への代入を色成分毎に行うのではなく、 dst = new RGB(gamma(src.r, 2), gamma(src.g, 2), gamma(src.b, 2)); などとして、新たに作成した RGB オブジェクトを代入することもできます。 彩度アップの例を示します。 以下のようなスクリプトになります。 hsi = rgb2hsi(src) hsi.s = gamma(hsi.s, 3); dst = hsi2rgb(hsi) rgb2hsi および hsi2rgb は当アプリケーションが提供する組み込み関数です。 rgb2hsi で色相、彩度、明度に分解してから彩度のみを操作し、hsi2rgb で RGB に 戻します。 このとき、hsi2rgb は RGB オブジェクトを返すため、dst にそのまま代入していま す。 最後に色相を操作する例を示します。 色相を変更するには以下のように単純に RGB を入れ替える方法と dst.r = src.g; dst.g = src.b; dst.b = src.r; HSI に変換してから色相パラメタをずらしてやる方法があります。 hsi = rgb2hsi(src) hsi.h += Math.PI * 2 / 3; dst = hsi2rgb(hsi) R,G,B の単純な入れ替えであればどちらも同じですが、,HSI を利用する例では任意 に角度を指定できる点が有利です。 これらの式を入力して「適用」ボタンを押すと適用された色が右側のビュー示されま す。 実際の色コードは確認したいセルの上でマウスカーソルを静止させてください。 ポップアップで色コードが表示されます。 なお、JavaScript やガンマ、HSI の色表現など簡単には説明ができません。 逆に、インターネット検索することで他の人が書いた詳しい文書を入手することがで きますので、この文書では説明は省かせていただきます。 (というか私には分かり易く説明することがができないので。) library.js にある RGB<=>HSI 変換は下のページの C ソースを参考に JavaScript 化したものです。 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=135&fi=no 8. 追加フィルタについて - red.avf RGB のうち R 成分のみを抽出するフィルタです。 以下の式で作成できます。 dst.r = src.r; dst.g = 0; dst.b = 0; もし、表示をグレースケールで行うなら、以下に示すように入力の r をすべての出 力成分に割り当てます。 dst.r = src.r; dst.g = src.r; dst.b = src.r; - green.avf RGB のうち G 成分のみを抽出するフィルタです。 以下の式で作成できます。 dst.r = 0; dst.g = src.g; dst.b = 0; - blue.avf RGB のうち B 成分のみを抽出するフィルタです。 以下の式で作成できます。 dst.r = 0; dst.g = 0; dst.b = src.b; - satu_up.avf 画面の彩度を強調します。 以下の式で作成できます。 hsi = rgb2hsi(src) hsi.s = gamma(hsi.s, 3); dst = hsi2rgb(hsi) ガンマ値は 3 としています。 この値を 1〜5 くらいの範囲で変更することで強調の具合を調整できます。 - satu_up2.avf 画面の彩度を最大限に強調します。 ただし、色のバランスは崩れます。 以下の式で作成できます。 hsi = rgb2hsi(src) if (hsi.s != 0) hsi.s = 1; dst = hsi2rgb(hsi) - cont_up.avf コントラストを強調します。 以下の式で作成できます。 dst.r = gamma2(src.r, 0.3); dst.g = gamma2(src.g, 0.3); dst.b = gamma2(src.b, 0.3); 内部的にガンマの変形式を用いるため、ガンマ値を使って計算します。 コントラストを強調するにはガンマ値 0.1〜1.0、コントラストを弱めるにはガンマ 値 1〜5 を指定します。2 番目のパラメタがガンマ値になります。 9. 既知の問題点/実装予定/要望など - 既存のパレットにスクリプトを適用できない 現状の仕様です。 - アンチウィルスソフトが警告を出し、プログラムを実行できない プログラムが HTML Application で作成されているためです。 これも仕様になります。 アンチウィルスソフトのセキュリティレベルを下げれば実行できますが、それはお 勧めしません。 このプログラムのみウィルスチェックの対象からはずすことができるならそのよう に対処してください。 やり方についてはアンチウィルスソフトの使い方を参照してください。 10. 修正履歴 2004.05.05 ver0.00(プロトタイプ版) 新規作成 2005.02.21 ver0.01 空白を含むフォルダ名を処理できない不具合の修正 11. 使用条件、再配布について 本プログラムはフリーソフトウエアです。 使用、配布は自由に行うことができます。 本プログラムは無保証です。 本プログラムの使用においた生じた如何なる損害についても作者は一切の責任を負 いません。 12. 連絡先 金子尚史(kanegon) e-mail: wbs01621@mail.wbs.ne.jp