至于均衡化,我就不多于叙述了。维基百科确实已经写得很好了,不管是例子,原理还是图片解析。
下面是传送门:维基百科灰度图均衡化
以下是我按照维基百科的思想,自己编写的灰度图均衡化。
#均衡化
def equalization():
equalizationImage = originalImage.convert('L');
frequency = [0] * 256
pix = equalizationImage.load()
h,w = equalizationImage.size
print h,w
for i in range (h):
for j in range (w):
frequency[pix[i,j]] = frequency[pix[i,j]] + 1
cnt = [0] * 256
cnt[0] = frequency[0]
for i in range (1,255):
cnt[i] = frequency[i] + cnt[i - 1]
minL = 0
start = 0
for i in range (255):
if (cnt[i] != 0):
minL = cnt[i]
start = i
break
hist = [0] * 256
for i in range (start , 255):
hist[i] = round((cnt[i] - minL) * 1.0 / (h * w - minL) * 255 , 0)
equalizeImage = Image.new('L',(h,w))
npix = equalizeImage.load()
for i in range (h):
for j in range (w):
npix[i,j] = hist[pix[i,j]]
showPicture(equalizeImage , newCanvas)
histogram(equalizeImage , newHisCanvas)
以下是效果图:
owari