プログラミングの芽

面白そうな技術を使って、楽しいことやりたい

Pythonで位相画像の生成

ロボットビジョンについての論文を読んでたら位相限定相関法というのがあり、何だろうと調べました。
画像と比較したい画像のズレを位相画像を使って得る方法らしいです。
位相画像とは何ぞやって感じです。
参考:位相画像 – Rest Term

ソース

といっても別にフーリエ変換のコードを書くとかはしないので短いですが。

import numpy as np
import cv2

fimg = cv2.imread("img.jpg",0)

#2次元高速フーリエ変換
Fimg = np.fft.fft2(fimg)
#正規化 Fimgの絶対値は振幅スペクトル
Nimg = Fimg / np.abs(Fimg)
#2次元高速フーリエ逆変換
Pimg = np.fft.ifft2(Nimg).real

#保存
cv2.imwrite("phase_img.jpg",Pimg)


ズレを知りたい画像の位相画像2枚が手に入れば、あとはその2枚の相関を取ってIDFTしてピークを探せばいいだけみたいです。
そのピークのズレを元にロボットアームの移動距離を逆運動学で計算すればオフラインティーチングのズレを補正できるという事ですかね?