ディザ法(2)

8月 22, 2012 by · Leave a Comment
Filed under: Coding の素 
Bookmark this on Delicious
[`livedoor` not found]
[`yahoo` not found]

カラーイメージを2値化しながらも、自然な濃淡を感じさせる手法ハーフトーニング。
それを実現するための2つの方法のうちの1つ、ディザ法について前回、見ました。

ディザ法にはランダム・ディザ法と組織的ディザ法の2つがある。

ランダム・ディザ法はその名のとおり、ビットマップデータの各ピクセルごとにランダムで閾値を設定して2値化する方法。

組織的ディザ法は 4×4 のマトリックスの各要素に閾値を格納し、それを型紙として、ビットマップデータと突き合わせて2値化する方法。
そして 4×4 のマトリックスの各要素にどのような順番で閾値を格納するかで6つのパターンがある、ということまで見ました。

Read more

ディザ法(1)

8月 21, 2012 by · Leave a Comment
Filed under: Coding の素 
Bookmark this on Delicious
[`livedoor` not found]
[`yahoo` not found]

白と黒の2色だけで、カラーイメージの自然な濃淡を表現する方法。今回はディザ法について見てみます。

閾値法は、イメージデータの全ピクセルを同一の閾値で判定し、白か黒に置き換える方法でした。対してディザ法は、ピクセルごとに異なる閾値で判定し、白か黒に置き換える方法です。
如何にしてピクセルごとに異なる閾値を設定するのか。その設定手段により、ディザ法は以下の2つに分けられます。

  1. ランダム・ディザ法
  2. 組織的ディザ法

その他にもディザ法はあるっぽいんですが、この2つだけを扱います。

Read more

ハーフトーニング

8月 20, 2012 by · Leave a Comment
Filed under: Coding の素 
Bookmark this on Delicious
[`livedoor` not found]
[`yahoo` not found]

今のコンピュータはリソースが潤沢なので、画像処理における2値化といえば、閾値による2値化(閾値法)だけを注目してればいいんじゃないか、というのが個人的な印象。
ところで閾値法はイメージデータの全ピクセルを同一の閾値で処理するから、黒い領域と白い領域がベタっと分離してしまいますよね。

かつてコンピュータがモノクロ表示しかできなかった時代、あるいはモノクロプリンタで印刷する場合、カラーイメージをどのようにして表示ないしは印刷するか、ということを追求し、閾値法とは異なる2値化の方法で、自然な濃淡が表現されたとのこと。

で、これからしばらくは、その自然な濃淡を表現する2値化の種類と ActionScript 3.0 による実装の話。

Read more

Strategy パターン

7月 23, 2012 by · Leave a Comment
Filed under: Coding の素 
Bookmark this on Delicious
[`livedoor` not found]
[`yahoo` not found]

今回 wonderfl に投稿したのは、何の変哲もない、特筆すべきこともないピクセレート・プログラムです。

Pixelate by BitmapData#fillRect – wonderfl build flash online

このコードのオレ的ポイントは何かというと、コーディングに当たって Strategy パターン を意識したという点。
プログラム実行時に複数あるアルゴリズムを選択するパターンだそうですが、ボタンを押して表示形状を変えるところに Strategy パターンを導入しています。

Read more

BitmapData#threshold

7月 3, 2012 by · Leave a Comment
Filed under: Coding の素 
Bookmark this on Delicious
[`livedoor` not found]
[`yahoo` not found]

少しでも時間を置くとすぐに忘れてしまう BitmapData#threshold について、いいかげん非効率も甚だしいんで、今ここで備忘録としてエントリー。
書式は以下。

public function threshold(
  sourceBitmapData : BitmapData,
  sourceRect       : Rectangle,
  destPoint        : Point,
  operation        : String,
  threshold        : uint,
  color            : uint    = 0,
  mask             : uint    = 0xFFFFFFFF,
  copySource       : Boolean = false
):uint

threshold() メソッドで押さえとくべきツボは何といっても第7引数 mask。
あと、その第7引数に指定した値によって、第5引数 threshold も若干の注視が必要になるってところでしょうか。
それ以外の引数は取り立てて問題はないですね。

Read more

« 前ページへ次ページへ »