现有一张64×64的图,以下表格是应用直方图均衡算法对其均衡,把原图的像素灰度值k(0~7)映射为新图的灰度值k'(0~7)。请填空。(注意:1-24空填实数,保留2位小数,剩下空填整数。不按要求系统会判错,如该填3.12而填成3.121是不给分的,1.00写成1也不给分。)
正确答案:
(1) 0.14
(2) 0.22
(3) 0.26
(4) 0.17
(5) 0.09
(6) 0.07
(7) 0.04
(8) 0.02
(9) 0.14
(10) 0.36
(11) 0.62
(12) 0.79
(13) 0.88
(14) 0.94
(15) 0.98
(16) 1.00
(17) 0.14
(18) 0.43
(19) 0.57
(20) 0.86
(21) 0.86
(22) 1.00
(23) 1.00
(24) 1.00
(25) 1
(26) 3
(27) 4
(28) 6
(29) 6
(30) 7
(31) 7
(32) 7
(33) 1
(34) 3
(35) 4
(36) 6
(37) 6
(38) 7
(39) 7
(40) 7
二. 简答题(共1题)
2. (简答题) 编写程序(函数),进行直方图均衡。要求从上题中的图的数据出发,打印出k、rk、nk、p (rk)、sk、量化sk、k'。并用代码绘制均衡前和均衡后的直方图进行对比。先把代码贴到答题框里,再把运行结果数据截图贴到框里,再把均衡前直方图贴进框里,最后把均衡后的直方图贴进框里。
from pandas import DataFrame
import matplotlib.pyplot as plt
data = {'k':[0,1,2,3,4,5,6,7],
'rk':[0,'1/7','2/7','3/7','4/7','5/7','6/7',1],
'nk':[560,920,1046,705,356,267,170,72],
'p (rk)':[0.14,0.22,0.26,0.17,0.09,0.07,0.04,0.02],
'sk':[0.14,0.36,0.61,0.79,0.88,0.94,0.98,1.00],
'量化sk':[0.14,0.43,0.57,0.86,0.86,1.00,1.00,1.00],
"k'":[1,3,4,6,6,7,7,7]}
d1=DataFrame(data)
print(d1)
before=d1[['rk','p (rk)']]
before.plot(kind='bar',x='rk', y='p (rk)', color='green')
plt.xlabel('rk')
plt.ylabel('p (rk)')
plt.xticks(rotation=45)
plt.title('before')
plt.show()
after= d1.groupby("k'")['p (rk)'].sum().reset_index()
after.plot(kind='bar',x="k'", y='p (rk)', color='green')
plt.xlabel("k'")
plt.ylabel('p (rk)')
plt.xticks(rotation=45)
plt.title('after')
plt.show()
正确答案: