python直方图均衡化

举报
风吹稻花香 发表于 2021/06/05 01:10:23 2021/06/05
【摘要】 from PIL import Image from pylab import * import copy # 读取图像到数组中 im = array(Image.open(r"E:\data\yangben\653.jpg")) #获取通道 r = im[:,:,0] g = im[:,:,1] b = im[:,:,2] #显示各个通道原始直方图,...



from PIL import Image

from pylab import *

import copy

# 读取图像到数组中
im = array(Image.open(r"E:\data\yangben\653.jpg"))

#获取通道
r = im[:,:,0]
g = im[:,:,1]
b = im[:,:,2]
#显示各个通道原始直方图,均值化之后的直方图以及累计分布函数
figure()
#计算各通道直方图
imhist_r,bins_r = histogram(r,256,normed=True)
imhist_g,bins_g = histogram(g,256,normed=True)
imhist_b,bins_b = histogram(b,256,normed=True)

subplot(331)
hist(r.flatten(),256)
subplot(332)
hist(g.flatten(),256)
subplot(333)
hist(b.flatten(),256)


#各通道累积分布函数
cdf_r = imhist_r.cumsum()
cdf_g = imhist_g.cumsum()
cdf_b = imhist_b.cumsum()

#累计函数归一化(由0~1变换至0~255)
cdf_r = cdf_r*255/cdf_r[-1]
cdf_g = cdf_g*255/cdf_g[-1]
cdf_b = cdf_b*255/cdf_b[-1]
#绘制累计分布函数

subplot(334)
plot(bins_r[:256],cdf_r)
subplot(335)
plot(bins_g[:256],cdf_g)
subplot(336)
plot(bins_b[:256],cdf_b)

#绘制直方图均衡化之后的直方图

im_r = interp(r.flatten(),bins_r[:256],cdf_r)
im_g = interp(g.flatten(),bins_g[:256],cdf_g)
im_b = interp(b.flatten(),bins_b[:256],cdf_b)


# 显示直方图图像
subplot(337)
hist(im_r,256)
subplot(338)
hist(im_g,256)
subplot(339)
hist(im_b,256)
#显示原始通道图与均衡化之后的通道图
figure()
gray()

#原始通道图
im_r_s = r.reshape([im.shape[0],im.shape[1]])
im_g_s = g.reshape([im.shape[0],im.shape[1]])
im_b_s = b.reshape([im.shape[0],im.shape[1]]) #均衡化之后的通道图
im_r = im_r.reshape([im.shape[0],im.shape[1]])
im_g = im_g.reshape([im.shape[0],im.shape[1]])
im_b = im_b.reshape([im.shape[0],im.shape[1]])

subplot(231)
imshow(im_r_s)

subplot(232)

imshow(im_g_s)

subplot(233)

imshow(im_b_s)


subplot(234)

imshow(im_r)

subplot(235)

imshow(im_g)

subplot(236)

imshow(im_b)

#显示原始图像与均衡化之后的图像
figure()

#均衡化之后的图像
im_p = copy.deepcopy(im)

im_p[:,:,0] = im_r

im_p[:,:,1] = im_g

im_p[:,:,2] = im_b

subplot(121)

imshow(im)

subplot(122)

imshow(im_p)

show()

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/76148238

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。