国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第五章 圖像處理

這篇具有很好參考價(jià)值的文章主要介紹了第五章 圖像處理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

本章講講解圖像處理相關(guān)內(nèi)容,包括圖像金字塔、圖像輪廓模板提取、直方圖、圖像傅里葉變換等。

一、圖像金字塔

  • 含義: 圖像金字塔是一種用于圖像處理和計(jì)算機(jī)視覺的技術(shù)。它是一系列圖像的集合,其中每個(gè)圖像比前一個(gè)圖像分辨率更低, 從而形成一種金字塔形的結(jié)構(gòu)。這些圖像可以由同一圖像的不同分辨率版本生成,也可以是不同圖像之間的掃描和縮小。
  • 作用: 在圖像增強(qiáng)中,可以將圖像分解為一系列不同分辨率的圖像,然后對(duì)每個(gè)分辨率級(jí)別的圖像進(jìn)行處理,最終將它們合成為一張?jiān)鰪?qiáng)后的圖像。在圖像檢測(cè)中,可以使用金字塔技術(shù)進(jìn)行對(duì)象的尺度不變性檢測(cè)。在目標(biāo)跟蹤中,可以在不同的尺度上搜索目標(biāo)。
    第五章 圖像處理

1.高斯金字塔

  • 向下采樣(縮小 圖片):
    1. 首先進(jìn)行高斯濾波
    2. 去除偶數(shù)的行、列
  • 向上采樣(放大圖片):
    1. 用零填充偶數(shù)行、列
      [ 10 30 56 96 ] ? [ 10 0 30 0 0 0 0 0 56 0 96 0 0 0 0 0 ] \begin{bmatrix} 10& 30\\ 56&96\end{bmatrix}\Rightarrow \begin{bmatrix} 10 & 0 & 30 & 0\\ 0& 0 & 0 & 0\\ 56& 0& 96 &0 \\ 0& 0& 0&0\end{bmatrix} [1056?3096?]? ?100560?0000?300960?0000? ?
    2. 對(duì)放大的圖片進(jìn)行高斯卷積,從而可對(duì)零值進(jìn)行填充
# 向上采樣
cv2.pyrUp(src[, dst[, dstsize[, borderType]]]) -> dst
# 向下采樣
cv2.pyrDown(src[, dst[, dstsize[, borderType]]]) -> dst

2.拉普拉斯金字塔

I i + 1 = I i ? P y r U p ( p y r D o w n ( I i ) ) I_{i+1} = I_i - PyrUp(pyrDown(I_i)) Ii+1?=Ii??PyrUp(pyrDown(Ii?))
執(zhí)行上面的公式,就能得到每一層的圖像。

拉普拉斯金字塔和高斯金字塔是圖像金字塔的兩個(gè)重要概念,它們之間有以下不同點(diǎn):

  1. 算法步驟不同:高斯金字塔是由原始圖像不斷進(jìn)行下采樣(降分辨率)和高斯濾波得到的,每次下采樣都將圖像的尺寸減半。而拉普拉斯金字塔則是由高斯金字塔依次上采樣(放大)和減去對(duì)應(yīng)的低分辨率圖像得到的。

  2. 不同的金字塔目的:高斯金字塔主要用于圖像降采樣(縮小)和尺度空間分析,可以用于圖像的尺度不變性特征描述,如SIFT、SURF算法等。拉普拉斯金字塔則主要用于對(duì)圖像進(jìn)行增強(qiáng)、邊緣檢測(cè)和圖像融合等操作。

  3. 金字塔層數(shù)和大?。焊咚菇鹱炙膶訑?shù)與原始圖像的大小有關(guān),尺寸越大,高斯金字塔的層數(shù)也就越多。而拉普拉斯金字塔通常與高斯金字塔大小相同,因?yàn)樗怯筛咚菇鹱炙玫降摹?/p>

  4. 局部特征信息:盡管可逆性和單尺度不變性有用,但僅僅用于描述局部特征時(shí)可能不夠準(zhǔn)確。因此,拉普拉斯金字塔通常能夠提供比高斯金字塔更豐富的局部特征信息。

因此,根據(jù)不同的應(yīng)用場(chǎng)景,可以選擇高斯金字塔或拉普拉斯金字塔等適合的金字塔結(jié)構(gòu)來處理圖像。

二、圖像輪廓

1. 輪廓提取

contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

