图像处理与分析 实验三

122次阅读
没有评论

共计 1339 个字符,预计需要花费 4 分钟才能阅读完成。

实验内容:图像空域与频域的平滑、锐化处理的模板方法

空域的平滑和锐化

导入图像

import cv2 as cv
import numpy as np
import random
import matplotlib.pyplot as plt

img = cv.imread("1.png", 1)
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
# cv.imshow("img.png", img)
plt.imshow(img)


图像处理与分析 实验三

添加随机噪声

# 加噪声
(rows, cols, chn) = img.shape
for i in range(100):
    x = np.random.randint(0, rows)
    y = np.random.randint(0, cols)
    img[x, y, :] = random.randint(0, 255)

# cv.imshow("noise", img)
plt.imshow(img)

图像处理与分析 实验三

空域平滑

# 以中值滤波为例
blur_img = cv.medianBlur(img, 3)
plt.imshow(blur_img)

图像处理与分析 实验三

空域锐化

gray_img = cv.cvtColor(blur_img, cv.COLOR_RGB2GRAY)
# laplacian_img = cv.Laplacian(blur_img, cv.CV_64F)
# kernel4 = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]], dtype=int)
kernel8 = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]], dtype=int)
filter_img = cv.filter2D(gray_img, -1, kernel8)
plt.imshow(filter_img, cmap = 'gray')

图像处理与分析 实验三

频域的平滑和锐化

频域平滑

gaussian_blur_img = cv.GaussianBlur(img, (11, 11), sigmaX=20)
plt.imshow(gaussian_blur_img)

图像处理与分析 实验三

频域锐化

gray_gaussian_blur_img = cv.cvtColor(gaussian_blur_img, cv.COLOR_RGB2GRAY)
dft = cv.dft(np.float32(gray_gaussian_blur_img), flags=cv.DFT_COMPLEX_OUTPUT)
fshift = np.fft.fftshift(dft)

row, col = gray_gaussian_blur_img.shape
midrow, midcol = int(row / 2), int(col / 2)

mask = np.ones((row, col, 2), np.uint8)
mask[midrow-30 : midrow+30, midcol-30 : midcol+30] = 0

f = fshift * mask

ishift = np.fft.ifftshift(f)
hight_img = cv.idft(ishift)

hight_img = cv.magnitude(hight_img[:, :, 0], hight_img[:, :, 1])

plt.imshow(hight_img, cmap='gray')

图像处理与分析 实验三

正文完
 0
icvuln
版权声明:本站原创文章,由 icvuln 于2024-10-04发表,共计1339字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)