分段线性灰度变化实现对比度增强代码示例
以下是使用分段线性灰度变化实现对比度增强的Python代码示例:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
# 定义灰度变化函数
def gray_transform(x, a, b, c, d):
if x <= a:
return 0
elif x > a and x <= b:
return (x - a) * 255 // (b - a)
elif x > b and x <= c:
return 255
elif x > c and x <= d:
return (d - x) * 255 // (d - c)
else:
return 0
# 定义分段线性灰度变化函数
def piecewise_linear_transform(img, a, b, c, d):
# 初始化输出图像
out = np.zeros_like(img)
# 对每个像素进行灰度变化
for i in range(img.shape[0]):
for j in range(img.shape[1]):
out[i,j] = gray_transform(img[i,j], a, b, c, d)
return out
# 对比度增强
out = piecewise_linear_transform(img, 50, 100, 150, 200)
# 显示图像
cv2.imshow('Original Image', img)
cv2.imshow('Contrast Enhanced Image', out)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上面的代码中,我们首先读取了一张灰度图像,然后定义了一个灰度变化函数,该函数将输入灰度值映射到输出灰度值。然后,我们定义了一个分段线性灰度变化函数,该函数对图像中的每个像素进行灰度变换。最后,我们使用定义的分段线性灰度变化函数对图像进行对比度增强,并显示原始图像和增强后的图像。
原文地址: http://www.cveoy.top/t/topic/bLY3 著作权归作者所有。请勿转载和采集!