import cv2
import numpy as np
import matplotlib.pyplot as plt
def gamma_plot(c,v):
x=np.arange(0,256,0.01)
y=c*x**v
plt.plot(x,y,"r",linewidth=1)
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.title("伽玛变换函数")
plt.xlim([0,255])
plt.ylim([0,255])
plt.show()
#伽玛变换
def gamma(img,c,v):
lut=np.zeros(256,dtype=np.float32)
for i in range(256):
lut[i]=c*i**v
#灰度值的映射
output=cv2.LUT(img,lut)
output=np.uint8(output+0.5)
return output
img=cv2.imread("C:/Users/xpp/Desktop/Lena.png")
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
height,width=grayImage.shape[:2]
gamma_plot(0.0000005,4)
result=gamma(grayImage,0.0000005,4)
cv2.imshow("original",grayImage)
cv2.imshow("result",result)
if cv2.waitKey()==27:
cv2.destroyAllWindows()
算法:图像灰度伽玛变换,也称图像指数变换或图像幂次变换,另一种常用的灰度非线性变换。
s = cr^y
其中,r表示原始图像灰度级,s表示变化后灰度级,c和r表示正常数。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!