使用亮度增强、自适应直方图均衡化对图像进行增强

import os
import cv2
import numpy as np
import traceback
path = 'xxxxxx' #输入图像路径
save_path = 'xxxxxxxxxx' #保存图像路径
if not os.path.exists(save_path):
    os.makedirs(save_path)
def brightness_increase(input_img, a_limit=10, b_target=90):
     """
        亮度增强
        :param input_img: 输入图像
        :param a_limit: 判断限制图像亮暗度,小于此值则进行亮度调整
        :param b_target: 调整后的目标亮度值
        :return: 格式和输入相同
    """
    output_img = input_img
    try:
        if input_img is None:
            print('input_img is None !')
        elif a_limit < 0 or a_limit > 255:
            print('a_limit 必须在 0-255 之间')
        elif b_target < 0 or b_target > 255:
            print('b_target 必须在 0-255 之间')
        else:
            stdmean = np.mean(input_img)
            if stdmean <= a_limit:
                output_img = cv2.convertScaleAbs(input_img, alpha=a_limit / stdmean, beta=0).astype(np.uint8)
    except:
        print(traceback.print_exc())
    return output_img
def clahe_equalized(input_img, limit=2.0, size=(8, 8)):
    """
    自适应直方图均衡化
     :param input_img:
    :param limit:
    :param size:
    :return:
    """
    dst_img = input_img
    try:
        if input_img is not None:
            if input_img.shape[0] > 1:
                clahe = cv2.createCLAHE(clipLimit=limit, tileGridSize=size)
                dst_img = clahe.apply(input_img)
    except:
        print(traceback.print_exc())
    return dst_img
info_all = os.listdir(path)
for info in info_all:
    if info.endswith('.png') or info.endswith('.jpg'):
        img_data_01 = cv2.imread(os.path.join(path, info), 0)
        h = img_data_01.shape[0]
        w = img_data_01.shape[1]
        name, type_ = info.split('.')[0],  info.split('.')[1]
        img_data_01 = brightness_increase(img_data_01, a_limit=20, b_target=90)
        # 自适应直方图均衡化
        img_data_01 = clahe_equalized(img_data_01, limit=2.0, size=(8, 8))
        # 图像转为彩色图像
        img_data_01 = cv2.cvtColor(img_data_01, cv2.COLOR_GRAY2RGB)
        cv2.imwrite(os.path.join(save_path, info), img_data_01)

效果如下图所示:

猜你喜欢

转载自blog.csdn.net/qq_41980080/article/details/131372977