画像処理いろいろ
2010/01/04 20:59 - AS3.0
こないだ3冊ほど画像処理本を買ったわけですが、学んだ成果のうち、今後も頻繁に使いそうなものをオレオレライブラリーにまとめているところです。
せっかく労力費やして勉学に励んでおるところなので、徒然なるままに、本の内容を自分なりに咀嚼したものと、実際に書いたコードを、記事としてエントリーしていこうと思います。
といってもオレ様ちゃんの理解力じゃ、いきなり写真画像をボロノイ図でもってステンドグラス化なんてできません。エッジ検出やエンボスといったところから亀の歩みで消化していきたい所存。
ところで、それらをおこなうには、前処理としてグレイスケール化をしておいた方が良いようです。
なので、初回はグレイスケール化あたりから始めようかと思いますが、その前に、今後書いていく各種画像処理クラスの基本仕様を固めておきましょう。
これから列挙していこうとしているクラスがやることは BitmapData に対して何らかの処理をおこなう、ということです。 内部処理的には BimtapData.applyFilter の使用になります。
BimtapData.applyFilter は第2引数の Rectangle と第3引数の Point で、対象 BitmapData の特定範囲に対して処理を施すことができますが、今回組むクラスでは、対象 BitmapData 全域のみをターゲットにすることにします。
第2引数の Rectangle は、対象 BimtapData のサイズによって可変ですが、第3引数の Point は Point(0, 0) で固定することができます。よってこれを const として定義します。
これら一連の画像処理クラスは○○Effector クラスとし、処理実行関数は Class.applyEffect(対象 BitmapData) として、全クラス共通にしたいと思います。
それらの仕様から、各画像処理クラスで共通部分を抽出し、それを抽象クラス AbstractEffector として定義しておきたいと思います。 interface ではなく、抽象クラスの継承で設計していくことにします。