图像处理:基于直方图矫正的图像色彩均衡

2024-09-07 03:48

本文主要是介绍图像处理:基于直方图矫正的图像色彩均衡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

from itertools import chain
import cv2
import os
import numpy as np
import datetimeclass BrightnessBalance:def __init__(self):passdef arrayToHist(self,gray):'''计算灰度直方图,并归一化:param gray_path::return:'''w,h = gray.shapehist = list(chain.from_iterable(cv2.calcHist([gray],[0],None,[256],[0,256])))hist = np.array(hist)/(w*h)return histdef histMatch(self, gray1, gray2):'''gray2向gray1校准:param image_path1::param image_path2::return:'''if not os.path.exists(image1_path) or not os.path.exists(image2_path):print('image1_path or image2_path is not exist!')returngray2Array = np.array(gray2)hist1 = self.arrayToHist(gray1)hist2 = self.arrayToHist(gray2Array)tmp1 = 0.0tmp2 = 0.0h_acc1 = hist1.copy()h_acc2 = hist2.copy()for i in range(256):tmp1 += hist1[i]tmp2 += hist2[i]h_acc1[i] = tmp1h_acc2[i] = tmp2M = np.zeros(256)for i in range(256):idx = 0minv = 1for j in range(0,len(h_acc1)):if (np.fabs(h_acc1[j] - h_acc2[i]) < minv):minv = np.fabs(h_acc1[j] - h_acc2[i])idx = int(j)M[i] = idxresult = M[gray2Array]return resultdef colors_histMatch(self,image_path1,image_path2):if not os.path.exists(image1_path) or not os.path.exists(image2_path):print('image1_path or image2_path is not exist!')returnimg1 = cv2.imread(image1_path)img2 = cv2.imread(image2_path)result1_chaneel_b = self.histMatch(img1[:, :, 0], img2[:, :, 0])result1_chaneel_g = self.histMatch(img1[:, :, 1], img2[:, :, 1])result1_chaneel_r = self.histMatch(img1[:, :, 2], img2[:, :, 2])result = cv2.merge([result1_chaneel_b,result1_chaneel_g,result1_chaneel_r])return resultif __name__ == '__main__':image1_path = r"D:\CV_Data\n\current.jpg"image2_path = r"D:\CV_Data\n\history.jpg"starttime = datetime.datetime.now()BB = BrightnessBalance()img1 = cv2.imread(image1_path,0)img2 = cv2.imread(image2_path,0)histMatch = BB.histMatch(img1,img2)endtime = datetime.datetime.now()print(endtime - starttime)save_path = image2_path.replace('history.jpg', 'result1.jpg')cv2.imwrite(save_path, histMatch)

 

这篇关于图像处理:基于直方图矫正的图像色彩均衡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143971

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、