编写一个程序,读取一个灰度图像并使用基本线性拉伸来增强图像的对比度。线性拉伸是指将图像中的像素值从[min, max]范围重新映射到[0, 255]范围。
时间: 2024-10-10 08:10:49 浏览: 53
ImHistLine.rar_matlab 线性拉伸_图像拉伸 matlab_对比度_对比度调整_直方图 拉伸
编写一个Python程序,使用PIL库(Python Imaging Library)来处理灰度图像并应用线性拉伸增强其对比度,可以按照以下步骤进行:
首先,确保已经安装了Pillow库,如果没有,可以使用pip安装:
```bash
pip install pillow
```
然后,创建一个简单的函数,它接受一个灰度图像路径作为输入,读取图片,应用线性拉伸,并保存处理后的图像。
```python
from PIL import Image, ImageEnhance
def linear_stretch(image_path):
# 1. 读取灰度图像
with Image.open(image_path) as img:
gray_img = img.convert('L') # 转换为灰度模式
# 2. 创建ImageEnhance对象,用于调整亮度
enhancer = ImageEnhance.Contrast(gray_img)
# 3. 设置新的最大值和最小值
min_val, max_val = 0, 255 # 理想范围是[min, max]
new_min = min_val
new_max = enhancer.enhance(enhancement_ratio) * (max_val - min_val) + min_val # 计算新范围
# 4. 应用线性拉伸
stretched_img = gray_img.point(lambda x: min(new_max, max(x, new_min)))
# 5. 保存处理后的图像
output_path = 'stretched_' + image_path
stretched_img.save(output_path)
# 示例用法
linear_stretch('input_image.jpg')
```
在这个例子中,`enhancement_ratio`是一个自定义变量,用于控制拉伸的程度,可以根据需要进行调整。函数最后会生成一个新的文件,名称为原图名加上 "_stretched"。
阅读全文