はじめに
ここでは、skimage.measure の approximate_polygonを用いた図形の近似について説明する。
コード
解説
この例では、図形を近似、細分化する、measure のapproximate_polygonとsubdivide_polygonの使い方について説明する。
モジュールのインポート
図形データ
閉じた台形の形をした図形データとなる。
図形の細分化
.copyで配列をコピーし、コピーした配列に細分化処理をする。
for _ in range(5):で、変数を使わずに5回同じ処理をするという意味になる。
subdivide_polygonにより、B-スプライン曲線による図形の細分化ができる。
degree=2で、B-スプライン曲線の次数が2となる。preserve_ends=Trueで配列の最初と最後のデータを入れて計算が行われる。
図形の近似
approximate_polygon()を細分化した画像に適用することで図形の近似を行うことができる。
toleranceは、多角形の元の点から近似多角形チェーンまでの最大距離となる。toleranceが0の場合は元の座標配列が返される。
図の表示
左側の図は上記コードで表示される。
画像データの近似
画像データの生成と表示
円が2こ、楕円が1この画像が表示される。
画像中の図形に対する近似線
find_contoursで検出した等高線に対して、approximate_polygonを実行する。toleranceを小さくすれば元データに近い形状、大きくすれば、アバウトな近似となる。
右側の図となる。
参考
Approximate and subdivide polygons — skimage 0.24.0 documentation
コメント
[…] [scikit-image] 20. 図形の近似と細分化(measure.approximate_polygon)skimage.measure の approximate_polygonを用いた図形の近似sabopy.com2019.05.27 […]