Log-Polar変換

V3.0.0
In [22]:
# -*- coding: utf-8 -*-
import cv2

#Ipythonで表示用の設定
import matplotlib.pyplot as plt
%matplotlib inline

# 画像読込
in_img = cv2.imread("lena.jpg")

# 画像のサイズ(縦、横)、チャンネル数を 取得
h,w,ch = in_img.shape       

# Log-Polar変換
out_img = cv2.logPolar(in_img, (h/2, w/2), 70, cv2.WARP_FILL_OUTLIERS)

# 90度回転画像をLog-Polar変換
M = cv2.getRotationMatrix2D((w/2,h/2),-90,1)# 画像中心を回転軸とし、90回転させる回転行列生成
rot_img = cv2.warpAffine(in_img,M,(w,h))    # アフィン変換で画像を回転
out_img2 = cv2.logPolar(rot_img, (h/2, w/2), 70, cv2.WARP_FILL_OUTLIERS)

# OpenCVがBGRなのでRGBに変換
disp_in_img   = cv2.cvtColor(in_img,   cv2.COLOR_BGR2RGB)
disp_rot_img  = cv2.cvtColor(rot_img,  cv2.COLOR_BGR2RGB)
disp_out_img  = cv2.cvtColor(out_img,  cv2.COLOR_BGR2RGB)
disp_out_img2 = cv2.cvtColor(out_img2, cv2.COLOR_BGR2RGB)

# 画像表示
plt.figure(figsize=(10,10))
plt.subplot(221)
plt.imshow(disp_in_img)
plt.subplot(222)
plt.imshow(disp_out_img)
plt.subplot(223)
plt.imshow(disp_rot_img)
plt.subplot(224)
plt.imshow(disp_out_img2)
Out[22]:
<matplotlib.image.AxesImage at 0x143cba30>
inserted by FC2 system