はじめに
skimage.morphology の convex_hull_image による画像の凸包について説明する。
コード

解説
この例では、2値化画像の凸包を求める。凸包は、入力内のすべての白いピクセルを囲む最小の凸多角形となる。

凸包 - Wikipedia
モジュールのインポート
データの読み込み
画像をimread()で読み込んで、 > 0とすることで、bool値配列に変換する。画像は下記サイトから取得した。

Cactus icon 3 | アイコン素材ダウンロードサイト「icooon-mono」 | 商用利用可能なアイコン素材が無料(フリー)ダウンロードできるサイト
6000個以上のアイコン素材を無料でダウンロードできるサイト ICOOON MONO
凸包を求める
skimage.morphology の convex_hull_image(image)により、imageの凸包が求まる。
図の表示
凸包部分の可視化

img_as_floatでchullのTrueの部分が1になり、chull_diff[image] = 2でimageのTrue部分が2となるので、もとのimageの部分が2、凸包の部分が1の配列が得られる。
これを表示すると、上図のようにどの部分が凸包されたかがわかる。
参考
Convex Hull — skimage 0.25.1 documentation
コメント