将图像中的每个像素乘以一个因子

cli*_*ray 2 python rgb pixel image-processing python-imaging-library

我有一个使用拜耳过滤器创建的图像,颜色稍微偏离.我需要将每个像素的RG和B乘以某个因子(R,G和B各自的因子不同)以获得正确的颜色.我正在使用python映像库,当然还在python中编写.有没有办法有效地做到这一点?

谢谢!

fra*_*xel 6

这是怎么做的:

  1. 首先将图像分割为RGB通道.
  2. 使用point于乘以因子的信道(1.5在该示例中,在R信道).
  3. 将频道合并回来.

下面是代码:

import Image
im = Image.open('1_tree.jpg')
im = im.convert('RGB')
r, g, b = im.split()
r = r.point(lambda i: i * 1.5)
out = Image.merge('RGB', (r, g, b))
out.show()
Run Code Online (Sandbox Code Playgroud)

原版的:

在此输入图像描述

红色通道乘以1.5(它有点红......):

在此输入图像描述


Mar*_*ell 6

您可以非常有效地完成此操作,并且只需使用具有以下convert()功能的简单变换矩阵:

#!/usr/bin/env python3 

from PIL import Image 

# Open image 
im = Image.open('tree.jpg') 

# Make transform matrix, to multiply R by 1.5, leaving G and B unchanged
Matrix = ( 1.5, 0,  0, 0, 
           0,   1,  0, 0, 
           0,   0,  1, 0) 

# Apply transform and save 
im = im.convert("RGB", Matrix) 
im.save('result.png') 
Run Code Online (Sandbox Code Playgroud)

输入图像:

在此处输入图片说明

结果图像:

在此处输入图片说明

关键词:Python、PIL、枕头、颜色矩阵、颜色矩阵、变换、乘法通道、缩放通道、分离、单独、单独通道、带、组件、单独、分割通道、合并通道、图像、图像处理。