代码语言:javascript复制
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("C:/Users/xpp/Desktop/Lena.png")#读取图像
grayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
height, width=grayImage.shape[:2]
result=np.zeros((height,width),np.uint8)
#图像灰度上移变换
for i in range(height):
for j in range(width):
if int(grayImage[i,j] 50)>255:
gray=255
else:
gray=grayImage[i,j] 50
result[i,j]=np.uint8(gray)
cv2.imshow("original",grayImage)
cv2.imshow("result",result)
if cv2.waitKey()==27:
cv2.destroyAllWindows()
算法:图像灰度上移变换是将实现图像灰度值的上移,从而提升图像的亮度,由于图像灰度值位于0到255之间,因此对灰度值进行溢出判断。图像灰度线性变换是通过建立灰度映射来调整原始图像灰度,从而改善图像的质量,凸显图像细节,提高图像对比度。灰度线性变换公式如下:
DB=f(DA)=αDA b
其中,DB表示灰度线性变换后的灰度值,DA表示变换前输入图像的灰度值,α和b为线性变换方程f(D)的参数,分别表示斜率和截距。
- 当α=1,b=0时,保持原始图像
- 当α=1,b!=0时,图像所有的灰度值上移或下移
- 当α=-1,b=255时,原始图像的灰度值反转
- 当α>1时,输出图像的对比度增强
- 当0<α<1时,输出图像的对比度减小
- 当α<0时,原始图像暗区域变亮,亮区域变暗,图像求补
链接:https://github.com/eastmountyxz/ImageProcessing-Python