python基于点运算的彩色图像区间线性变换代码
时间: 2024-10-06 08:02:47 浏览: 22
在Python中,你可以使用NumPy库来进行彩色图像的区间线性变换,特别是处理基于像素点的颜色值。这里是一个简单的示例,展示如何对RGB图像进行线性变换:
```python
import numpy as np
from PIL import Image
def linear_transform(image_path, in_min=(0, 0, 0), in_max=(255, 255, 255), out_min=(0, 0, 0), out_max=(255, 255, 255)):
# 加载图像
img = Image.open(image_path).convert('RGB')
# 将图像转换为灰度数组
pixels = np.array(img.getdata(), dtype=np.uint8)
# 确定输入和输出范围
input_range = [(min_range, max_range) for min_range, max_range in zip(in_min, in_max)]
output_range = [(min_range, max_range) for min_range, max_range in zip(out_min, out_max)]
# 应用区间线性变换
transformed_pixels = []
for pixel in pixels:
transformed_pixel = tuple(np.interp(pixel, input_range, output_range))
transformed_pixels.append(transformed_pixel)
# 构建新的图像数据并保存
new_img_data = np.array(transformed_pixels, dtype=np.uint8)
new_image = Image.fromarray(new_img_data)
new_image.save('transformed_image.png')
# 示例用法
linear_transform('input_image.png', (0, 100, 0), (255, 200, 200), (0, 100, 100), (255, 255, 255))
```
这个函数首先读取图片,然后遍历每个像素,将其R、G、B分量分别映射到指定的新区间。`np.interp`函数用于线性插值,将原始颜色值从输入区间映射到输出区间。
阅读全文