其中:

  • image:輸入的圖像,應(yīng)該是二值圖像,每個(gè)像素的值要么為0,要么為255,表示前景和背景兩種顏色。
  • mode:輪廓檢索模式,是一個(gè)枚舉值,取值范圍包括:
    • cv2.RETR_EXTERNAL:只檢測(cè)最外層的輪廓,即只返回邊緣輪廓;
    • cv2.RETR_LIST:檢測(cè)所有的輪廓,并返回其完整的列表;
    • cv2.RETR_CCOMP:檢測(cè)所有的輪廓,但只返回兩級(jí)輪廓結(jié)構(gòu),即外層輪廓和內(nèi)層輪廓;
    • cv2.RETR_TREE:檢測(cè)所有的輪廓,并返回完整的輪廓樹結(jié)構(gòu)。
  • method:輪廓近似方法,是一個(gè)枚舉值,取值范圍包括:
    • cv2.CHAIN_APPROX_NONE:存儲(chǔ)所有的輪廓點(diǎn),每個(gè)點(diǎn)的坐標(biāo)(x,y)都存儲(chǔ);
    • cv2.CHAIN_APPROX_SIMPLE:僅保留輪廓的端點(diǎn),只需存儲(chǔ)它們的坐標(biāo)即可,例如矩形輪廓僅需要4個(gè)點(diǎn)的坐標(biāo)即可。
  • contours:輸出參數(shù),返回檢測(cè)到的輪廓,每個(gè)輪廓是一個(gè)由像素坐標(biāo)表示的Numpy數(shù)組。
  • hierarchy:輸出參數(shù),返回輪廓的層級(jí)關(guān)系,每個(gè)輪廓由4個(gè)值(父級(jí)輪廓編號(hào),下一級(jí)輪廓編號(hào),第一個(gè)子級(jí)輪廓編號(hào),前一個(gè)兄弟輪廓編號(hào))表示。
    hierarchy的理解

2. 輪廓繪制

cv2.drawContours()是OpenCV提供的一個(gè)函數(shù),能夠在圖像中繪制輪廓。

該函數(shù)的語(yǔ)法如下:

cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)

參數(shù)解釋如下:

  • image: 要繪制輪廓的圖像。
  • contours: 一個(gè)由輪廓點(diǎn)集組成的列表,可以通過cv2.findContours()函數(shù)獲取。該參數(shù)可以是一個(gè)單獨(dú)的輪廓(Point集合),也可以是多個(gè)輪廓的列表。
  • contourIdx: 指定要繪制的輪廓的編號(hào)。如果是負(fù)數(shù),則表示要繪制所有的輪廓。
  • color: 輪廓顏色,可以是RGB元組或BGR元組。
  • thickness: 輪廓線條粗細(xì),默認(rèn)值為1.
  • lineType: 線條類型,默認(rèn)值為8-connectivity(即cv2.LINE_8),也可以設(shè)置為4-connectivity(即cv2.LINE_4)或CV_AA。
  • hierarchy: 輪廓層級(jí)信息,可選參數(shù)。
  • maxLevel: 可以繪制的輪廓的最大級(jí)別,可選參數(shù)。
  • offset: 輪廓計(jì)算的偏移量,可選參數(shù)。

3. 輪廓特征

在OpenCV中,對(duì)于圖像中的輪廓,有許多特征可以用來描述和分析這些輪廓。下面列出了一些主要的輪廓特征:

  1. 輪廓面積:輪廓曲線所包含的面積大小,可以用cv2.contourArea()函數(shù)計(jì)算。

  2. 輪廓周長(zhǎng):輪廓曲線的長(zhǎng)度,可以用cv2.arcLength()函數(shù)計(jì)算。

  3. 輪廓近似:通過降低輪廓點(diǎn)數(shù)目來近似表示輪廓形狀,可以用cv2.approxPolyDP()函數(shù)進(jìn)行處理。

  4. 輪廓重心:輪廓曲線所包含區(qū)域的質(zhì)心點(diǎn)坐標(biāo),可以用cv2.moments()函數(shù)計(jì)算。

  5. 輪廓方向:輪廓曲線的方向,可以用cv2.fitEllipse()cv2.minAreaRect()函數(shù)分別擬合橢圓或矩形來計(jì)算。

  6. 輪廓凸包:包含輪廓曲線所有點(diǎn)的凸邊形,可以用cv2.convexHull()函數(shù)計(jì)算。

  7. 輪廓缺陷:凸包與輪廓曲線之間的差距,可以用cv2.convexityDefects()函數(shù)計(jì)算。

