python 直方图均衡化_直方图均衡化-Python实现

需要均衡的图像

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

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] = 0

# 统计各级灰度频数

for line in img:

for i in line:

counter[i] += 1

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

# 计算各级灰度概率

pixel_num = sum(counter.values())

for k in counter.keys():

counter[k] /= pixel_num

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

# 求各级累积概率

sum_probability = {}

for i in range(10):

sum_probability[i] = 0

for k in counter.keys():

if k <= i:

sum_probability[i] += counter[k]

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

# 打印灰阶映射表

for i in sum_probability:

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值