1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化

opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化

时间:2024-06-21 08:20:31

相关推荐

opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化

首先进行简单的灰度图像的全局均衡化和自适应均衡化

import cv2 as cvimport numpy as npimg = cv.imread('cun.jpg',0)# 全局直方图均衡化img1 = cv.equalizeHist(img)# 自适应直方图均衡化clahe = cv.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))cll = clahe.apply(img)res = np.hstack((img,img1,cll))cv.imwrite("res.jpg",res)

以下图像来自于网络:

接下来进行同一张照片彩色图像的直方图全局均衡化和自适应均衡化

算法的思想很简单:利用人眼对图像的强度信息更加敏感的特点,将RGB彩色图像先转换到YPbPr空间,然后只对亮度通道进行全局直方图均衡化和自适应直方图均衡化,最后再将亮度通道和PbPr通道合并形成彩色图像,然后再转换回RGB空间中。

import numpy as npimport cv2 as cv# 彩色图像全局直方图均衡化def hisEqulColor1(img):# 将RGB图像转换到YCrCb空间中ycrcb = cv.cvtColor(img, cv.COLOR_BGR2YCR_CB)# 将YCrCb图像通道分离channels = cv.split(ycrcb)# 对第1个通道即亮度通道进行全局直方图均衡化并保存cv.equalizeHist(channels[0],channels[0])# 将处理后的通道和没有处理的两个通道合并,命名为ycrcbcv.merge(channels,ycrcb)# 将YCrCb图像转换回RGB图像cv.cvtColor(ycrcb, cv.COLOR_YCR_CB2BGR, img)return img# 彩色图像进行自适应直方图均衡化,代码同上的地方不再添加注释def hisEqulColor2(img):ycrcb = cv.cvtColor(img, cv.COLOR_BGR2YCR_CB)channels = cv.split(ycrcb)# 以下代码详细注释见官网:# /4.1.0/d5/daf/tutorial_py_histogram_equalization.htmlclahe = cv.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))clahe.apply(channels[0],channels[0])cv.merge(channels,ycrcb)cv.cvtColor(ycrcb, cv.COLOR_YCR_CB2BGR, img)return imgimg = cv.imread('cun.jpg')img1 = img.copy()img2 = img.copy()res1 = hisEqulColor1(img1)res2 = hisEqulColor2(img2)res = np.hstack((img,res1,res2))cv.imwrite('res1.jpg',res)

以下图像来自于网络

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。