這些輪廓特征可以結(jié)合使用,用來分析圖像中的輪廓形狀和特征。在實(shí)際應(yīng)用中,輪廓特征常常被用來進(jìn)行目標(biāo)檢測(cè)、圖像分類和圖像識(shí)別等任務(wù)。

4. 輪廓近似

  • 原理: 第五章 圖像處理
    首先連接A、B兩點(diǎn),然后在弧線AB上找一點(diǎn),使得該點(diǎn)到直線AB上的距離最大,記該點(diǎn)為C,該距離為d,若d小于指定的數(shù)值,則用直線AB代替弧線AB,否則則以C為中間點(diǎn),再分別判斷弧線AC與弧線CB的近似。

在OpenCV中,cv2.approxPolyDP()函數(shù)可以對(duì)輪廓進(jìn)行近似處理,以減少輪廓點(diǎn)的數(shù)量,簡(jiǎn)化輪廓曲線,從而提高圖像處理的效率。該函數(shù)的語(yǔ)法如下:

cv2.approxPolyDP(curve, epsilon, closed[, approxCurve])

參數(shù)解釋如下:

  • curve: 輸入的輪廓,一般是一個(gè)由點(diǎn)組成的列表或Numpy數(shù)組。
  • epsilon: 指定近似程度,即對(duì)輪廓的最大誤差。如果指定的距離小于epsilon,那么就會(huì)被認(rèn)為是同一曲線上的點(diǎn)。
  • closed: 指定是否是閉合曲線,如果為True,表示曲線是閉合的,否則為打開的曲線。
  • approxCurve: 輸出的近似輪廓,可以是numpy數(shù)組或空對(duì)象。如果不指定輸出數(shù)組,則函數(shù)會(huì)返回近似輪廓的坐標(biāo)點(diǎn)數(shù)組。

該函數(shù)的返回值表示的是近似輪廓的坐標(biāo)點(diǎn),可以通過對(duì)輸出數(shù)組的大小來確定近似后曲線上的點(diǎn)的數(shù)量。epsilon的值受影響因素較多,需要根據(jù)具體情況進(jìn)行設(shè)定。

近似處理的效果往往受到調(diào)節(jié)參數(shù)的影響,如果epsilon設(shè)置得過小,處理得過度,則可能會(huì)丟失重要的輪廓信息;如果epsilon設(shè)置得過大,則可能會(huì)保留過多的輪廓信息,增加了計(jì)算量,并且可能導(dǎo)致輪廓的誤檢和漏檢等問題。因此,在進(jìn)行輪廓近似時(shí),需要根據(jù)具體情況進(jìn)行參數(shù)的調(diào)適,以達(dá)到最佳的處理效果。

5. 輪廓標(biāo)記

  • 作用: 用一個(gè)形狀(矩形、圓圈等)將輪廓標(biāo)記出來。
# 背景畫布
canvabg = img.copy()
# 獲取輪廓
cnt0 = contours[0]
# 矩形邊框
startx,starty,width,height = cv2.boundingRect(cnt0)
cv2.rectangle(canvabg,(startx,starty),(startx + width,starty + height),(0,255,0),2)
# 獲取輪廓
cnt1 = contours[2]
# 圓圈外框
(cx,cy),radius = cv2.minEnclosingCircle(cnt1)
cv2.circle(canvabg,(int(cx),int(cy)),int(radius),(255,0,0),2)

第五章 圖像處理

三、模板匹配

  • 思路: 將模板圖片當(dāng)作卷積核與被匹配的圖像進(jìn)行卷積操作,然后根據(jù)具體匹配算法計(jì)算出每一步卷積操作的置信度,根據(jù)置信度來確定模板圖像在被匹配圖像中的位置。

在OpenCV中,使用cv2.matchTemplate()函數(shù)可以實(shí)現(xiàn)圖像匹配的功能。圖像匹配是指在一幅圖片中查找某個(gè)感興趣區(qū)域(通常是一個(gè)模板圖像)在該圖像中的位置和數(shù)量。

cv2.matchTemplate()函數(shù)的語(yǔ)法如下:

cv2.matchTemplate(image, templ, method[, result[, mask]]) → result

