機器學習進階-直方圖與傅里葉變化-直方圖均衡化 1.cv2.equalizeHist(進行直方圖均衡化) 2. cv2.createCLAHA(用於生成自適應均衡化圖像)


1. cv2.equalizeHist(img)  # 表示進行直方圖均衡化

參數說明:img表示輸入的圖片

2.cv2.createCLAHA(clipLimit=8.0, titleGridSize=(8, 8))  用於生成自適應均衡化圖像

參數說明:clipLimit顏色對比度的閾值, titleGridSize進行像素均衡化的網格大小,即在多少網格下進行直方圖的均衡化操作

直方圖均衡化:一般可以用來提升圖片的亮度, 在上面一節中,我們可以看出在150-200之間所占的頻數特別的大,頻數均衡化指的是讓頻數的分布看起來更加均勻一些

主要實現的手段

上圖中的左邊的圖是原始數據, 右邊的圖是進行函數映射后的灰度值

首先對各個灰度值做頻數統計,計算其概率,根據像素的灰度值計算出累積概率,最后將累積概率 * (255-0) 做為函數映射后的灰度值,

這樣做的目的,可以使得灰度值之間的間隔更小,即一些頻數較大的灰度值補充給了頻數較小的灰度值,從而實現了灰度值的均衡化

代碼:

第一步:讀入圖片

第二步:使用cv2.equalizeHist(img)均衡化像素

第三步:使用plt.hist 畫出均衡化的直方圖

第四步:使用plt.imshow 畫出均衡化后的圖像

import cv2
import numpy as np
import matplotlib.pyplot as plt


# 第一步:讀入圖片
img = cv2.imread('cat.jpg', 0)

# 第二步: 使用cv2.equalizeHist實現像素點的均衡化
ret = cv2.equalizeHist(img)

# 第三步:使用plt.hist繪制像素直方圖
plt.subplot(121)
plt.hist(img.ravel(), 256)
plt.subplot(122)
plt.hist(ret.ravel(), 256)
plt.show()

# 第四步:使用cv2.imshow()繪值均衡化的圖像
cv2.imshow('ret', np.hstack((img, ret)))
cv2.waitKey(0)

 

這種全局的均衡化也會存在一些問題,由於整體亮度的提升,也會使得局部圖像的細節變得模糊,因為我們需要進行分塊的局部均衡化操作

代碼:

第一步:使用cv2.createCLAHE(clipLimit=2.0, titleGridSize=(8, 8)) 實例化均衡直方圖函數
第二步:使用.apply進行均衡化操作

第三步:進行畫圖操作

# 使用自適應直方圖均衡化
# 第一步:實例化自適應直方圖均衡化函數
clahe = cv2.createCLAHE(clipLimit=2.0,
                        tileGridSize=(8, 8))

# 第二步:進行自適應直方圖均衡化
clahe = clahe.apply(img)

# 第三步:進行圖像的展示
cv2.imshow('imgs', np.hstack((img, ret, clahe)))
cv2.waitKey(0)
cv2.destroyAllWindows()

可以看出自適應均衡化沒有使得人物臉部的細節消失

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 python庫skimage 圖像直方圖均衡化、自適應均衡化、對比度拉伸實現 自適應直方圖均衡化 AHE 機器學習進階-目標跟蹤-KCF目標跟蹤方法 1.cv2.multiTracker_create(構造選框集合) 2. cv2.TrackerKCF_create(獲得KCF追蹤器) 3. cv2.resize(變化圖像大小) 4.cv2.selectROI(在圖像上框出選框) 圖像增強 | CLAHE 限制對比度自適應直方圖均衡化 【圖像增強】CLAHE 限制對比度自適應直方圖均衡化 機器學習進階-背景建模-(幀差法與混合高斯模型) 1.cv2.VideoCapture(進行視頻讀取) 2.cv2.getStructureElement(構造形態學的卷積) 3.cv2.createBackgroundSubtractorMOG2(構造高斯混合模型) 4.cv2.morpholyEx(對圖像進行形態學的變化) 機器學習進階-目標追蹤-SSD多進程執行 1.cv2.dnn.readnetFromCaffe(用於讀取已經訓練好的caffe模型) 2.delib.correlation_tracker(生成追蹤器) 5.cv2.writer(將圖片寫入視頻中) 6.cv2.dnn.blobFromImage(圖片歸一化) 10.multiprocessing.process(生成進程) 機器學習進階-圖像基本操作-數值計算 1.cv2.add(將圖片進行加和) 2.cv2.resize(圖片的維度變換) 3.cv2.addWeighted(將圖片按照公式進行重疊操作) 機器學習進階-圖像特征sift-SIFT特征點 1.cv2.xfeatures2d.SIFT_create(實例化sift) 2. sift.detect(找出關鍵點) 3.cv2.drawKeypoints(畫出關鍵點) 4.sift.compute(根據關鍵點計算sift向量) 機器學習進階-圖像形態學變化-禮帽與黑帽 1.cv2.TOPHAT(禮帽-原始圖片-開運算后圖片) 2.cv2.BLACKHAT(黑帽 閉運算-原始圖片)
 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM