下面三个题目是我们老师上课的时候布置的课堂作业,要求手算,这里我用python实现一遍。
题目1:对于如图1所示的5x5的3比特图像,(1) 画出灰度直方图; (2)求直图均衡变换函数,给出计算过程,(3) 给出直方图均衡化以后的图像中每个像素的灰度级; (4) 画出均衡化后的直方图。

(1) 画出灰度直方图。不做解释,直接上代码:
'''
Description:
Author: Weijian Ma
Date: 2020-10-13 10:09:21
LastEditTime: 2020-10-13 10:19:32
LastEditors: Weijian Ma
'''
import numpy as np
import matplotlib.pyplot as plt
import cv2
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
img = np.array([[0, 1, 1, 0, 0],
[3, 4, 0, 2, 1],
[3, 2, 1, 0, 2],
[2, 1, 1, 0, 3],
[2, 3, 3, 4, 4]])
countNum = np.zeros(8)
for i in range(8):
countNum[i] = np.sum(img==i)
## 画出灰度直方图
fig = plt.figure(figsize=(10,4))
sub01 = plt.subplot(121)
sub02 = plt.subplot(122)
sub01.set_xticks(np.arange(8))
sub02.set_xticks(np.arange(8))
sub01.set_title("直方图")
sub02.set_title("归一化直方图")
sub01.set_xlabel("灰度")
sub01.set_ylabel("频数")
sub02.set_xlabel("灰度")
sub02.set_ylabel("频率")
sub01.bar(np.arange(8), countNum)
sub02.bar(np.arange(8), countNum/np.sum(countNum))
plt.show()
结果:
(2)求直图均衡变换函数,给出计算过程。
具体原理及公式可参考下面的链接,这里我直接写计算过程。
https://blog.youkuaiyun.com/weixin_45476502/article/details/108968328
对于原图像:
p r ( r k ) = n k M N , k = 0 , 1 , 2 , . . . , K − 1 p_r(r_k)=\frac{n_k}{MN},k=0,1,2,...,K-1 pr(rk)=MNnk,k=0,1,2,...,K−1
r 0 = 0 , r 1 = 1 , r 2 = 2 , r 3 = 3 , r 4 = 4 , r 5 = 5 , r 6 = 6 , r 7 = 7. r_0=0,r_1=1,r_2=2,r_3=3,r_4=4,r_5=5,r_6=6,r_7=7. r0=0,r1=1,r2=2,r3=3,r4=4,r5=5,r6=6,r7=7.
n 0 = 6 , n 1 = 6 , n 2 = 5 , n 3 = 5 , n 4 = 3 , n 5 = 0 , n 6 = 0 , n 7 = 0. n_0=6,n_1=6,n_2=5,n_3=5,n_4=3,n_5=0,n_6=0,n_7=0. n0=6,n1=6,n2=5,n3=5,

最低0.47元/天 解锁文章
186

被折叠的 条评论
为什么被折叠?



