对比度增强
在OpenCV
中找到3
种方式实现图像对比度增强
实现
import cv2
import time
def process_contrast(image):
return cv2.convertScaleAbs(image, alpha=1.0, beta=10)
def process_equalize_hist(image):
return cv2.equalizeHist(image)
def process_clahe(image):
clahe = cv2.createCLAHE(clipLimit=1.0, tileGridSize=(8, 8))
return clahe.apply(image)
if __name__ == '__main__':
image = cv2.imread('assets/contrast.jpeg', cv2.IMREAD_GRAYSCALE)
start = time.time()
img_bright = process_contrast(image)
end1 = time.time()
cv2.imwrite('outputs/contrast.jpg', img_bright)
img_bright = process_equalize_hist(image)
end2 = time.time()
cv2.imwrite('outputs/equalize_hist.jpg', img_bright)
img_bright = process_clahe(image)
end3 = time.time()
cv2.imwrite('outputs/clahe.jpg', img_bright)
print('process_contrast: {}'.format(end1 - start))
print('process_equalize_hist: {}'.format(end2 - end1))
print('process_clahe: {}'.format(end3 - end2))
测试时间如下:
process_contrast: 2.5033950805664062e-05
process_equalize_hist: 0.0005655288696289062
process_clahe: 0.0009024143218994141
绘图
def draw():
img1 = Image.open('outputs/contrast.jpeg').convert('L')
img2 = Image.open('outputs/contrast.jpg').convert('L')
img3 = Image.open('outputs/equalize_hist.jpg').convert('L')
img4 = Image.open('outputs/clahe.jpg').convert('L')
fig = plt.figure(figsize=(10, 10))
plt.subplot(221)
plt.imshow(img1, cmap='gray'), plt.axis('off')
plt.title('src')
plt.subplot(222)
plt.imshow(img2, cmap='gray'), plt.axis('off')
plt.title('convertScaleAbs')
plt.subplot(223)
plt.imshow(img3, cmap='gray'), plt.axis('off')
plt.title('equalizeHist')
plt.subplot(224)
plt.imshow(img4, cmap='gray'), plt.axis('off')
plt.title('createCLAHE')
plt.savefig('outputs/res.jpg', bbox_inches='tight')
plt.show()