參數(shù)解釋如下:

  • image: 輸入圖像,應(yīng)該是8位或32位浮點(diǎn)型的灰度圖像。
  • templ: 模板圖像,在輸入圖像中查找的圖像區(qū)域。與輸入圖像具有相同的數(shù)據(jù)類型和通道數(shù)。
  • method:
    • 平方差匹配(cv2.TM_SQDIFF):此匹配方法會(huì)依次比較輸入圖像和模板圖像中像素點(diǎn)的差值平方,并返回差值的總和。匹配結(jié)果越小,匹配度越高。

    • 歸一化平方差匹配(cv2.TM_SQDIFF_NORMED):此匹配方法與平方差匹配方法類似,但會(huì)將匹配結(jié)果歸一化,即匹配結(jié)果越小,匹配度越高。

    • 相關(guān)匹配(cv2.TM_CCORR):此匹配方法將輸入圖像和模板圖像進(jìn)行互相關(guān)運(yùn)算,并返回相關(guān)系數(shù)的最大值。匹配結(jié)果越大,匹配度越高。

    • 歸一化相關(guān)匹配(cv2.TM_CCORR_NORMED):此匹配方法與相關(guān)匹配方法類似,但會(huì)將匹配結(jié)果歸一化,即匹配結(jié)果越大,匹配度越高。

    • 系數(shù)匹配(cv2.TM_CCOEFF):此匹配方法會(huì)計(jì)算輸入圖像和模板圖像之間的相關(guān)系數(shù),然后從相關(guān)系數(shù)圖像中找到最大值。匹配結(jié)果越大,匹配度越高。

    • 歸一化系數(shù)匹配(cv2.TM_CCOEFF NORMED):計(jì)算歸一化相關(guān)系數(shù),計(jì)算出來的值越接近1,越相關(guān)。

  • result: 匹配結(jié)果,一般不需要指定該參數(shù),函數(shù)會(huì)自動(dòng)創(chuàng)建。其大小為輸入圖像大小減去模板圖像大小加1,是一個(gè)二維數(shù)組。
  • mask: 遮罩,如果指定,則只在遮罩區(qū)域內(nèi)進(jìn)行模板匹配。
import numpy as np
import cv2
import matplotlib.pyplot as plt


img = cv2.imread("F:/MyOpenCV/ai.jpg")
imgTmp = cv2.imread("F:/MyOpenCV/aitemp.jpg")

result = cv2.matchTemplate(img, imgTmp, cv2.TM_SQDIFF_NORMED)
minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result)
x, y = minLoc
h, w, t = imgTmp.shape
cv2.rectangle(img, minLoc, (x + w, y + h), (255, 0, 0), 2)

cv2.imshow("img", img)
cv2.imshow("imgsim", imgTmp)
cv2.waitKey(0)
cv2.destroyAllWindows()

第五章 圖像處理

四、直方圖

1. 對(duì)比度

  • 定義: 對(duì)比度是指圖像中最亮和最暗區(qū)域之間的差異度量,即白和黑之間的差異程度。在數(shù)字圖像處理中,對(duì)比度可用于調(diào)整圖像的明暗程度,通常是通過調(diào)整圖像中像素的亮度和顏色值來實(shí)現(xiàn)。較高的對(duì)比度可以使圖像更加清晰明亮,而較低的對(duì)比度則會(huì)使圖像顯得柔和、模糊或無法分辨。

2. 繪制直方圖

第五章 圖像處理
直方圖的橫坐標(biāo)為像素通道值的取值范圍,縱坐標(biāo)為數(shù)值出現(xiàn)的次數(shù)。

cv2.calcHist() 可以用于計(jì)算灰度圖像的直方圖,也可以用于計(jì)算彩色圖像的直方圖。

cv2.calcHist() 的語(yǔ)法如下:

hist = cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])

參數(shù)說明如下:

  • images: 輸入的圖像,以 numpy 數(shù)組的形式提供。如果要計(jì)算灰度圖像的直方圖,則 images 的維度應(yīng)該是二維的,而對(duì)于彩色圖像,則應(yīng)該是三維的,其中第三維表示圖像的顏色通道。傳遞給函數(shù)的圖像應(yīng)該是一個(gè)列表,即使你只使用單個(gè)圖像,也要將圖像包裝在列表中。
  • channels: 要統(tǒng)計(jì)的顏色通道的索引列表。對(duì)于灰度圖像,此參數(shù)應(yīng)該為 [0],對(duì)于彩色圖像,則通常是 [0, 1, 2] 表示三個(gè)顏色通道。
  • mask: 可選的掩碼圖像,用于指定參與直方圖計(jì)算的像素位置。只有在掩碼圖像中對(duì)應(yīng)位置像素值為非零值時(shí),才會(huì)將該位置的像素納入直方圖計(jì)算。
  • histSize: 直方圖的bin數(shù)量,也就是區(qū)間數(shù)量。該參數(shù)應(yīng)該為一個(gè)列表,每個(gè)元素表示一個(gè)通道的bin數(shù)量。
  • ranges: 直方圖的像素值范圍,也就是區(qū)間范圍。該參數(shù)應(yīng)該為一個(gè)列表,每個(gè)元素表示一個(gè)通道的像素值范圍。
  • hist: 可選的輸出直方圖數(shù)組對(duì)象。
  • accumulate: 可選的累加標(biāo)志。

