注意:結構この記事読んでくれる方が多いんですが、こちらの記事に書いてあるコードだと激烈に遅いので、アルゴリズムの説明を読み終わったらこっちのコード使ってください。 細線化は、(主には2値化した)画像を幅1ピクセルの線画像に変換する操作です。 用途は色々あるのですが、画像処理ライブラリのOpenCVになぜか細線化のメソッドが無かったので、 勉強も兼ねて自分で実装しました。 速さが欲しい場合こちらへどうぞ。 #細線化のアルゴリズム 細線化にはいくつかのアルゴリズムが提案されています。 田村のアルゴリズム Zhang-Suenのアルゴリズム Nagendraprasad-Wang-Guptaのアルゴリズム それぞれ癖があるのですが、 今回は2番のZhang-Suenのアルゴリズムを使いました。 (ロジックが簡単で書きやすそうだったので) #Zhang-Suenのアルゴリズム 細線化に用いる画像は
![PythonでZhang-Suenの細線化アルゴリズムを実装 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/c9c356ad8f406851d7cb591e7f87ea3d7f3778ba/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-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UHl0aG9uJUUzJTgxJUE3WmhhbmctU3VlbiVFMyU4MSVBRSVFNyVCNCVCMCVFNyVCNyU5QSVFNSU4QyU5NiVFMyU4MiVBMiVFMyU4MyVBQiVFMyU4MiVCNCVFMyU4MyVBQSVFMyU4MiVCQSVFMyU4MyVBMCVFMyU4MiU5MiVFNSVBRSU5RiVFOCVBMyU4NSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9YzVkN2IyNzk0YjIxOWQ2NjFlZjJlZWU5MDk3OWI0MGQ%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBocnMxOTg1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01ZjlhOTkzN2ExNzQwNDI5YzRkZWFjNzc3NzMxZjM0Ng%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Dee2053efce42d6f907bf22142c8a998d)