数字图像处理之灰度直方图

    灰度直方图就是把图中所有像素点的灰度做一个统计,然后画出的一个直方图。

    对于灰度图来说,它是一个非常重要的特征,能够反映一张灰度图的分布特征。

    对于一个5 x 5的灰度图来说,其像素值如下:(假设只有0-9这10个灰度)

  

89254
51043
64380
25468
74329
  

那么对于这个图,我们统计它的灰度


灰度0123456789
频率2133532132


那么画出他的灰度直翻图就为


          
|    1234     
|    1234     
|  1234123412341234  1234 
|1234
12341234123412341234 12341234
|1234123412341234123412341234123412341234
|0123456789


    图画得有点丑啊- -包涵一下囧。

    下面是代码的实现。


    

#直方图
def histogram(img , Canvas):
    h,w = img.size
    pix = img.load()
    frequency = [0] * 256
    for i in range (h):
        for j in range (w):
            frequency[pix[i,j]] = frequency[pix[i,j]] + 1
    if (Canvas == oldHisCanvas):
        histogramInfo(frequency , oldHisInfoCanvas , h , w)
    else :
        histogramInfo(frequency , newHisInfoCanvas , h , w)
    s = max(frequency)
    each = s * 1.0 / 80
    hisImage = Image.new('L',(256 , 100));
    npix = hisImage.load()
    for i in range (255):
        for j in range (100):
            npix[i,j] = 255;
    for i in range (256):
        for j in range (100):
            if frequency[i] < round((100 - j) * each , 0):
                npix[i,j] = 255;
            else:
                npix[i,j] = 0;
    showPicture(hisImage , Canvas)

    这里我画出直方图的方法是类似于上边填表格的方法填充像素点得到的一张图片,画得也不怎么好看。如果大家想得到比较好看的灰度图,可以百度一下,使用python相关的numpy,scipy,matplotlib等好多都可以画出比较美观的直方图。

    以下是效果图:

   

  

    顺带说一句- -灰度直方图是统计灰度图的,别被这张彩色图给吓到了,处理前我有转成灰度图哦。

    owari

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值