Newer
Older
import numpy as np
from scipy.signal import convolve2d
def down_sample(image):
down_sampled = np.empty((int(image.shape[0] / 2), int(image.shape[1] / 2)))
down_sampled[:, :] = (image[::2, ::2] + image[1::2, ::2] + image[::2, 1::2] + image[1::2, 1::2]) / 4
return down_sampled
def up_sample(image):
up_sampled = np.empty((int(image.shape[0] * 2), int(image.shape[1] * 2), image.shape[2]))
up_sampled[::2, ::2, :] = image[::1, ::1, :]
up_sampled[1::2, ::2, :] = image[::1, ::1, :]
up_sampled[::2, 1::2, :] = image[::1, ::1, :]
up_sampled[1::2, 1::2, :] = image[::1, ::1, :]
return up_sampled
def refine(image):
res = np.empty((image.shape[0], image.shape[1], 3))
ker = np.array([[1, 2, 1], [2, 4, 2], [1, 2, 1]]) / 16
for i in range(3):
res[:, :, i] = convolve2d(image[:, :, i], ker, mode='same')
return res