opencv中有數百種關於在不同色彩空間之間轉換的方法。
三種常用色彩空間:灰度、bgr、hsv(hue色調,saturation飽和度,value亮度)
注:計算機遵從加色模型,而繪畫遵從減色模型。
傅利葉變換作用:可以用來區分影象裡哪些區域的訊號變化特別強,哪些不那麼強,
從而可以任意標記雜訊區域、感興趣區域、前景和背景。
幅度譜(magnitude spectrum):影象的幅度譜是另一種影象,幅度譜影象呈現了
原始影象在變化方面的一種表示:把一幅影象中最亮的畫素放中間,然後逐漸變暗,
在邊緣上的畫素最暗。這樣可以發現影象中有多少亮的畫素和暗的畫素,以及他們
分布的百分比。
知識準備:核是指一組權重的組合,它會應用的在源影象的乙個區域,並由此產生目標影象的乙個畫素。
比如:大小為7的核意味著每49(7*7)個源影象的畫素會產生目標影象的乙個畫素。
# 卷積運算
k3 =ndimage.convolve(img, kernel_3x3)
k5 =ndimage.convolve(img, kernel_5x5)
# 高斯模糊(一種低通濾波器)
blurred = cv2.gaussianblur(img, (17,17), 0)
g_hpf = img -blurred
cv2.imshow(
"3x3
", k3)
cv2.imshow(
"5x5
", k5)
cv2.imshow(
"g_hpf
", g_hpf)
cv2.waitkey()
cv2.destroyallwindows()
高通濾波器是根據畫素與鄰近畫素的亮度差值來提公升該畫素的亮度。
低通濾波器則是在畫素與周圍畫素的亮度差值小於乙個特定值時,平均該亮度的畫素。
它主要用於去噪和模糊化,比如說,高斯模糊是最常用的模糊濾波器(平滑濾波器)之一,
它是乙個削弱高頻訊號強度的低通濾波器。
opencv提供了許多邊緣檢測濾波函式,包括laplacian()、sobel()以及scharr()。這些
濾波函式都會將非邊緣區域轉換成黑色,將邊緣區域轉換成白色或者其它飽和的顏色。
但是,這些函式都很容易將雜訊錯誤地識別為邊緣。
緩解這個問題地辦法是在找到邊緣之前對影象進行模糊處理。
opencv提供了許多模糊濾波函式,包括blur()(簡單地算術平均)、medianblur()以及
gaussianblur()。邊緣檢測濾波函式和模糊濾波函式的引數有很多,但總會有個ksize引數,
它是乙個奇數,表示濾波核的寬和高(以畫素為單位)。
彩色影象的雜訊;使用laplacian()作為邊緣檢測函式,它會產生明顯的邊緣線條,灰度影象
更是如此。在使用medianblur()函式之後,將要使用laplacian()函式之前,需要將影象從bgr
色彩空間轉換為灰度色彩空間。
在得到laplacian()函式的結果之後,需要將其轉換成黑色邊緣和背景的影象。然後將其
歸一化(使它的畫素值在0到1),並乘以源影象以便能使邊緣變黑。
def strokeedges(src, dst, blurksize = 7, edgeksize = 5):if blurksize >=3:
blurredsrc =cv2.medianblur(src, blurksize)
graysrc =cv2.cvtcolor(blurredsrc, cv2.color_bgr2gray)
else
: graysrc =cv2.cvtcolor(src, cv2.color_bgr2gray)
cv2.laplacian(graysrc, cv2.cv_8u, graysrc, ksize =edgeksize)
normalizedinversealpha = (1.0/255)*(255-graysrc)
channels =cv2.split(src)
for channel in
channels:
channel[:] = channel*normalizedinversealpha
cv2.merge(channels, dst)
注:對於較大的ksize(包括7),使用medianblur()的代價很高。
opencv python學習筆記八
十 影象上的算術運算 常用運算有 加法 減法 位運算 cv2.add cv2.addweighted 函式原型 defadd src1,src2,dst none,mask none,dtype none defaddweighted src1,第乙個原陣列 alpha,第乙個原陣列的權值 src2...
opencv python學習筆記十一
14 幾何變換 移動,旋轉 仿射變換 常用函式 cv2.getperspectivetransform 函式原型 defgetperspectivetransform src,dst cv2.warpaffine 函式原型,接收 2 3的矩陣 defwarpaffine src,輸入源影象 m,透視...
OpenCV python學習筆記 二
不多說,上 全在裡面 coding utf 8 import numpy as np import cv2 目標 獲取畫素值並修改 獲取影象的資訊 影象的rio 圖象通道的拆分及合併 step1 獲取影象的資訊 讀取 讀入彩色圖和灰度圖 獲取資訊 影象的資訊包括 行 列 通道 影象資料型別 畫素數目...