需要均衡的图像

将下面的图像进行直方图均衡

1

3

9

9

8

2

1

3

7

3

3

6

0

6

4

6

8

2

0

5

2

9

2

6

0

均衡化计算过程

使用python进行直方图均衡化:

# -*- coding: utf-8 -*-

# @Time : 2020/3/7 23:30

# @Author : focksor

# @Email : focksor@outlook.com

# 原始图像

img = [

[1, 3, 9, 9, 8],

[2, 1, 3, 7, 3],

[3, 6, 0, 6, 4],

[6, 8, 2, 0, 5],

[2, 9, 2, 6, 0],

]

counter = {}

# 统计各级灰度频数

for i in range(10):

counter[i] = [i for line in img for i in line].count(i)

print("各级频数:", counter)

# 计算各级灰度概率

pixel_num = sum(counter.values())

for k in counter.keys():

counter[k] /= pixel_num

print("各级概率:", counter)

# 求各级累积概率

sum_probability = {}

for k in counter.keys():

print(k, [counter[i] for i in counter.keys() if i <= k])

sum_probability[k] = sum([counter[i] for i in counter.keys() if i <= k])

print("累计概率:", sum_probability)

# 打印灰阶映射表

for i in sum_probability.keys():

sum_probability[i] = round(sum_probability[i] * 9)

print("映射到灰阶:")

for i in range(10):

print(i, "->", sum_probability[i])

# 将原图像中的灰阶映射到均衡后的灰阶

for i, line in enumerate(img):

for j, pixel in enumerate(line):

img[i][j] = sum_probability[img[i][j]]

print("均衡化后图像:")

for line in img:

print(line)

各级频数: {0: 3, 1: 2, 2: 4, 3: 4, 4: 1, 5: 1, 6: 4, 7: 1, 8: 2, 9: 3}

各级概率: {0: 0.12, 1: 0.08, 2: 0.16, 3: 0.16, 4: 0.04, 5: 0.04, 6: 0.16, 7: 0.04, 8: 0.08, 9: 0.12}

累计概率: {0: 0.12, 1: 0.2, 2: 0.36, 3: 0.52, 4: 0.56, 5: 0.6000000000000001, 6: 0.7600000000000001, 7: 0.8000000000000002, 8: 0.8800000000000001, 9: 1.0}

映射到灰阶:

0 -> 1

1 -> 2

2 -> 3

3 -> 5

4 -> 5

5 -> 5

6 -> 7

7 -> 7

8 -> 8

9 -> 9

均衡化后图像:

[2, 5, 9, 9, 8]

[3, 2, 5, 7, 5]

[5, 7, 1, 7, 5]

[7, 8, 3, 1, 5]

[3, 9, 3, 7, 1]

python批量直方图均衡化_直方图均衡化-Python实现相关推荐

  1. python批量处理视频教程_如何用python批量调整视频声音

    今天来研究python中moviepy模块的用途 近来有大量处理视频的需求, 常会碰到一个问题是下载的视频音量过小, 会需要将它调大声, 虽然有在线工具VideoLouder可以免费调整视频音量大小, ...

  2. 如何用python批量下载数据_如何用python从wind中批量导出数据

    2017-08-07 回答 先建立一个数据库. qw@qw-latitude-e4300:~$ mysql -u root -p enter password: 打开数据库,正确输入密码之后,呈现下面 ...

  3. python批量转换数据类型_玩转python 各种数据类型的转换

    # -*- coding: utf-8 -*- # @Time : 2019/4/28 14:27 # @Author : wujf # @Email : 1028540310@qq.com # @F ...

  4. python 批量创建线程_【Python】批量创建线程

    在<[Python]线程的创建.执行.互斥.同步.销毁>(点击打开链接)中介绍了Python中线程的使用,但是里面线程的创建,使用了很原始的方式,一行代码创建一条.其实,Python里是可 ...

  5. python套用word模板_如何使用Python批量创建Word模板

    如何使用 Python 批量创建 Word 模板 在日常工作中我们经常需要重复性地将同一份内容的 Word 文档资料发送 给多个不同客户, 此时 Word 文档内容可能只有客户署名不同. 或者只有部分 ...

  6. python批量生成图_利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...

  7. python批量移动文件_用python批量移动文件

    我是用来移动图片的,其他格式的文档也是可以的,改下后缀列表就可以了 import os,shutil import datetime #将文件夹里的图片全部移动到新文件夹中 #revised by S ...

  8. python 文本翻译 项目_如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

  9. python批量打印网页_用Python批量打印定制的HTML页面

    让我提供一些背景知识. 我自愿参加的一个组织为那些在假期不能来取餐的人送饭. 他们目前有一个sqlserverdb,该数据库存储所有客户机的信息以及每年的用餐信息. 目前,一个Java桌面应用程序连接 ...

最新文章

  1. LeetCode实战:合并两个有序链表
  2. Python list 操作
  3. 文件逆顺输出到新文件(三种方案)
  4. dataframe 如何选中某列的一行_快速解释如何使用pandas的inplace参数
  5. python发音翻译-python实现在线翻译
  6. [javaSE] 集合框架(迭代器)
  7. java写的exe程序反编译_【Jad】利用jdk自带的jad.exe实现批量反编译class文件
  8. c语言实现lcd显示自动滚动,lcd1602实现字幕滚动原理_lcd1602滚动显示程序
  9. Cat5e、Cat6、Cat6a和Cat7网线有什么区别?哪个更好?
  10. 如何用word制作英语答题卡_英语考试答题卡(word 版)
  11. GitHub的简介翻译(草稿)
  12. 输入法的新时代:搜狗、讯飞、百度鏖战智能语音
  13. XCOM串口调试软件的安装与使用(附串口及驱动资源包)
  14. 全景图像转换软件(Pano2VR Pro 5中文版) v5.2.5
  15. 胆囊炎的临床症状有哪些?
  16. 『ANDROID』android animator 动画
  17. 价值百万的2022年度总结
  18. c罩杯尺码_教你三步正确测量内衣尺码!
  19. vscode vim 分组替换_写给 VS Code 用户的 Vim 入坑指南
  20. ERP学习之路BOM篇

热门文章

  1. flume伪分布模式实践
  2. matlab中copy函数,Matlab 的函数
  3. 1.4 pycharm学习总结
  4. 软考------多媒体基础知识思维导图
  5. Java调用接口获取json数据解析后保存到数据库
  6. Mac 使用 mysqlclient 报错 NameError: name ‘_mysql‘ is not defined
  7. stm32——定时器之中断
  8. 恒德无线远程城市照明管理系统
  9. 微信错误 errcode:40001,errmsg:invalid credential, access_token is invalid or not latest hint
  10. 使用discuz搭建私有论坛