cv2.calcHist() 的返回值是一個(gè)numpy數(shù)組,表示所計(jì)算的直方圖。對(duì)于灰度圖像,返回的是一維數(shù)組;對(duì)于彩色圖像,返回的是一個(gè)三維數(shù)組,其中每個(gè)維度分別表示BGR三個(gè)通道的直方圖。

img = cv2.imread("F:/MyOpenCV/hello.jpg")
b, g, r = cv2.split(img)
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

histGray = cv2.calcHist([imgGray], [0], None, [256], [0, 256])

# 繪制直方圖
plt.plot(histGray)
plt.xlim([0, 256])
plt.xlabel("灰度值")
plt.ylabel("像素?cái)?shù)量")
plt.show()

第五章 圖像處理

注:也可以使用matplotlib的方法,plt.hist(data, histSize)其中data為直方圖的一維數(shù)組,因此圖像數(shù)據(jù)調(diào)用ravel函數(shù)。

3. 均衡化

3.1 理論

  • 目的: 將原圖像通過變換,得到一幅灰度直方圖的灰度值均勻分布的新圖像。對(duì)在圖像中像素個(gè)數(shù)多的灰度級(jí)進(jìn)行展寬,而對(duì)像素個(gè)數(shù)少的灰度級(jí)進(jìn)行縮減。從而達(dá)到清晰圖像的目的。最理想的情況就是變換后,像素灰度概率完全一樣的,但是實(shí)際上做不到那么平均。
    第五章 圖像處理

3.2 代碼

cv2.equalizeHist(src:image[, dst]) -> dst:image

第五章 圖像處理

4. CLAHE

  • 直方圖均衡化問題:

    • 全局效果,導(dǎo)致原來比較亮的地方變得更亮 原來暗的地方變得更暗 從而會(huì)導(dǎo)致細(xì)節(jié)的丟失。
    • 可能導(dǎo)致噪點(diǎn)的放大。
  • 思路: 將圖片進(jìn)行拆分,然后分別對(duì)每個(gè)部分進(jìn)行均衡化處理,且對(duì)每個(gè)部分的直方圖概率分布做限制。

  • 算法實(shí)現(xiàn):

    1. 圖像分塊
    2. 找每個(gè)塊的中心點(diǎn)
    3. 分別計(jì)算每個(gè)塊的灰度直方圖,并進(jìn)行閾值限制
    4. 得到每個(gè)塊的直方圖分布后,根據(jù)直方圖均衡化算法對(duì)每個(gè)塊的中心點(diǎn)進(jìn)行均衡化處理。只對(duì)中心點(diǎn)進(jìn)行均衡化是為了加快計(jì)算速度。
    5. 根據(jù)中心點(diǎn)均衡化后的灰度值,利用差值算法計(jì)算圖像塊剩余像素的灰度值。
  • 代碼:

    # 生成自適應(yīng)均衡化算法 
    # clipLimit :閾值,1 表示不做限制。值越大,對(duì)比度越大
    # tileGridSize:如何拆分圖像
    clahe = cv2.createCLAHE([, clipLimit[, tileGridSize]]) -> retval
    # 對(duì)像素通道進(jìn)行自適應(yīng)均值化處理
    dst = clahe.apply(src)
    
    

    cv2.createCLAHE 函數(shù)可接受三個(gè)參數(shù),分別是 clipLimit、tileGridSize 和 tileGridSizeX(取代 tileGridSize),其中:

    • clipLimit:保持對(duì)比度等級(jí)的限制值,這個(gè)值越小,保持的對(duì)比度等級(jí)越高;
    • tileGridSize:將圖像分成的矩形塊的大小,以像素為單位。該參數(shù)應(yīng)該是奇數(shù)。若在 tileGridSizeX 參數(shù)中指定,那么就不需要輸入該參數(shù)。
    • tileGridSizeX:同 tileGridSize,用于指定矩形塊的大小。

