skimage.registration#

画像登録アルゴリズム(例:オプティカルフローまたは位相クロス相関)

optical_flow_ilk

精度を向上させたオプティカルフローの推定器

optical_flow_tvl1

精度を向上させたオプティカルフローの推定器

phase_cross_correlation

クロス相関によって効率的にサブピクセル画像変換の登録を実行する


skimage.registration.optical_flow_ilk(reference_image, moving_image, *, radius=7, num_warp=10, gaussian=False, prefilter=False, dtype=<class 'numpy.float32'>)[ソース]#

精度を向上させたオプティカルフローの推定器

反復的ルーカス・カナデ (iLK) ソルバーは、画像ピラミッドの各レベルに適用されます。iLK [1] は、TVL1 アルゴリズムの高速で堅牢な代替手法ですが、平坦な面やオブジェクトの境界のレンダリングにはそれほど正確ではありません([2] を参照)。

パラメーター:
reference_imagendarray、形状 (M, N[, P[, …]])

シーケンスの最初のグレースケール画像

moving_imagendarray、形状 (M, N[, P[, …]])

シーケンスの 2 番目のグレースケール画像

radiusint、オプション

各ピクセルの周囲で考慮するウィンドウの半径

num_warpint、オプション

moving_image をワープする回数

gaussianbool、オプション

True の場合、局所積分にはガウスカーネルが使用されます。それ以外の場合は、一様カーネルが使用されます。

prefilterbool、オプション

各画像ワープの前に推定オプティカルフローにプリフィルタを適用するかどうか。True の場合、各軸に沿ってウィンドウサイズ 3 のメディアンフィルタが適用されます。これにより、潜在的な異常値を除去できます。

dtypedtype、オプション

出力データ型:浮動小数点数である必要があります。単精度は良好な結果を提供し、倍精度と比較してメモリ使用量と計算時間を節約できます。

戻り値:
flowndarray、形状 (reference_image.ndim, M, N[, P[, …]])

各軸に対する運動ベクトルの推定コンポーネント。

  • 実装されているアルゴリズムは、[1]Table2に記載されています。

  • カラー画像はサポートされていません。

参考文献

[1] (1,2)

Le Besnerais, G., & Champagnat, F. (2005年9月). Dense optical flow by iterative local window registration. IEEE International Conference on Image Processing 2005(第1巻、pp. I-137)。IEEE。 DOI:10.1109/ICIP.2005.1529706

[2]

Plyer, A., Le Besnerais, G., & Champagnat, F. (2016). Massively parallel Lucas Kanade optical flow for real-time video processing applications. Journal of Real-Time Image Processing、11(4)、713-730。 DOI:10.1007/s11554-014-0423-0

>>> from skimage.color import rgb2gray
>>> from skimage.data import stereo_motorcycle
>>> from skimage.registration import optical_flow_ilk
>>> reference_image, moving_image, disp = stereo_motorcycle()
>>> # --- Convert the images to gray level: color is not supported.
>>> reference_image = rgb2gray(reference_image)
>>> moving_image = rgb2gray(moving_image)
>>> flow = optical_flow_ilk(moving_image, reference_image)

オプティカルフローを使用した登録

オプティカルフローを使用した登録

skimage.registration.optical_flow_tvl1(reference_image, moving_image, *, attachment=15, tightness=0.3, num_warp=5, num_iter=10, tol=0.0001, prefilter=False, dtype=<class 'numpy.float32'>)[ソース]#

精度を向上させたオプティカルフローの推定器

TV-L1 ソルバーは画像ピラミッドの各レベルに適用されます。TV-L1 は Zack et al. [1] によって導入された、運動ベクトルの推定に用いられる一般的なアルゴリズムであり、[2] で改良され、[3] で詳しく説明されています。

パラメーター:
reference_imagendarray、形状 (M, N[, P[, …]])

シーケンスの最初のグレースケール画像

moving_imagendarray、形状 (M, N[, P[, …]])

シーケンスの 2 番目のグレースケール画像

attachmentfloat、省略可能

