一、问题与解决思路
图像实质上就是一个包含了许多像素点的矩阵。
具体计算过程如下:
通过min()函数以及max()函数分别求出处理前原图像的灰度级最小值与最大值;
对原图像进行归一化处理,即用【图像矩阵元素-处理前灰度级最小值】除以【处理前灰度级最大值-处理前灰度级最小值】;
将图像灰度级放缩至我们指定的预期期间,即用【处理后的灰度级最小值】加上“ 【步骤3中归一化处理后的结果】乘以【处理后的灰度级最大值-处理后的灰度级最小值】 ”;
将处理后的图像转为uint8类型以便于正确显示。
二、Python 实现代码
1) 核心函数:
from PIL import Image
from pylab import *
# 自定义图像对比度拉伸函数 myGrayScaleTransformJ
def myGrayScaleTransformJ(img1, para):
# 若输入不合法,返回原图像
if (para[0] < 0 or para[1] > 255 or para[0] > para[1]):
img2 = Image.fromarray(uint8(img1))
return img2
# min_after,max_after 分别表示拉伸后灰度级区间的最小值与最大值
min_after = para[0]
max_after = para[1]
# min_before,max_before 分别表示处理前灰度级区间的最小值与最大值
m