はじめに
skimage.transform の probabilistic_hough_lineを用いたハフ変換による直線検出について解説する。
コード
解説
この例では、画像内の直線を検出するtransform のprobabilistic_hough_lineの使い方について説明する。
モジュールのインポート
画像の読み込みとグレースケール化
plt.imread()でRGB画像を読み込み、rgb2gray()でグレースケールデータに変換する。
Canny法によるエッジ検出データの生成
Canny法によるエッジ検出は、下記ページでその例を示している。
[scikit-image] 12. Canny法によるエッジ検出 (feature.canny)
skimage.feature の canny を用いた、Canny法によるエッジ検出
ハフ変換の適用
probabilistic_hough_line()でハフ変換を行うことができる。
edgesは入力画像で、canny法を適用したような輪郭が表示されるようなデータである必要がある。
thresholdは、線を検出するためのしきい値で10とした場合、10より長い線が検出される。つまり、検出可能な線の長さの最小値となる。
line_lengthは、検出された線の最小許容長さ、長い線で検出したい場合は、大きくする必要がある。
line_gapは、線を検出できる間隔の最大許容値。破線上になっている輪郭を線で検出するには、この値を大きくする必要がある。
結果は、((x0、y0)、(x1、y1))の形式のリストとして返ってくる。それぞれ、線の開始点と終点を示している。
図の表示
ax[0]にもとのグレースケール画像、ax[1]にCanny法を適用したエッジ検出データ、ax[2]にハフ変換により、検出した線を表示する。
linesはfor文でリストの最初から最後までを順次プロットする。
参考
Straight line Hough transform — skimage 0.24.0 documentation
アレルギーのマーク(タコ)
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。
コメント