分享
  1. 首页
  2. 文章

实验结果

asialiugf · · 1763 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

直方图均衡化

直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布. 直方图均衡化就是对图像进行非线性拉伸, 重新分配图像像素值, 使一定灰度范围内的像素数量大致相同. 直方图均衡化就是把给定图像的直方图分布改变成"均匀"分布直方图分布.

假设输入是一张 8 比特灰度图(即灰度级为 0 至 255), 则任意灰度级的概率函数为

P(rk)=nk/n,k∈0−255

其中 nk 为灰度级为 k 的像素个数, n 为总像素个数. 设转换函数为 T, 则

sk=T(rk)=255∑j=0knjn

代码实现

import matplotlib.pyplot as plt
import numpy as np
import PIL.Image
import scipy.misc
def convert_2d(r):
 x = np.zeros([256])
 for i in range(r.shape[0]):
 for j in range(r.shape[1]):
 x[r[i][j]] += 1
 x = x / r.size
 sum_x = np.zeros([256])
 for i, _ in enumerate(x):
 sum_x[i] = sum(x[:i])
 s = np.empty(r.shape, dtype=np.uint8)
 for i in range(r.shape[0]):
 for j in range(r.shape[1]):
 s[i][j] = 255 * sum_x[r[i][j]]
 return s
im = PIL.Image.open('/img/jp.jpg')
im = im.convert('L')
im_mat = scipy.misc.fromimage(im)
# 显示输入直方图
plt.hist(im_mat.reshape([im_mat.size]), 256, normed=1)
plt.show()
im_converted_mat = convert_2d(im_mat)
# 显示输出直方图
plt.hist(im_converted_mat.reshape([im_converted_mat.size]), 256, normed=1)
plt.show()
im_converted = PIL.Image.fromarray(im_converted_mat)
im_converted.show()

实验结果

原始直方图

img

直方图均衡化后的直方图, 可以看到图像分布变得均匀

img


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1763 次点击
1 回复 | 直到 2025年05月15日 08:34:00
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