五、圖像傅里葉變換

  • 擴(kuò)展閱讀
    • 傅里葉變換
    • 二維傅里葉變換
    • 圖像傅里葉

5.1 正弦平面波

第五章 圖像處理

  • 直觀定義: 將一維正弦曲線朝著縱向的一個(gè)方向上將其拉伸得到一個(gè)三維的波形,然后將波形的幅值變化用二維平面進(jìn)行表示,再將二維平面波繪制成灰度圖,從而波峰為255白色 波谷為0黑色,中間是一個(gè)灰度的過渡。
  • 數(shù)學(xué)參數(shù):
    • 正弦波:頻率w, 幅值A(chǔ),相位 φ \varphi φ
    • 拉伸方向:在二維坐標(biāo)中,向量可以寫為 n → = ( μ , v ) \overrightarrow{n} = (\mu, v) n =(μ,v)

5.2 二維傅里葉變換

  • 思想: 二維傅里葉變換中,認(rèn)為二維數(shù)據(jù)是由無數(shù)個(gè)正弦平面波所構(gòu)成。
    第五章 圖像處理
  • 離散傅里葉變換公式:
    F ( u , v ) = 1 M N ∑ x = 0 M ? 1 ∑ y = 0 N ? 1 f ( x , y ) e ? i 2 π ( u x M + v y N ) F(u,v) = \frac{1}{MN}\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)e^{-i2\pi(\frac{ux}{M}+\frac{vy}{N})} F(u,v)=MN1?x=0M?1?y=0N?1?f(x,y)e?i2π(Mux?+Nvy?)
  • 參數(shù)的解釋:
    第五章 圖像處理

5.3 二維傅里葉變換結(jié)果 F ( u , v ) F(u, v) F(u,v)

  • (u, v)拉伸方向的向量
  • w = u 2 + v 2 w = \sqrt{u^2 + v^2} w=u2+v2 ? 向量的模表示正弦波的頻率
  • F(u, v):復(fù)數(shù), 隱含了正弦波的幅值A(chǔ)和相位 φ \varphi φ。詳細(xì)的還是看上面的擴(kuò)展閱讀吧。

5.4 傅里葉變換的實(shí)現(xiàn)

OpenCV提供了dft(src:np.float[, dst[, flags[, nonzeroRows]]]) -> dst來進(jìn)行傅里葉變換,參數(shù)含義如下:

  • src:輸入的單通道圖像,必須為浮點(diǎn)型
  • dst:輸出的復(fù)數(shù)形式的結(jié)果,大小與src一致
  • flags:變換操作的附加選項(xiàng),通??梢栽O(shè)置為cv2.DFT_COMPLEX_OUTPUT表示輸出為復(fù)數(shù)
  • nonzeroRows:當(dāng)輸入圖像的尺寸不是2的冪次方時(shí),必須手動(dòng)指定變換中心(如果輸入圖像大小為偶數(shù),則默認(rèn)中心為圖像的中心,否則中心為左上角)
  • n:可選參數(shù),指定變換的大小,通常為src的尺寸
  • 返回值是是雙通道,第一個(gè)通道是實(shí)部,第二個(gè)通道是虛部

第五章 圖像處理

注:由于離散傅里葉變換具有共軛對(duì)稱性 因此只有四分之一是有效的其他是翻轉(zhuǎn)的。
第五章 圖像處理

  • 頻譜圖中心化:
    方便用于濾波操作。
    # 頻譜中心化
    shiftA = np.fft.fftshift(A)
    

第五章 圖像處理

5.5 傅里葉濾波

  • 思路:
    1. 對(duì)圖像灰度進(jìn)行傅里葉變換,得到頻域結(jié)果
    2. 將要?jiǎng)h除的頻率所對(duì)應(yīng)的傅里葉變換結(jié)果全部置為0+i0
    3. 對(duì)修改后的傅里葉變換結(jié)果進(jìn)行傅里葉反變換

5.5.1 低通濾波

將低頻部分的結(jié)果全部置為零

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


img = cv2.imread("F:/MyOpenCV/ai.jpg")
yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
yfloat = np.float32(yuv[:, :, 0])  # 其實(shí)就是取了灰度圖

dft = cv2.dft(yfloat, flags=cv2.DFT_COMPLEX_OUTPUT)  # 生成頻譜圖
dftShift = np.fft.fftshift(dft)  # 中心化

