【OpenCV】3つの擬似濃淡変換(ディザリング)の解説【Python】
擬似濃淡変換(ディザリング)とは 様々な画像処理の中に、擬似濃淡変換(以下ディザリング)というものがあります。 このディザリングは2値を扱うという特徴があり、「0」と「255」の2つの値しか扱いません。こういった画像は、2値画像といいます。 基本的な2値画像は例えばこういったものです。 こうすることによって、データ量を少なくすることができますが、やはり「0」と「255」しかないということで、画像のなめらかさは失われています。 そこで、ディザリングを使って、基本的な2値画像では再現できない画像のなめらかさを、少し複雑なアルゴリズム(仕組み)によって再現してあげます。 今回は普通の2値画像の紹介も含めて、3つの有名なディザリングを紹介していきたいと思います。 そして今回しようする画像はオープンソースの画像で、先ほど2値化された状態で紹介しましたが、こちらになります。 ファイル名は「lena.jpg」にしました。 もはやお馴染みですね。 普通の2値画像 まずは2値化する際に、ソース画像をグレースケール化してカラーチャンネルを1つにします。 次に、閾値(しきいち)を定める必要がありますが、一般的には閾値を「128」にするので、「128」に設定します。これは、「0」と「255」の中間の値です。 そして、画素値がこの閾値未満なら「0」に、以上なら「255」に変換してあげます。 [crayon-5c3864e72db46233914038/] 結果 先ほども言いましたが、やはりなめらかさが欠けていますね。 ここからは、ディザリングを行なっていき、なめらかさを再現していきます。 ランダムディザリング ランダムディザリングでは、閾値(しきいち)を乱数で生成します。その他は同じ方法です。 [crayon-5c3864e72db52636115205/] 結果 先ほどの2値画像よりかなり見栄えが良くなりました。 ノイズの向こうに綺麗な画像がありそうな感じを受けます。 誤差拡散ディザリング 誤差拡散ディザリングでは、2値化した際に生じる誤差を次の画素値に反映させます。 [crayon-5c3864e72db57478724706/] 結果 ランダムディザリングよりさらになめらかになり、より画像の詳細な情報を知ることができるようになりました。 組織的ディザリング
2019/01/11 18:01