灰度变换和空间滤波基础


import cv2
def denoise_image(image_path):
# 读取图像
image = cv2.imread(image_path)
# 将图像转为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 对灰度图像进行平均滤波
denoised_image = cv2.blur(gray_image, (5, 5))
# 显示原始图像和处理后的图像
cv2.imshow("Original Image", image)
cv2.imshow("Denoised Image", denoised_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 调用函数进行处理
denoise_image("image.jpg")
- 灰度映射是一种基于图像像素的点操作,通过对原始图像中每个像素点赋予一个新的灰度值来增强图像。实际应用中,会根据增强的目的,设计某种“映射规则”,并使用“映射函数”来表示,对原始图像中的每个像素都用这个映射函数将原始灰度值转换为新的灰度值。
import cv2
# 读取图像
image = cv2.imread('B:\\2024\project\DIP\DIPProject\img\\a1.png')
# 将图像转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 显示灰度图
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
# 读取灰度图像
img = cv2.imread('gray_image.png', 0)
# 图像反转
inverted_img = cv2.bitwise_not(img)
# 显示原图和反转后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Inverted Image', inverted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#对数变换
import cv2
import numpy as np
def logarithmic_transform(image, c):
# 对图像进行对数变换
transformed_image = c * np.log1p(image)
# 将像素值限制在0到255的范围内
transformed_image = np.clip(transformed_image, 0, 255)
# 将浮点型像素值转换为无符号8位整数
transformed_image = transformed_image.astype(np.uint8)
return transformed_image
# 读取原始图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 设置对数变换的参数c
c = 10
# 对图像进行对数变换
transformed_image = logarithmic_transform(image, c)
# 保存处理之后的图像
cv2.imwrite('transformed_image.jpg', transformed_image)
import cv2
import numpy as np
# 加载图像
image = cv2.imread('input.jpg', 0)
# 设置伽马值
gamma = 1.5
# 执行幂率(伽马)变换
gamma_corrected = np.power(image / 255.0, gamma) * 255.0
# 将像素值限制在0到255之间
gamma_corrected = np.clip(gamma_corrected, 0, 255).astype(np.uint8)
# 保存处理后的图像
cv2.imwrite('output.jpg', gamma_corrected)
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 将图像转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 计算灰度直方图
histogram = cv2.calcHist([gray_image], [0], None, [256], [0, 256])
# 绘制直方图
import matplotlib.pyplot as plt
plt.plot(histogram)
plt.title('Gray Scale Histogram')
plt.xlabel('Pixel Value')
plt.ylabel('Frequency')
# 保存处理后的图像
cv2.imwrite('gray_image.jpg', gray_image)