はじめに
この記事では、matplotlib の FuncAnimation を使用して、輪郭画像のハフ変換から検出した線を順次表示するアニメーションの作成方法について解説します。ハフ変換によって画像から直線を検出し、それらを一本ずつアニメーション表示する手法を紹介します。
コード
解説
モジュールのインポート
画像の読み込み、輪郭抽出、Hough変換
Hough変換の詳細については、下記記事で解説しました。

[scikit-image] 19. 画像のHough変換(transform.probabilistic_hough_line)
scikit-imageライブラリのtransform.probabilistic_hough_line関数を使用した画像のHough変換による直線検出について解説します。エッジ検出後の画像から直線を抽出する方法と実装例を紹介します。
図の作成
ax.set_axis_off()で軸、軸ラベル等を非表示にしています。
アニメーションの設定
ハフ変換した線の数を計測
len()でリストのサイズを計測します。
線を順次表示するアニメーションの設定
p0, p1 = lines[num]により、linesリストからラインの開始点と終了点を取得し、ax.plot((p0[0], p1[0]), (p0[1], p1[1]), lw=3)でプロットします。また、ax.set_title(“line=”+str(num))でタイトルにその時点で表示している線の番号(リストのインデックス)を表示します。
アニメーションの表示
HTML(ani.to_html5_video())とすればjupyter notebook上にアニメーションを表示できます。
まとめ
ハフ変換を用いた画像からの直線検出とその順次表示アニメーションの実装方法について学びました。matplotlib の FuncAnimation と OpenCV のハフ変換を組み合わせることで、視覚的に分かりやすいアニメーション表示が可能となります。
参考

[scikit-image] 19. 画像のHough変換(transform.probabilistic_hough_line)
scikit-imageライブラリのtransform.probabilistic_hough_line関数を使用した画像のHough変換による直線検出について解説します。エッジ検出後の画像から直線を抽出する方法と実装例を紹介します。
コメント