Python实现直方图拉伸算法——图像增强
在数字图像处理中,直方图是一种常见的工具。直方图拉伸(histogram stretch)是常用的图像增强方法之一,它可以通过调整图像像素的灰度值范围,增加图像对比度和显示效果。本篇文章将介绍如何使用Python实现直方图拉伸算法,以实现图像的增强。
直方图拉伸原理
直方图拉伸的原理很简单:把图像原本的最小灰度值映射到0,最大灰度值映射到255,中间的灰度值按比例进行映射。 由于我们希望把图像的灰度范围“打散”到[0,255]的范围内,因此需要找到一种映射函数f(x),使得原来在某个灰度级上的颜色映射到在[0,255]范围内的某个灰度级上。在这里,我们使用线性变换函数:
f(x) = (x-min)/(max-min) * 255
其中,min和max分别为图像中出现的最小和最大像素值,x是待映射的像素灰度值。为了避免对图像的整体亮度造成影响,对多数图像来说,我们通常忽略一小部分的超出灰度范围的像素值。
Python实现
下面我们通过Python实现直方图拉伸算法,代码如下:
import numpy as np
from PIL import Image
import matpl