如何在没有内置函数的情况下对图像实现直方图均衡,即我想通过运行两个来改变孤独中的所有像素:
for x in range(0, im.size[0] ):
for y in range(0, im.size[1] ):
....
答案 0 :(得分:1)
第一步是建立强度值的直方图。在非常幼稚的类似Python的伪代码中,您可以执行以下操作:
histogram = {}
for each pixel v: # similar to the code in your question
if v in histogram:
histogram[v] += 1
else:
histogram[v] = 1
为了理解图像处理算法,我认为可以坚持使用NumPy数组并使用skimage.io.imread
或scipy.misc.imread
读取数据并迭代像素值。
希望这有助于您开始使用。
刚看到pillow
标记。因此,为了使其更清晰,我建议您将图像直接读入数据类型uint8
的NumPy数组(即范围[0, 255]
中的值),如下所示:
from skimage.io import imread
image = imread('image.png')
或者如果您没有安装scikit-image,那么
from scipy.misc import imread
image = imread('image.png')
访问像素值就像
一样简单pixel_intensity = image[10, 20]
请注意,直方图均衡假定为灰度图像,或者您正在处理彩色图像的单个通道。最好只使用灰度图像开始,以保持简单。