[scikit-image] 19. 画像のHough変換(transform.probabilistic_hough_line)

python

はじめに

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文でリストの最初から最後までを順次プロットする。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

Straight line Hough transform — skimage 0.24.0 documentation
アレルギーのマーク(タコ)
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

コメント