補間処理(拡大を例に)

nearest-neighbor(ニアレストネイバー)、bilinear(バイニリア)、bicubic(バイキュービック)、Lanczos(ランチョス)

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

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

#画像読込
in_img = cv2.imread("eye.bmp")

# 画像の拡大・縮小
h = in_img.shape[0]                      # 画像の高さ
w = in_img.shape[1]                      # 画像の幅

out_img1 = cv2.resize(in_img,(w*2,h*2),interpolation=cv2.INTER_NEAREST  ) # 画像を2倍に拡大
out_img2 = cv2.resize(in_img,(w*2,h*2),interpolation=cv2.INTER_LINEAR   ) # 画像を2倍に拡大
out_img3 = cv2.resize(in_img,(w*2,h*2),interpolation=cv2.INTER_CUBIC    ) # 画像を2倍に拡大
out_img4 = cv2.resize(in_img,(w*2,h*2),interpolation=cv2.INTER_LANCZOS4 ) # 画像を2倍に拡大

#OpenCVがBGRなのでRGBに変換
disp_in_img   = cv2.cvtColor(in_img,   cv2.COLOR_BGR2RGB)
disp_out_img1 = cv2.cvtColor(out_img1, cv2.COLOR_BGR2RGB)
disp_out_img2 = cv2.cvtColor(out_img2, cv2.COLOR_BGR2RGB)
disp_out_img3 = cv2.cvtColor(out_img3, cv2.COLOR_BGR2RGB)
disp_out_img4 = cv2.cvtColor(out_img4, cv2.COLOR_BGR2RGB)

plt.figure(figsize=(8,8))
plt.subplot(321)
plt.imshow(disp_in_img)
plt.title('input image')

plt.figure(figsize=(8,12))
plt.subplot(323)
plt.imshow(disp_out_img1)
plt.title('nearest-neighbor')
plt.subplot(324)
plt.imshow(disp_out_img2)
plt.title('bilinear')
plt.subplot(325)
plt.imshow(disp_out_img3)
plt.title('bicubic')
plt.subplot(326)
plt.imshow(disp_out_img4)
plt.title('Lanczos')
Out[29]:
<matplotlib.text.Text at 0x1321ced0>
inserted by FC2 system