灰度线性变换2%线性拉伸
时间: 2024-01-05 22:20:38 浏览: 241
MALAB.m.rar_matlab图像_灰度线性变换
5星 · 资源好评率100%
灰度线性变换是通过建立灰度映射来调整图像的灰度值,以达到图像增强的目的。其中,灰度线性变换的公式为:g(x, y) = k * f(x, y) + d。
在灰度线性变换中,2%线性拉伸是一种常见的增强图像对比度的方法。它通过将图像的2%最低和2%最高灰度值进行拉伸,使得图像的灰度范围更加均匀分布,从而增强图像的细节。
具体实现2%线性拉伸的步骤如下:
1. 计算图像的2%最低和2%最高灰度值,分别记为min_gray和max_gray。
2. 将图像中的每个像素值进行线性变换,公式为:g(x, y) = (f(x, y) - min_gray) * (255 / (max_gray - min_gray))。
3. 对于小于min_gray的像素值,将其设置为0;对于大于max_gray的像素值,将其设置为255。
下面是一个示例代码,演示如何进行灰度线性变换的2%线性拉伸:
```python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg', 0)
# 计算2%最低和2%最高灰度值
hist = cv2.calcHist([image], [0], None, [256], [0, 256])
total_pixels = image.shape[0] * image.shape[1]
min_gray = np.argmax(hist > 0.02 * total_pixels)
max_gray = np.argmax(hist > 0.98 * total_pixels)
# 进行2%线性拉伸
stretched_image = np.clip((image - min_gray) * (255 / (max_gray - min_gray)), 0, 255).astype(np.uint8)
# 显示原始图像和拉伸后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Stretched Image', stretched_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文