import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import convolve2d
from PIL import Image
# 读取图像并转换为灰度图
image = Image.open('lena.png').convert('L')
# 将图像转换为 numpy 数组
image_array = np.array(image)
# 定义一个 3x3 的卷积核,用于检测垂直边缘
kernel = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
# 对图像进行卷积操作
convolved_image = convolve2d(image_array, kernel)
# 显示原图和卷积后的图像
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(image_array, cmap='gray')
ax[0].set_title('Original Image')
ax[0].axis('off')
ax[1].imshow(convolved_image, cmap='gray')
ax[1].set_title('Convolved Image')
ax[1].axis('off')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import convolve2d
from PIL import Image
# 读取图像并转换为灰度图
image = Image.open('lena.png').convert('L')
# 将图像转换为 numpy 数组
image_array = np.array(image)
# 定义一个 3x3 的卷积核,用于检测垂直边缘
kernel = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
# 对图像进行卷积操作
convolved_image = convolve2d(image_array, kernel)
# 显示原图和卷积后的图像
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(image_array, cmap='gray')
ax[0].set_title('Original Image')
ax[0].axis('off')
ax[1].imshow(convolved_image, cmap='gray')
ax[1].set_title('Convolved Image')
ax[1].axis('off')
plt.show()
文章中利用lena图像的读取,然后进行二阶导数算子(拉普拉斯算子)[-1, -1, -1]
[-1, 8, -1]
[-1, -1, -1] 进行卷积运算,并且用matplotlib进行图像输出处理。