始める無料で始める

エッジ検出(2)

エッジ検出は複数の軸方向に対して行い、その結果を1つのエッジ値に統合することができます。2次元画像の場合、水平・垂直それぞれの「エッジマップ」をピタゴラスの定理を使って合成します:

$$z = \sqrt{x^2 + y^2}$$

代表的なエッジ検出手法の1つが Sobelフィルター です。Sobelフィルターは、検出器の中心ピクセルに対してより大きな重みを与えます:

weights = [[ 1,  2,  1], 
           [ 0,  0,  0],
           [-1, -2, -1]]

この演習では、2つのSobelフィルター適用後の画像を合成エッジマップに統合することで、前回のエッジ検出をさらに改善しましょう。

この演習はコースの一部です

Python による生体医療画像解析

コースを見る

演習の手順

  • im に対して、第1軸と第2軸それぞれに ndi.sobel() を適用します。
  • ピタゴラスの定理を使って全体のエッジ強度を計算します。np.sqrt()np.square() を使いましょう。
  • 強度画像を表示します。グレースケールのカラーマップを使用し、vmax75 に設定してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Apply Sobel filter along both axes
sobel_ax0 = ndi.sobel(____, axis=____)
sobel_ax1 = ____

# Calculate edge magnitude 
edges = ____

# Plot edge magnitude
plt.imshow(____, ____, ____)
format_and_render_plot()
コードを編集して実行