はじめに
skimage.morphology の convex_hull_image による画像の凸包について説明する。
コード
![](https://sabopy.com/wp/wp-content/uploads/2019/12/convex_hull_cacti.png)
解説
この例では、2値化画像の凸包を求める。凸包は、入力内のすべての白いピクセルを囲む最小の凸多角形となる。
![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Extreme_points.svg/640px-Extreme_points.svg.png)
凸包 - Wikipedia
モジュールのインポート
データの読み込み
画像をimread()で読み込んで、 > 0とすることで、bool値配列に変換する。画像は下記サイトから取得した。
![](https://icooon-mono.com/img/webpage.jpg)
Cactus icon 3 | アイコン素材ダウンロードサイト「icooon-mono」 | 商用利用可能なアイコン素材が無料(フリー)ダウンロードできるサイト
6000個以上のアイコン素材を無料でダウンロードできるサイト ICOOON MONO
凸包を求める
skimage.morphology の convex_hull_image(image)により、imageの凸包が求まる。
図の表示
凸包部分の可視化
![](https://sabopy.com/wp/wp-content/uploads/2019/04/convex_hull_cacti2.png)
img_as_floatでchullのTrueの部分が1になり、chull_diff[image] = 2でimageのTrue部分が2となるので、もとのimageの部分が2、凸包の部分が1の配列が得られる。
これを表示すると、上図のようにどの部分が凸包されたかがわかる。
参考
Convex Hull — skimage 0.24.0 documentation
コメント