相似変換(Similality transformation)

V3.0.0

ユークリッド変換(任意の回転変換と平行移動を組合せた変換)に縦横の倍率が等しい拡大・縮小を加えた変換。

In [2]:
# -*- coding: utf-8 -*-
import cv2
import numpy as np
# Ipythonで表示用の設定
import matplotlib.pyplot as plt
%matplotlib inline

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

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

#ユークリッド変換行列の生成
#回転成分
a =  np.cos(30.0 * np.pi/180.0)
b = -np.sin(30.0 * np.pi/180.0)
c =  np.sin(30.0 * np.pi/180.0)
d =  np.cos(30.0 * np.pi/180.0)
#スケール成分
s = 1.5
#平行移動成分
tx = 300
ty =  50
matrix = [[s*a, s*b, tx],
          [s*c, s*d, ty]]  
similaliy_matrix = np.float32(matrix)

# アフィン変換実行
out_img = cv2.warpAffine(in_img, similaliy_matrix, (w*2,h*2))

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

#画像表示
plt.figure(figsize=(5,5))
plt.subplot(211)
plt.imshow(disp_in_img)
plt.figure(figsize=(10,10))
plt.subplot(212)
plt.imshow(disp_out_img)
Out[2]:
<matplotlib.image.AxesImage at 0x5c38170>
inserted by FC2 system