アタッチメントパラメータ ([1]\(\lambda\))。このパラメータが小さいほど、返される結果は滑らかになります。

tightnessfloat、省略可能

タイトネスパラメータ ([1]\(\theta\))。対応するアタッチメント部分と正則化部分を維持するには、小さい値である必要があります。

num_warpint、オプション

moving_image をワープする回数

num_iterint、省略可能

不動点反復の数。

tolfloat、省略可能

(u, v) の2つの連続する値間の L² 距離に基づく、停止判定の基準として使用される許容差。

prefilterbool、オプション

各画像ワープの前に推定オプティカルフローにプリフィルタを適用するかどうか。True の場合、各軸に沿ってウィンドウサイズ 3 のメディアンフィルタが適用されます。これにより、潜在的な異常値を除去できます。

dtypedtype、オプション

出力データ型:浮動小数点数である必要があります。単精度は良好な結果を提供し、倍精度と比較してメモリ使用量と計算時間を節約できます。

戻り値:
flowndarray、形状 (image0.ndim, M, N[, P[, …]])

各軸に対する運動ベクトルの推定コンポーネント。

カラー画像はサポートされていません。

参考文献

[1] (1,2,3)

Zach, C., Pock, T., & Bischof, H. (2007年9月). A duality based approach for realtime TV-L 1 optical flow. Joint pattern recognition symposium(pp. 214-223)。Springer、ベルリン、ハイデルベルク。 DOI:10.1007/978-3-540-74936-3_22

[2]

Wedel、A・Pock、T・Zach、C・Bischof、H、および Cremers、D. (2009)。TV-L1 光学フローの改善アルゴリズム。視覚動作解析の統計的および幾何学的アプローチ(23~45ページ)。Springer、ベルリン、ハイデルベルク。 DOI:10.1007/978-3-642-03061-1_2

[3]

Pérez、JS、Meinhardt-Llopis、E、および Facciolo、G. (2013)。TV-L1 光学フローの見積もり。オンラインでの画像処理、2013、137~150。 DOI:10.5201/ipol.2013.26

>>> from skimage.color import rgb2gray
>>> from skimage.data import stereo_motorcycle
>>> from skimage.registration import optical_flow_tvl1
>>> image0, image1, disp = stereo_motorcycle()
>>> # --- Convert the images to gray level: color is not supported.
>>> image0 = rgb2gray(image0)
>>> image1 = rgb2gray(image1)
>>> flow = optical_flow_tvl1(image1, image0)

オプティカルフローを使用した登録

オプティカルフローを使用した登録

skimage.registration.phase_cross_correlation(reference_image, moving_image, *, upsample_factor=1, space='real', disambiguate=False, reference_mask=None, moving_mask=None, overlap_ratio=0.3, normalization='phase')[ソース]#

クロス相関によって効率的にサブピクセル画像変換の登録を実行する

このコードは、計算時間のほんの一部とメモリ要件の少ないアップサンプリングされた FFT 相関において、FFT アップサンプリング交差相関と同じ精度を与えます。FFT によって相関ピークの初期推定を取得し、次に行列乗算 DFT 手段によって、その推定の小さな近傍領域においてのみ DFT をアップサンプリングすることにより、シフト推定をリファインします。 [1]

パラメーター:
reference_image配列

参照画像。

moving_image配列

登録する画像。reference_image と同じ次元でなければなりません。

upsample_factorint、オプション

アップサンプリング係数。画像はピクセルの 1/upsample_factor 以内で登録されます。たとえば、upsample_factor == 20 は、画像がピクセルの 1/20 以内で登録されることを意味します。デフォルトは 1(アップサンプリングなし)です。reference_mask または moving_mask のいずれかが None でない場合、使用されません。

space文字列、"real" または "fourier" のいずれか、オプション

アルゴリズムが入力データをどのように解釈するかを定義します。「real」はデータが相関を計算するために FFT 化されることを意味し、「fourier」データは入力データの FFT をバイパスします。大文字と小文字は区別されません。reference_mask または moving_mask のいずれかが None でない場合、使用されません。

disambiguatebool

