[scikit-image] 40. 画像の位相アンラッピング処理(skimage.restoration unwrap_phase)

python

はじめに

この記事では、scikit-imageライブラリのskimage.restoration.unwrap_phase関数を使用して、画像の位相アンラッピング処理を行う方法について解説します。位相アンラッピングとは、-π〜+πの範囲に制限された位相情報(ラップされた位相)を連続的な値に変換するプロセスで、医療画像処理や光学分野で重要な技術です。

位相アンラッピングとは

位相アンラッピング(Phase Unwrapping)は、-π〜+πの範囲に制限された位相情報を連続的な値に変換する技術です。画像処理において、干渉計測やMRI、レーダー画像処理など多くの分野で必要とされます。

位相ラッピングの問題点

位相情報は通常、-π〜+πの範囲(ラップされた位相)に制限されています。この制限により、実際の位相値が+πを超えると-πにジャンプしてしまうという不連続性が生じます。これが「位相ラッピング」と呼ばれる現象です。

この不連続性は以下のような問題を引き起こします:

  • 実際の物理量の正確な測定が困難になる
  • 画像解析の精度が低下する
  • 形状測定などの応用で誤差が生じる

コード

解説

モジュールのインポート

画像データの読み込みとグレースケール化

ギムノカリキュウム・海王丸の画像を読み込みます。

画像データを0-1の範囲のfloat型に変換した後、rgb2gray関数でグレースケールに変換します。

画像のデータ範囲をリスケール

exposure.rescale_intensity()関数を使用して、データの範囲を(0, 4 * np.pi)にリスケールします。

rescale_intensityについては下記で詳しく解説しています。

[scikit-image] 8. 画像処理におけるコントラスト補正テクニック
scikit-imageライブラリを用いた画像のコントラスト補正テクニックを解説。rescale_intensity、equalize_hist、equalize_adapthistなどの均等化関数の特徴と使用方法を実例とともに紹介し、効果的な画像処理手法を学びます。

位相ラッピング像の生成

1j * imageにより画像を複素数に変換します。これにnp.exp()を適用するとオイラーの公式が適用され、np.angle()で偏角を取得することで(-π, π)の範囲にラッピングされたデータを得ることができます。

位相アンラッピング像の生成

画像の表示

ImageGridを使用して画像を表示しました。カラーバーを表示するには、「cbar_mode=”each”」などのパラメータを設定する必要があります。また、「cbar_pad=0.03」は画像とカラーバーの間隔を調整します。

ImageGridでカラーバーを表示するには、「grid.cbar_axes[3].colorbar(im3)」のような構文を使用します。

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

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

まとめ

scikit-imageのunwrap_phase関数は、位相ラッピングによる不連続性を解消し、正確な位相情報を抽出するための強力なツールです。この技術を理解し活用することで、医療画像処理や光学分野における画像解析の精度を大幅に向上させることができます。

参考

Phase Unwrapping — skimage 0.25.2 documentation
オイラーの公式 - Wikipedia
位相アンラッピング(Phase unwrapping)
1D Phase Unwappingをサクッと行う 1.元データの作成 まず元データを作成。適当なデータを作る。 In : from numpy imp...

コメント