图像增强,使用常见算法,比如gamma校正,直方图均衡化等。
下面一些代码仅供参考,使用包括图像锐化,提高图片清晰度,其实就是对比度增强。
# Gamma correction and the Power Law Transform,伽马校正也称幂律交换;使图像变得更亮或者更暗的方法;
# USAGE
# python adjust_gamma.py --image images/_L3A4387.jpg
# 导入必要的包
from __future__ import print_function
import numpy as np
import argparse
import cv2
import imutils
# 伽马校正
# --image 要对其应用伽玛校正的图像。
# --gamma (可选)伽玛值,默认1.0
def adjust_gamma(image, gamma=1.0):
# 建立查找表,将像素值[0,255]映射到调整后的伽玛值
# 遍历[0,255]范围内的所有像素值来构建查找表,然后再提高到反伽马的幂-然后将该值存储在表格中
invGamma = 1.0 / gamma
table = np.array([((i / 255.0) ** invGamma) * 255
for i in np.arange(0, 256)]).astype("uint8")
# 使用查找表应用伽玛校正
return cv2.LUT(image, table)
# 构建命令行参数及解析
# --image 图像路径
# ap = argparse.ArgumentParser()
# ap.add_argument("-i", "--image", required=True,
# help="path to input image")
# args = vars(ap.parse_args())
# 加载原始图像
# original = cv2.imread(args["image"])
filename = "dst0.jpg"
original = cv2.imread(filename)
# original = imutils.resize(original, width=300)
# 通过使用各种伽玛值并检查每个图像的输出图像来探索伽玛校正;
# 遍历各种不同的伽马值
for gamma in np.arange(0.0, 2, 0.5):
# 忽略伽马值为1的情况,因为跟原始图像没有任何差别
if gamma == 1:
continue
# 应用伽马校正并展示图像
gamma = gamma if gamma > 0 else 0.1
adjusted = adjust_gamma(original, gamma=gamma)
# cv2.putText(adjusted, "g={}".format(gamma), (10, 30),
# cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 3)
cv2.imshow("Images", np.hstack([original, adjusted]))
name = str(filename).replace(".jpg", "_" + str(gamma) + ".jpg")
cv2.imwrite(name, adjusted)
cv2.waitKey(0)