python OpenCV之對比度增強

2021-08-31 09:32:09 字數 1935 閱讀 7954

對比度指的是一幅影象中明暗區域最亮的白和最暗的黑之間不同亮度層級的測量,差異範圍越大代表對比越大,差異範圍越小代表對比越小。對比度增強技術主要解決影象灰度級範圍較小造成的對比度低問題,目的是將影象的灰度級放大到指定的程度,使影象中的細節看起來更加清晰。

概念:灰度直方圖是影象灰度級的函式,用來描述每個灰度級在影象矩陣中的畫素個數或占有率。

import cv2 as cv

import matplotlib.pyplot as plt

import numpy as np

# 計算灰度直方圖

def calcgrayhist(image):

rows, cols = image.shape

grayhist = np.zeros([256], np.uint8)

for r in range(rows):

for c in range(cols):

grayhist[image[r][c]] += 1

return grayhist

if __name__ == "__main__":

# 讀入

# 計算灰度直方圖

grayhist = calcgrayhist(image)

# 設定x範圍

x_range = range(256)

# 繪製直方圖

plt.plot(x_range, grayhist, 'r', linewidth=2, c='black')

# 設定y的範圍

y_maxvalue = np.max(grayhist)

plt.axis([0, 255, 0, y_maxvalue])

# 設定座標軸標籤

plt.xlabel('gray level')

plt.ylabel('number of pixels')

# 顯示直方圖

plt.show()

解釋:假設輸入為i,寬為w,高為h,輸出影象記為o,影象的線性變換公式為

o(r,c) = a*i(r,c)+b,    0<=r

a為係數。a>1時,影象對比度被放大,00時亮度增強,b<0時對比度降低。

python實現過程

線性變換係數的選擇帶有一定的盲目性,如果可以自動確定a和b的值,那豈不妙哉。直方圖正規化就是我們所需要的這種方法。

解釋:

Python OpenCV之模板匹配

模板匹配 模板匹配和卷積原理很像,模板在原影象上從原點開始滑動,計算模板與當前圖形被模板覆蓋的地方的差別程度,然後將每次計算的結果放入乙個矩陣,作為結果輸出。假如原圖形是a b大小,而模板是a b大小,則輸出結果的矩陣是 a a 1 b b 1 用於搜尋的輸入影象 template 用於匹配的模板 ...

python OpenCV之numpy陣列操作

1.的表示與儲存 以矩陣的形式存在電腦裡,需要用到陣列操作來完成對影象的處理。np.ones size 可以建立任意維度的陣列,各個元素值均為1 23 np.zeros size,dtype 同上,但各個元素值為0.預設元素型別為浮點數使用示例 img np.zeros 256 256,3 np.u...

python opencv之 Hough圓變換

內容來自opencv python tutorials 自己翻譯整理 目標 使用霍夫變換在影象中尋找圓 使用函式cv2.houghcircles 原理 圓形的表示式為 x xcenter 2 y ycenter 2 r2 x xcenter 2 y ycenter 2 r2,乙個圓環的確定需要三個引...