centerRow = int(dftShift.shape[0] / 2)  # 寬的中心
centerCol = int(dftShift.shape[1] / 2)  # 列的中心

mask = np.zeros(dftShift.shape, dtype=np.uint8)  # 構(gòu)造一個(gè)掩膜
mask[centerRow - 30 : centerRow + 30, centerCol - 30 : centerCol + 30, :] = 1
dftShift = dftShift * mask  # 按位乘

dft = np.fft.ifftshift(dftShift)  # 先反中心化
idft = cv2.idft(dft)  # 再反傅里葉

iyDft = cv2.magnitude(idft[:, :, 0], idft[:, :, 1])  # 轉(zhuǎn)為實(shí)數(shù)
iy = np.uint8(iyDft / iyDft.max() * 255)  # 映射

yuv[:, :, 0] = iy
imgRes = cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR)


cv2.imshow("imgRes", imgRes)


cv2.waitKey(0)
cv2.destroyAllWindows()

第五章 圖像處理

5.5.2 高通濾波

類似于低通 改一下掩膜就行 效果如下(有點(diǎn)恐怖 下次還是使用灰度圖吧)
第五章 圖像處理

總結(jié)

最近在忙實(shí)驗(yàn)室的項(xiàng)目,本篇搞的有點(diǎn)慢,這兩天把它弄完。文章來源地址http://www.zghlxwxcb.cn/news/detail-453981.html

