Python OpenCV 指数拉伸图像增强:实现与示例
以下是使用 Python OpenCV 实现指数拉伸算法的示例代码:
import cv2
import numpy as np
# 读取图像文件
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 定义指数拉伸变换函数,只对灰度值在[20-50]范围内的灰度值进行拉伸
def exp_stretch(pixel_val, min_val=20, max_val=50, gamma=1.5):
if pixel_val < min_val:
return 0
elif pixel_val > max_val:
return 255
else:
return 255 * ((pixel_val - min_val) / (max_val - min_val)) ** gamma
# 应用指数拉伸变换函数
img_exp = np.zeros_like(img)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
img_exp[i,j] = exp_stretch(img[i,j])
# 显示增强后图像
cv2.imshow('Original Image', img)
cv2.imshow('Exponentially Stretched Image', img_exp)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个示例中,我们首先读取了一幅灰度图像,然后定义了指数拉伸变换函数。该函数只对灰度值在 20 到 50 之间的像素进行拉伸,其他像素的灰度值保持不变。
接下来,我们使用 np.zeros_like() 函数创建了一个与输入图像大小相同的图像,并使用嵌套循环应用指数拉伸变换函数,将结果存储到新图像中。最后,我们使用 cv2.imshow() 函数显示原始图像和增强后的图像。cv2.waitKey() 函数等待用户按下键盘上的任意键,然后使用 cv2.destroyAllWindows() 函数关闭所有打开的窗口。
原文地址: https://www.cveoy.top/t/topic/nqhE 著作权归作者所有。请勿转载和采集!