In [1]:
# to run in google colab
import sys
if 'google.colab' in sys.modules:
import subprocess
subprocess.call('apt-get install subversion'.split())
subprocess.call('svn export https://github.com/YoniChechik/AI_is_Math/trunk/c_02b_filtering_and_resampling/Tour_Eiffel.jpg'.split())
In [2]:
import numpy as np
import cv2
from matplotlib import pyplot as plt
figsize = (10,10)
Get basic image:
In [3]:
def plot_im(img, title):
plt.figure(figsize=figsize)
plt.imshow(img)
plt.title(title)
plt.xticks([])
plt.yticks([])
plt.show()
img = cv2.imread("Tour_Eiffel.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plot_im(img, "original image")
In [4]:
def mean_kernel_smoothing(img, sz):
kernel = np.ones((sz, sz))/(sz**2)
dst = cv2.filter2D(img, -1, kernel)
plot_im(dst, str(sz)+'X'+str(sz)+" mean kernel")
mean_kernel_smoothing(img, 5)
mean_kernel_smoothing(img, 10)
mean_kernel_smoothing(img, 20)
In [5]:
def gauss_blur(img, k_sz, sigma=-1, is_plot_kernel=False):
blur = cv2.GaussianBlur(img, (k_sz, k_sz), sigma)
plot_im(blur, "gaussian kernel with kernel_size="
+ str(k_sz)+r", $\sigma$=" + str(sigma))
if is_plot_kernel:
# sigma=-1 will set the sigma size automatically
gauss_ker = cv2.getGaussianKernel(k_sz, sigma)
plt.figure(figsize=(figsize[0]/2, figsize[1]/2))
plt.plot(gauss_ker)
plt.title("corresponding gaussian kernel")
plt.show()
gauss_blur(img, 5, is_plot_kernel=True)
gauss_blur(img, 21, is_plot_kernel=True)
gauss_blur(img, 21, 1, is_plot_kernel=True)