(ディザリング)とは普通の2値画像ランダムディザリング誤差拡散ディザリング組織的ディザリング3×3の組織的ディザリング5×5の組織的ディザリング擬似濃淡変換(ディザリング)とは様々な画像処理の中に、擬似濃淡変換(以下ディザリング)というものがあります。このディザリングは2値を扱うという特徴があり、「0」と「255」の2つの値しか扱いません。いった画像は、2値画像といいます。基本的な2値画像は例えばこういったものです。することによって、データ量を少なくすることができますが、やはり「0」と「255」しかないということで、画像のなめらかさは失われています。そこで、ディザリングを使って、基本的な2値画像では再現できない画像のなめらかさを、少し複雑なアルゴリズム(仕組み)によって再現してあげます。今回は普通の2値画像の紹介も含めて、3つの有名なディザリングを紹介していきたいと思います。今回しようする画像はオープンソースの画像で、先ほど2値化された状態で紹介しましたが、こちらになります。ファイル名は「lena.jpg」にしました。普通の2値画像まずは2値化する際に、ソース画像をグレースケール化してカラーチャンネルを1つにします。次に、閾値(しきいち)を定める必要がありますが、一般的には閾値を「128」にするので、「128」に設定します。これは、「0」と「255」の中間の値です。画素値がこの閾値未満なら「0」に、以上なら「255」に変換してあげます。先ほども言いましたが、やはりなめらかさが欠けていますね。ここからは、ディザリングを行なっていき、なめらかさを再現していきます。ランダムディザリングランダムディザリングでは、閾値(しきいち)を乱数で生成します。その他は同じ方法です。先ほどの2値画像よりかなり見栄えが良くなりました。ノイズの向こうに綺麗な画像がありそうな感じを受けます。誤差拡散ディザリング誤差拡散ディザリングでは、2値化した際に生じる誤差を次の画素値に反映させます。Qキーが押されたら終了breakcv2.destroyAllWindows()結果ランダムディザリングよりさらになめらかになり、より画像の詳細な情報を知ることができるようになりました。組織的ディザリング組織的ディザリングでは、ディザリング表というのを用いて閾値を計算します。一般的に用いられるディザリング表は以下のようになります。このディザリング表に書かれている「0〜15」までの数字に4の二乗をかけて、「0〜255」に変換し、その値を閾値にします。縦横4区切りずつに、ディザリング表で算出した「0〜255」の閾値で2値化を行なっていきます。gray)breakcv2.destroyAllWindows()結果もちろんですが、なめらかな画像になりました。組織的ディザリングの見た目は、ディザリング表を変更すればいくらでも変わるので、組織的ディザリングを用いた別の例も紹介していきます。3×3の組織的ディザリング使用するディザリング表はこちらです。細かく区切っているため、4×4の画像より鮮明になりました。5×5の組織的ディザリング使用するディザリング表はこちらです。区切る範囲が先ほどより大きいため、3×3と比べて若干粗い画像になりました。LINEIT系だんしをフォローするIT系だんし関連記事Python【OpenCV】笑顔シャッター機能を作る【Python】OpenCVを使った機能として、顔認識や目の認識などがありますが、こういったものを応用して「笑顔シャッター機能」を作ってみたいと思います。普通の「顔認識機能」を作っていきます。2つの画像はフリー画像ですので、ご自由にダウンロードしてください。今回はこの2つの画像を使用します。全体的にアルファブレンドをしていきますPython【OpenCV】マスク処理を使って、画像を重ね合わせる【Python】マスク処理を行えば、画像を重ね合わせることができます。この2つの画像を重ね合わせます。すると、このように合成されます。これがマスク処理です。行う記事を公開しましたが、今回は「RGB成分」のどれか1つだけに反映させる方法を紹介します。今回使用する画像はこちらです。普通に顔認識を行なっていきます。速度が遅いので、100カウント分のデータを取ることにします。実際に算出した平均値のデータは、「51.94ms」となりました。ヒストグラムは、画像内の画素値の度数分布を表したもので、画像の大まかな特徴や偏りを調べるためのものです。コメントをキャンセルメールアドレスが公開されることはありません。R1カテゴリーJavaJavaFXJavaScriptPythonRこのサイトの管理人IT系だんしプログラミングが大好きな人。趣味でゲームやツール製作をしながら、プログラミング記事を書き続けています。