Files
2024-09-11 14:42:37 +08:00

48 lines
1.3 KiB
Python

from turtle import up
import cv2 as cv
from matplotlib import pyplot as plt
def build_gaussian_pyramid(image, levels):
pyramid = [image]
temp = image
for i in range(levels):
blurred = cv.GaussianBlur(temp, (5, 5), 0)
down_sampled = cv.resize(
blurred,
(temp.shape[1] // 2, temp.shape[0] // 2),
interpolation=cv.INTER_LINEAR,
)
pyramid.append(down_sampled)
temp = down_sampled
return pyramid
def build_laplacian_pyramid(image, levels):
gaussian_pyramid = build_gaussian_pyramid(image, levels)
laplacian_pyramid = []
for i in range(levels):
up_sampled = cv.resize(
gaussian_pyramid[i + 1],
(gaussian_pyramid[i].shape[1], gaussian_pyramid[i].shape[0]),
interpolation=cv.INTER_LINEAR,
)
laplacian_layer = cv.subtract(gaussian_pyramid[i], up_sampled)
laplacian_pyramid.append(laplacian_layer)
return laplacian_pyramid
image = cv.imread("images/lena.jpg", cv.IMREAD_GRAYSCALE)
pyramid = build_laplacian_pyramid(image, 3)
plt.rcParams["font.sans-serif"] = ["Times New Roman"]
plt.figure(figsize=(12, 6))
for i in range(len(pyramid)):
plt.subplot(1, len(pyramid), i + 1)
plt.imshow(pyramid[i], cmap="gray")
plt.title("Level " + str(i))
plt.axis("off")
plt.tight_layout()
plt.show()