chaos python 直方图均衡化

来源:互联网 发布:剑灵灵剑捏脸数据图 编辑:程序博客网 时间:2024/05/22 15:03

 直方图均衡化是一种增加图片对比度的手段。之前学过一段时间Haskell. 函数式贼好玩,于是python现在开始瞎写。

 欢迎交流各种实现方法!我CUDA写不出来(share memory写的有问题),写出来求交流
 
 总的来说就是三步:
 1.对图片求直方图
 2.对直方图均衡化(使用累计分布函数)
 3.映射回原图像

 累计分布函数:
 这里写图片描述 

 先看代码。。。

from scipy.misc import imread,imshow,imsaveimport numpy as npfrom itertools import accumulateimg1=np.floor(imread("/home/ryan/Desktop/histo.jpg",flatten=True))img3 = np.floor(imread("/home/ryan/Desktop/cat.jpg"))def histo(img):    histo = accumulate([np.sum(np.floor(img)==i) for i in range(256)])    histo = 255*np.fromiter(histo, np.uint32)/img.size    for i in range(256):        img[img==i] = histo[i]+256    return img-256def histo3(img):    img[:,:,0] = histo(img[:,:,0])    img[:,:,1] = histo(img[:,:,1])    img[:,:,2] = histo(img[:,:,2])    return imgimshow(histo3(img3))imshow(histo(img1))

 循环是映射回去了,想把数值错开,要不感觉都数都往后堆了。。

 效果: 

 这里写图片描述
 
 这里写图片描述

这里写图片描述

这里写图片描述

0 0
原创粉丝点击