到了這里,關(guān)于第五章 圖像處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • (數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第四、五節(jié):基于模糊技術(shù)和基于偽彩色處理的圖像增強(qiáng)

    (數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第四、五節(jié):基于模糊技術(shù)和基于偽彩色處理的圖像增強(qiáng)

    圖像的模糊特征平面 :假設(shè)原始圖像為 I ( x , y ) I(x,y) I ( x , y ) ,其中 x x x 和 y y y 分別表示圖像的水平和垂直方向的坐標(biāo)。模糊特征平面可以表示為 B ( x , y , θ ) B(x,y,theta) B ( x , y , θ ) ,其中 θ theta θ 是一個(gè)旋轉(zhuǎn)角度參數(shù),表示模糊核函數(shù)的旋轉(zhuǎn)角度。 B ( x , y , θ ) B(x,

    2023年04月20日
    瀏覽(101)
  • (數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

    (數(shù)字圖像處理MATLAB+Python)第五章圖像增強(qiáng)-第二節(jié):基于直方圖修正的圖像增強(qiáng)

    基于直方圖修正的圖像增強(qiáng) :是一種常見的圖像處理方法。該方法通過對(duì)圖像的像素值分布進(jìn)行調(diào)整,以改善圖像的對(duì)比度和亮度等視覺效果。具體地,直方圖校正方法將圖像的像素值轉(zhuǎn)換為一個(gè)新的值域范圍,使得像素值的分布更加均勻,從而增強(qiáng)圖像的細(xì)節(jié)和對(duì)比度。這

    2023年04月19日
    瀏覽(116)
  • 《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    本書京東優(yōu)惠購(gòu)書鏈接:https://item.jd.com/14098452.html 寫作背景 編寫本書的初衷,源自作者學(xué)習(xí)數(shù)字圖像處理的經(jīng)歷。 在創(chuàng)新實(shí)驗(yàn)班開設(shè)的專業(yè)創(chuàng)新教育課程中,我選擇的是數(shù)字圖像處理方向。老師向我推薦的教材是岡薩雷斯的《數(shù)字圖像處理》。學(xué)習(xí)的開始階段非常困難。教

    2024年02月11日
    瀏覽(161)
  • (數(shù)字圖像處理MATLAB+Python)第八章圖像復(fù)原-第五、六節(jié):盲去卷積復(fù)原和幾何失真校正

    (數(shù)字圖像處理MATLAB+Python)第八章圖像復(fù)原-第五、六節(jié):盲去卷積復(fù)原和幾何失真校正

    盲去卷積復(fù)原 :當(dāng)我們考慮圖像復(fù)原中的盲去卷積復(fù)原時(shí),我們可以使用以下數(shù)學(xué)符號(hào)和方程來描述該問題 原始圖像 :我們用I表示原始圖像,其中I是一個(gè)二維離散函數(shù)。 I ( x , y ) I(x, y) I ( x , y ) 表示在坐標(biāo) ( x , y ) (x, y) ( x , y ) 處的圖像強(qiáng)度值 模糊核 :我們用 H H H 表示未

    2024年02月04日
    瀏覽(23)
  • (數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述

    (數(shù)字圖像處理MATLAB+Python)第十一章圖像描述與分析-第五、六節(jié):邊界描述和矩描述

    A:概述 邊界鏈碼 :是一種用于圖像處理和計(jì)算機(jī)視覺領(lǐng)域的技術(shù),主要用于 描述二進(jìn)制圖像中物體的輪 廓。邊界鏈碼通過將輪廓轉(zhuǎn)化為一系列有序的連續(xù)像素點(diǎn)來表示。邊界鏈碼的基本思想是 從圖像中選擇一個(gè)起始點(diǎn),然后按照一定的順序遍歷相鄰像素,將它們連接起來

    2024年02月10日
    瀏覽(94)
  • 第五章 圖像復(fù)原與重建

    退化圖像: g ( x , y ) = h ( x , y ) ★ f ( x , y ) + η ( x , y ) g(x,y)=h(x,y)bigstar f(x,y)+eta(x,y) g ( x , y ) = h ( x , y ) ★ f ( x , y ) + η ( x , y ) 寫成等價(jià)的頻率域表示: G ( u , v ) = H ( u , v ) F ( u , v ) + N ( u , v ) G(u,v)=H(u,v)F(u,v)+N(u,v) G ( u , v ) = H ( u , v ) F ( u , v ) + N ( u , v ) 5.2.1噪聲的空間和頻率

    2024年02月09日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu)與算法分析 第五章 樹和二叉樹 作業(yè)講解

    數(shù)據(jù)結(jié)構(gòu)與算法分析 第五章 樹和二叉樹 作業(yè)講解

    ?參考教材: 《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版 第2版)》 嚴(yán)蔚敏,李冬梅,吳偉民編著,人民郵電出版社,2022年版。 截圖未標(biāo)明出處均為原創(chuàng)或取自《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版 第2版)》~ ? 本文對(duì)應(yīng)的作業(yè)題講解視頻: ? 數(shù)據(jù)結(jié)構(gòu)與算法分析作業(yè)講解視頻合集 https://www.bilibili.com/video/BV1N

    2024年02月02日
    瀏覽(24)
  • [JavaScript] 第五章 函數(shù)、事件處理、作用域

    [JavaScript] 第五章 函數(shù)、事件處理、作用域

    春花秋月何時(shí)了,往事知多少。此付費(fèi)專欄不要訂閱,不要訂閱,聽人勸。 ??作者主頁(yè):青花鎖 ??簡(jiǎn)介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??、Java微服務(wù)架構(gòu)公號(hào)作者?? ??簡(jiǎn)歷模板、學(xué)習(xí)資料、面試題庫(kù)、技術(shù)互助 ??文末獲取聯(lián)系方式 ?? [Java項(xiàng)目實(shí)戰(zhàn)] 介紹Java組件安裝、使用;手

    2024年02月03日
    瀏覽(22)
  • 第五章Pandas數(shù)據(jù)載入與預(yù)處理

    1:利用下面哪個(gè)可視化繪圖可以發(fā)現(xiàn)數(shù)據(jù)的異常點(diǎn) A.密度圖 B.直方圖 C.盒圖 D.概率圖 知識(shí)點(diǎn)解析: 密度圖:表現(xiàn)與數(shù)據(jù)值對(duì)應(yīng)的邊界或域?qū)ο蟮囊环N理論圖形表示方法 直方圖:直方圖是數(shù)值數(shù)據(jù)分布的精確圖形表示 盒圖:是結(jié)構(gòu)化編程中的一種可視化建模 概率圖:用圖來

    2024年02月05日
    瀏覽(23)
  • javacv從入門到精通——第五章:音頻處理

    使用 javacv 進(jìn)行音頻處理需要使用 FFmpeg 的 libavcodec 庫(kù)進(jìn)行音頻解碼、編碼以及音頻轉(zhuǎn)換等操作,同時(shí)還需要使用 OpenCV 的視頻 I/O 模塊進(jìn)行音頻數(shù)據(jù)讀寫。 以下是一些常見的音頻處理操作以及使用 javacv 實(shí)現(xiàn)這些操作的方法: 音頻格式轉(zhuǎn)換:可以使用 FFmpeg 的 libswresample 庫(kù)進(jìn)

    2024年02月02日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包