[scikit-image] 32. 相互相関によりノイズを加えた画像のシフト量を求める(skimage.feature masked_register_translation)

python

はじめに

ここではskimage.featureのmasked_register_translationにより、元画像とノイズが乗った画像間のシフト量を求める方法について説明する。

コード

解説

モジュールのインポート

画像データの読み込み

下の画像を読み込み、rgb2grayにより、グレースケール化する。

シフト量の設定

ノイズの生成

np.random.choiceにより、80%のTrueと20%のFalseがランダムに混ざりあった配列を生成する。形状はimageと同じ。

画像をシフトしてノイズを加える

ndi.shift(image, shift)によりimageをshiftの分だけ移動した画像を生成する。
その画像にノイズを乗じることで、Falseの部分が0となった画像ができる。これがノイズが加わった画像となる。

画像の移動量を求める

ノイズをmaskとして、masked_register_translationにより、マスクを考慮した相互相関により、画像のシフト量を求める。機構は以下の位相相関のものと同様と思われる。計算されたシフト量は印加したシフト量と同じであることがわかる。

[scikit-image] 31. 位相相関から画像間のシフト量を求める(skimage.feature register_translation)
ここではskimage.featureのregister_translationにより、画像間のシフト量を求める方法について説明する。

画像の表示

左に元画像、中央にシフトしノイズを加えた画像、右にノイズのみの画像を表示した。

参考

Masked Normalized Cross-Correlation — skimage v0.15.0 docs
numpy.random.choice — NumPy v1.16 Manual
scipy.ndimage.shift — SciPy v1.3.0 Reference Guide
Module: feature — skimage v0.15.0 docs

コメント