# -*- coding: utf-8 -*-
# @FileName: 2018基于直方图修改和饱和度调整的低对比度彩色图像自适应增强(会议)
# @Software: PyCharm
# @Author : Xu
# @Time :2021//08//13
import copy
import cv2
import numpy as np
'''
论文A部分,修改RGB直方图
'''
def get_MinAndMax(c_H, c_m):
'''
(公式3)计算当前通道的最小和最大索引
:param c_H: 公式(1)计算出的通道平均值
:param c_m: 原始通道的平均值
:return: i_min,i_max
'''
i_min = 0 + c_H - c_m
i_max = 255 + c_H - c_m
return i_min, i_max
def get_probabilitydensity(c_H, c_m, c):
'''
(公式2)计算各个通道的概率密度
:param c_H: 论文公式(1)获取的通道平均值
:param c_m: 原始的通道平均值
:param c: 当前通道
:return: pdf
'''
pdf = np.zeros(256)
pdf_i = {
}
for k in range(256):
pdf[k] = (np.sum(c == k) / (rows * cols))
pdf_i[int(k + c_H - c_m)] = pdf[k]
# print('原始的pdf[k]值为', pdf)
# print('直方图移动后的pdf_i值为', pdf_i)
return pdf_i
def get_P_low_And_P_high(c_H, i_min, i_max, pdf_j):
'''
论文公式(6)计算概率密度的最大值和最小值
:param c_H: 公式(1)获取的更新后的通道平均值
:param pdf_j: 公式(2)计算出的概率密度
:param i_min: 公式(2)计算出的最小灰度级
:param i_max: 公式(2)计算出的最大灰度级
:return: P_low和P_high
'''
# 计算移动直方图后,最小的概率密度
# size_l = int(c_H - i_min)
P_low = 0
w_j_low = {
}
for j in range(int(i_min), int(c_H)):
w_j_low[j] = abs(j - 127) / 255 + 0.7 # 公式(5)计算权重
P_low += (pdf_j[j] * (w_j_low[j]))
# 计算移动直方图后,最大的概率密度
# size_h = int(i_max - c_H + 1)
P_high = 0
w_j_high = {
}
for j in range(int(c_H), int(i_max) + 1):
w_j_high[j] = abs(j - 127) / 255 + 0.7 # 公式(5)计算权重
P_high += (pdf_j[j] * (w_j_high[j]))
return P_low, P_high
def get_f_c(c_H, i_min, i_max, pdf_j, P_low, P_high):
'''
论文公式(4)计算更新后的灰度级
:param c_H: 公式(1)获取的更新后的通道平均值
:param pdf_j: 公式(2)计算出的概率密度
:param i_min: 公式(2)计算出的最小灰度级
:param i_max: 公式(2)计算出的最大灰度级
:param P_low:最小的概率密度
:param P_high:最大的概率密度
:return:更新后的灰度级f_c
'''
f_c = {
}
w_j = {
}
for j in range(int(i_min), int(i_max) + 1):
if j < c_H:
w_j[j] = abs(j - 127)
基于直方图修改和饱和度调整的低对比度彩色图像自适应增强的python实现(会议)
最新推荐文章于 2023-05-02 09:43:53 发布
本文介绍了一种基于直方图修改和饱和度调整的方法,用于增强低对比度彩色图像。通过Python实现,该技术能有效提升图像的视觉效果,适用于会议中的图像处理讨论。
摘要由CSDN通过智能技术生成