はじめに 先日以下の記事が話題となり、とてもワクワクしたので自分も実装して色々実験してみました。 実装するうちに理解が深まったので一度、 誤差拡散法の元ネタ紹介から 数式の解説、 ED法の弱点、 行列計算を使用した実装と簡単なテスト結果、 実装上の工夫 までまとめてみたいと思います。 誤差拡散(Error Diffusion)法 もともとは画像の2値化において失われる情報を周囲のピクセルで補うことで、遠目に元の画像の濃淡が残っているように見せる技術(ハーフトーン処理の一種)です。 Error diffusion -Wikipedia(英語版) 左の画像をちょうど半分の明るさをしきい値として2値化すると中央の画像のようになりますが、誤差拡散法を適用すると2値化後も右の画像のようにある程度濃淡を保存・表現できます。 誤差拡散法(画像処理)のサンプルコード コメントアウト箇所はFloyd, St
![金子勇さんのED法の解説と弱点、行列積を使用した効率的な実装 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/724c9200adbe2aa7dead89877666995d1f6e4066/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU5JTg3JTkxJUU1JUFEJTkwJUU1JThCJTg3JUUzJTgxJTk1JUUzJTgyJTkzJUUzJTgxJUFFRUQlRTYlQjMlOTUlRTMlODElQUUlRTglQTclQTMlRTglQUElQUMlRTMlODElQTglRTUlQkMlQjElRTclODIlQjklRTMlODAlODElRTglQTElOEMlRTUlODglOTclRTclQTklOEQlRTMlODIlOTIlRTQlQkQlQkYlRTclOTQlQTglRTMlODElOTclRTMlODElOUYlRTUlOEElQjklRTclOEUlODclRTclOUElODQlRTMlODElQUElRTUlQUUlOUYlRTglQTMlODUmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTIwYzM1MDRiMzZjMTA1MDdlZWE1Yjg4NDlmMjQ1ZTQz%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBDYXJ0ZWxldCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NDk2OTI0NzUyZWM2NjExYTNmZjVlZGQ5MDU5OWE3YmM%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3De505c0871d8ed9df8482fc329efc708e)