以下是 Python OpenCV 读取一幅图像文件,对其指数拉伸算法的实现并显示增强后图像的代码:

import cv2
import numpy as np

# 读取图像
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)

# 指数拉伸变换函数
def exp_transform(pixel, c=0.5, gamma=1.5):
    return c * (pixel ** gamma)

# 对灰度值在[20-50]范围内的灰度值进行指数拉伸
lower = 20
upper = 50
img_enhanced = np.zeros_like(img)
for i in range(img.shape[0]):
    for j in range(img.shape[1]):
        if img[i, j] >= lower and img[i, j] <= upper:
            img_enhanced[i, j] = exp_transform(img[i, j])

# 显示增强后图像
cv2.imshow('Enhanced Image', img_enhanced)
cv2.waitKey(0)
cv2.destroyAllWindows()

在代码中,我们首先读取了一幅灰度图像,然后定义了一个指数拉伸变换函数 exp_transform,其中 cgamma 分别是变换参数。接着,我们对灰度值在 [20-50] 范围内的像素进行了指数拉伸,并将结果保存在 img_enhanced 中。最后,我们用 cv2.imshow 函数显示了增强后的图像,并用 cv2.waitKeycv2.destroyAllWindows 函数等待用户关闭窗口。

需要注意的是,为了避免像素值溢出,我们在代码中使用了 np.zeros_like 函数创建了一个和原图像大小相同的全零矩阵 img_enhanced,并将增强后的像素值保存在其中。此外,我们还可以根据具体应用场景选择不同的变换函数和参数,以达到更好的图像增强效果。

Python OpenCV 指数拉伸图像增强:灰度值范围限制

原文地址: https://www.cveoy.top/t/topic/np82 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录