[scikit-image] 71. 画像の強度プロファイルを任意の範囲で表示(skimage.measure profile_line)

python

はじめに

本記事では、scikit-imageのprofile_line関数を使用して画像上の任意の2点間の強度プロファイル(輝度変化)を分析・可視化する方法を紹介します。基本的な使い方から応用例まで、具体的なコード例とともに解説します。この手法は、医療画像分析、材料科学、顕微鏡画像解析など様々な分野で活用できる画像処理技術です。

コード

解説

モジュールのインポートなど

画像の生成

まず

np.zeros((s, s))で128 x 128の空データを生成します。次に、

(s*np.random.random((2, n**2))).astype(int)を使って0〜127のランダムな整数を(2,100)の形状で生成します。その後、imの[points[0], points[1]]に対応する位置の要素を1に設定し、ndimage.gaussian_filterでぼかすことで画像データを作成しました。

プロファイルの開始と終了点の設定

ラインプロファイルの取得

プロファイルはprofile_line関数で(画像、開始点、終了点、linewidth=1)と設定することで取得できます。linewidthパラメータは、プロファイルを取得する幅を指定するものです。

結果の表示

左の画像の赤線に沿った強度プロファイルを右図に表示しています。このプロファイルは斜めのラインに沿って測定されているため、データポイント数は171となっています。

linewidth=20としたときの結果

linewidthを大きくすることでデータの取得範囲を広げることができます。上の図では、実線から破線までの範囲のデータの平均値がプロファイルとして表示されています。

linewidth=40としたときの結果

linewidth=40の場合、実線から上下に±20ピクセルの範囲のデータが平均化され、プロファイルとして表示されます。

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

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

まとめ

scikit-imageのprofile_line関数は、画像内の任意の領域における輝度変化を定量的に分析するための強力なツールです。適切なパラメータ設定と可視化手法を組み合わせることで、画像内の特徴や異常を効果的に検出・評価することができます。画像処理やコンピュータビジョンのワークフローに組み込むことで、より詳細で定量的な画像解析が可能になります。

参考

skimage.measure — skimage 0.26.0rc0.dev0 documentation

コメント