周期的なフーリエ変換の特性上、本関数が返却するシフトは イメージシェイブモジュール に基づいています。このパラメタが True に設定されている場合、被覆エリア内で最高のクロス相関を有するシフトが返され、実空間 相互相関が可能なシフトごとに計算されます。

reference_maskndarray

reference_image のブールマスク。マスクは有効ピクセルに対して True (または 1)評価 する必要があります。reference_maskreference_image と同じシェイプにする必要があります。

moving_maskndarray または None (オプション)

moving_image のブールマスク。マスクは有効ピクセルに対して True (または 1)評価 する必要があります。moving_maskreference_image と同じシェイプにする必要があります。None の場合は reference_mask が使用されます。

overlap_ratiofloat (オプション)

イメージ間の最低許容被覆率。このしきい値よりも低い被覆率に対応する並進への相関は無視されます。より低い overlap_ratio は小さな最大並進をもたらす一方、より高い overlap_ratioはマスクされたイメージ間の小さな被覆が原因で不当なマッチに対する高い堅牢性をもたらします。reference_mask または moving_mask のいずれかが Noneでない場合にのみ使用されます。

normalization{“phase”, None}

クロス相関に適用される正規化の種類。このパラメータはマスク (reference_maskmoving_mask) が与えられた場合は使用されません。

戻り値:
shiftndarray

moving_imagereference_image と登録するために必要なシフトベクトル (ピクセル単位)。軸の順序は入力配列の軸の順序と一致します。

errorfloat

reference_imagemoving_image の間の並進不変な正規化 RMS エラー。マスクされたクロス相関の場合、このエラーは取得できず、NaNが返されます。

phasedifffloat

2つのイメージ間のグローバル位相差 (イメージが非負の場合、ゼロである必要があります)。マスクされたクロス相関の場合、この位相差は取得できず、NaNが返されます。

少なくとも[2]までさかのぼる長い歴史を持つ画像変換を推定するための相互相関の使用。 “位相相関”手法(normalization="phase"で選択)は[3]で最初に提案されました。論文[1][2]は正規化されていない相互相関(normalization=None)を使用しています。正規化のどの形式がより優れているかはアプリケーションによって異なります。例えば、位相相関手法は、異なる照明条件で画像を登録する場合に効果的ですが、ノイズにはあまり強くない。ノイズの多いシナリオでは、正規化されていない手法が好ましい場合があります。

マスクが提供された場合は、マスクされた正規化相互相関アルゴリズムが使用されます[5][6]

参考文献

[1] (1,2)

Manuel Guizar-Sicairos、Samuel T. Thurman、および James R. Fienup、「効率的なサブピクセル画像登録アルゴリズム」Optics Letters 33、156-158 (2008)。 DOI:10.1364/OL.33.000156

[2] (1,2)

P. Anuta、高速フーリエ変換手法を使用したマルチスペクトルおよびマルチテンポラルデジタル画像の空間的登録、IEEE Trans. Geosci. Electron.、第 8 巻、第 4 号、pp. 353–368、1970 年 10 月。 DOI:10.1109/TGE.1970.271435

[3]

C. D. Kuglin D. C. Hines。位相相関画像整列法、サイバネティクスと社会に関する IEEE 国際会議の議事録、pp. 163-165、New York、NY、米国、1975 年、pp. 163–165。

[4]

James R. Fienup、「画像再構成のための不変なエラーメトリクス」Optics Letters 36、8352-8357 (1997)。 DOI:10.1364/AO.36.008352

[5]

Dirk Padfield。フーリエ領域におけるマスクされたオブジェクトの登録。画像処理に関する IEEE トランザクション、第 21 巻(5)、pp. 2706-2718 (2012)。 DOI:10.1109/TIP.2011.2181402

[6]

D. Padfield。「マスクされた FFT 登録」。コンピュータビジョンとパターン認識の議事録、pp. 2918-2925 (2010) に掲載。 DOI:10.1109/CVPR.2010.5540032

画像登録

画像登録

マスクされた正規化相互相関

マスクされた正規化相互相関

登録に極座変換と対数極座変換を使用する

登録に極座変換と対数極座変換を使用する