配列ディザリング

概要

配列ディザリング(Ordered Dithering)はあらかじめ決められた値を持つ配列の値を閾値として各画素をどの値に近似するかを決定するディザリングアルゴリズム.単に元の色より使える色数が少ない時や白黒にしたいときに、自然さを残すように使用することができる.
Facebookシェア Twitterツイート LINEで送る このエントリーをはてなブックマークに追加
この章を学ぶ前に必要な知識
0
条件
  • 任意の画像
  • 閾値マップのサイズを指定しておく.
  • 閾値に対応する色を決めておく.
効果
  • 色数を減らしながらもグラデーション等を表現
  • ノイズを加え鮮明な画像に見せる
  • 白黒の二値化に限らず、数段階の階調にも変換可能
  • 白黒の場合、元の入力画像のグラデーションを白黒の比率で表現
  • 周りの画素に影響しないため高速
ポイント
  • あらかじめ固定サイズnxnの閾値のマップを保持し、それを元にどの色に近いかを決定

解 説

wikipediaより引用. 下の256階調のグレー画像を 上記の二値化画像に変換している.
配列ディザリング(Ordered Dithering)はあらかじめ決められた値を持つ配列(閾値のマップ)の値を閾値として各画素をどの値に近似するかを決定するディザリングアルゴリズム. 単に元の色より使える色数が少ない時や白黒(二値化)にしたいときに、自然さを残すように使用することができる. 明るさがちょうど最大値の半分の値になったときに出力画像が市松模様(チェック上)になる.白黒画像であるなら遠目に見るとグレー色に見えてこれは半分の値に等しい. 手順概要 nxnの閾値マップを使うとすると自ずと閾値は決まる.あらかじめnxnの大きさを決めておく. また、処理後を何種類の色にするかも決めておき、閾値を超えた時にどの色を使うかも決めておく. 1. 入力画像のうち処理する箇所nxnを画像の左上から順に持ってくる.(部分画像Aを持ってきたする) 2. 1.で得たnxnサイズの部分画像Aとnxnサイズの閾値マップを比較して、どの閾値に近くその閾値の上か下かでどの色を割り当てるか決める. ex) 白黒画像にする場合は、閾値より下なら黒、上なら白とする. 3. 2.を全ての領域に対して繰り返す.
Ordered Dithering(配列ディザリング)とは
配列ディザリングの処理概要図.
閾値マップはできる限り閾値が偏らない配置になっている. nxnの配列マップとして、nを2の累乗とすると、 $$\boldsymbol{M}_{2n} = \frac{1}{4n^2} \times \begin{bmatrix} 4n^2 \times \boldsymbol{M}_n & 4n^2 \times \boldsymbol{M}_n + 2 \\ 4n^2 \times \boldsymbol{M}_n + 3 & 4n^2 \times \boldsymbol{M}_n + 1 \end{bmatrix}$$ の形で表記することができる. 配列ディザリングは、注目画素にしか影響しないで出力の値を決めることができるため(コンテキストがないため) 高速に並列に処理することができ、単純ながらも高速で効果的なディザリングを行うことができる.
配列ディザリングの特徴
この章を学んで新たに学べる
Comments

Reasons
>>隠す