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

【OpenCV】第十一章: 圖像金字塔

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

第十一章: 圖像金字塔

一、什么是圖像金字塔?

同一張圖片不同分辨率的子圖的集合。圖像金字塔的作用,opencv,學(xué)習(xí),計(jì)算機(jī)視覺(jué)

圖像金字塔底部是待處理的高分辨率圖像,也就是原始圖像,頂部是低分辨率的近似圖像。一般情況下,都是每向上移動(dòng)一級(jí),圖像的寬和高都降低為原來(lái)的1/2 。

二、為什么要生成圖像金字塔,圖像金字塔能干啥?

  • 1、我們可以提取更'有用'的特征。如果一張圖片是1024x1024大小的,那么它就有100萬(wàn)多個(gè)像素點(diǎn),如果我們把圖片的原始數(shù)據(jù)喂入神經(jīng)網(wǎng)絡(luò)模型,光輸入的神經(jīng)元數(shù)量都要100多萬(wàn)個(gè),計(jì)算資源會(huì)迅速崩掉。圖像金字塔是對(duì)圖像尺寸進(jìn)行的處理,這樣有利于我們提取最'有用'的特征,或者說(shuō)進(jìn)行降維操作。
  • 2、可以避免模型過(guò)擬合。在某些圖像處理的算法中,圖像金字塔這種的多分辨率運(yùn)算可以避免陷入局部點(diǎn),增強(qiáng)模型魯棒性。
  • 3、圖像金字塔底層是清晰的原始圖像,越往上圖像越模糊,因此我們可以通俗的理解:在底層可以看清楚更多的圖像細(xì)節(jié),在高層只可以看到輪廓。所以,在目標(biāo)檢測(cè)領(lǐng)域,圖像中的物體通常很可能是遠(yuǎn)近不一,大小不一的,此時(shí)我們就可以利用金字塔來(lái)檢測(cè)不同尺度下的物體。這種方法要比使用不同大小的sliding window在原圖上做檢測(cè)節(jié)省太多的算力!并且效果也要好很多!
  • 4、對(duì)一張圖像構(gòu)建不同的尺度空間,這種操作在目標(biāo)檢測(cè)中非常有用,比如最簡(jiǎn)單的Viola的人臉檢測(cè)器就是用的這個(gè)技術(shù)。
  • 5、圖像金字塔從另外一個(gè)角度理解就是:它將原圖像分別分解到不同的空間頻帶上,所以可以用在多分辨率融合算法中,融合過(guò)程是在各空間頻率層上分別進(jìn)行的,這樣就可以針對(duì)不同分解層的不同頻帶上的特征與細(xì)節(jié),采用不同的融合算子以達(dá)到突出特定頻帶上特征與細(xì)節(jié)的目的。也就是有可能將來(lái)自不同圖像的特征與細(xì)節(jié)融合在一起。
  • 6、圖像金字塔用的最多的就是用在SIFT算法中,在SIFT提取的時(shí)候,因?yàn)閠emplate上的局部特征跟目標(biāo)圖像上的實(shí)際特征可能存在尺度上的差異,使用尺度空間是為了達(dá)到尺度不變性。
  • 7、在ORB的改進(jìn)算法中也可以運(yùn)用圖像金字塔解決尺度不變換特性。
  • 8、SURF算法中也用到了圖像金字塔的思想。

    小結(jié):要找原因,原因很多,也說(shuō)明圖像金字塔應(yīng)用很廣泛,是一個(gè)基礎(chǔ)理論和技術(shù)。其實(shí)在計(jì)算機(jī)視覺(jué)里,很多看似直觀且簡(jiǎn)單的東西往往有層出不窮用法,除了本章的金字塔,還有比如直方圖,比如二值化,比如卷積,比如積分圖,比如距離變換……等等。雖然都不是什么高級(jí)的難以理解的東西,但一旦用到巧處,就非常耐人尋味!

三、理論基礎(chǔ):下采樣、上采樣、濾波器

  • 下采樣:自下而上生成一個(gè)圖像金字塔,最下面一般就是原圖,依次往上的圖片尺寸減半。
  • 上采樣:自上而下生成一個(gè)圖像金字塔,最上面一般是一個(gè)尺寸較小的特征圖,依次往下的圖片尺寸變?yōu)樵瓉?lái)的二倍。

如果我們通過(guò)下采樣生成一個(gè)金字塔,最簡(jiǎn)單的做法就是:不斷地刪除圖像的偶數(shù)行和偶數(shù)列,重復(fù)這個(gè)過(guò)程,就得到一個(gè)金字塔。
如果我們通過(guò)上采樣生成一個(gè)金字塔,最簡(jiǎn)單的就是:在每列像素點(diǎn)的右邊插入值為0的列,在每行像素點(diǎn)下面插入值為0的行,不斷重復(fù),就生成一個(gè)金字塔了。
小結(jié):
1、下采樣是圖像不斷變小的過(guò)程,上采樣是圖像不斷變大的過(guò)程。
2、一個(gè)圖像下采樣一次,在執(zhí)行一次上采樣,雖然尺寸恢復(fù)到原圖像的尺寸,但像素值已經(jīng)改變?。?!也就是這兩種操作是不可逆的。

  • 濾波器
    為什么要用濾波器?
    我們下采樣生成金字塔圖像時(shí),是直接刪除偶數(shù)行偶數(shù)列的操作,但這種操作意味著直接丟棄圖像中的信息!為了減輕圖像信息的丟失,我們?cè)谙虏蓸硬僮髦跋扔脼V波器對(duì)原始圖像濾波操作一遍,這樣濾波后的圖像就是原始圖像的近似圖像,此時(shí)我們?cè)趧h偶數(shù)行偶數(shù)列,就沒(méi)有直接的信息損失了。而對(duì)原始圖像進(jìn)行濾波操作有很多方法,比如我們可以用鄰域?yàn)V波器進(jìn)行操作,這樣生成的圖像就是平均金字塔。如果我們用高斯濾波器處理,我們就生成的是高斯金字塔?。
    同理,當(dāng)我們上采樣生成圖像金字塔時(shí),我們直接右插入列下插入行操作,這種操作會(huì)生成大量的0值像素點(diǎn),這些0值像素點(diǎn)毫無(wú)意義,我們就需要對(duì)0值像素點(diǎn)進(jìn)行賦值。而賦值就是插值處理。插值處理也有很多方法,比如用區(qū)域均值補(bǔ)充,那生成的就是平均金字塔,如果用高斯核填充就是高斯金字塔

四、上下采樣API:

下采樣:cv2.pyrDown(img [, dstsize, borderType])
上采樣:cv2.pyrUp(img [, dstsize, borderType])
默認(rèn)的尺寸都是一半一半的減小,或者一倍一倍的增加。
默認(rèn)的濾波器都是高斯濾波器。

五、高斯金字塔圖像金字塔的作用,opencv,學(xué)習(xí),計(jì)算機(jī)視覺(jué)

#例11.1 對(duì)lena進(jìn)行下采樣
import cv2
import numpy as np
import matplotlib.pyplot as plt

lena0 = cv2.imread(r'C:\Users\25584\Desktop\lena.bmp', 0)
lena1 = cv2.pyrDown(lena0)
lena2 = cv2.pyrDown(lena1)
lena3 = cv2.pyrDown(lena2)
lena4 = cv2.pyrDown(lena3)

Fig=plt.figure(figsize=(16,10))
Grid=plt.GridSpec(33,33)
axes1=Fig.add_subplot(Grid[:17,:17]), plt.imshow(lena0, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes2=Fig.add_subplot(Grid[:9,17:25]), plt.imshow(lena1, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes3=Fig.add_subplot(Grid[:5,25:29]), plt.imshow(lena2, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes4=Fig.add_subplot(Grid[:3,29:31]), plt.imshow(lena3, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes5=Fig.add_subplot(Grid[:1,31:32]), plt.imshow(lena4, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
plt.show()

圖像金字塔的作用,opencv,學(xué)習(xí),計(jì)算機(jī)視覺(jué)

#例11.2 對(duì)lena進(jìn)行上采樣
import cv2
import numpy as np
import matplotlib.pyplot as plt

lena0 = cv2.imread(r'C:\Users\25584\Desktop\lena.bmp', 0)   #512
lena1 = cv2.pyrUp(lena0)  #1024
lena2 = cv2.pyrUp(lena1)  #2048
lena3 = cv2.pyrUp(lena2)  #4096


Fig=plt.figure(figsize=(16,10))
Grid=plt.GridSpec(16,16)
axes1=Fig.add_subplot(Grid[0,0]), plt.imshow(lena0, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes2=Fig.add_subplot(Grid[0:3,1:3]), plt.imshow(lena1, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes3=Fig.add_subplot(Grid[0:5,3:7]), plt.imshow(lena2, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes4=Fig.add_subplot(Grid[0:9,7:15]), plt.imshow(lena3, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
plt.show()

圖像金字塔的作用,opencv,學(xué)習(xí),計(jì)算機(jī)視覺(jué)

#例11.3 對(duì)lena先下采樣再上采樣,看結(jié)果圖核原始圖的差異,然后再lena先上采樣再下采樣,看結(jié)果圖和原始圖的差異
import cv2
import numpy as np
import matplotlib.pyplot as plt

lena0 = cv2.imread(r'C:\Users\25584\Desktop\lena.bmp', 0)   #512
lena1 = cv2.pyrDown(lena0)  #216
lena2 = cv2.pyrUp(lena1)  #512
diff1 = lena2-lena0

lena11 = cv2.pyrUp(lena0)  #1024
lena22 = cv2.pyrDown(lena11)  #512
diff2 = lena22-lena0

Fig=plt.figure(figsize=(16,10))
Grid=plt.GridSpec(6,10)
axes1=Fig.add_subplot(Grid[:2,:2]), plt.imshow(lena0, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes2=Fig.add_subplot(Grid[0,2]), plt.imshow(lena1, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes3=Fig.add_subplot(Grid[:2,3:5]), plt.imshow(lena2, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes4=Fig.add_subplot(Grid[:2,5:7]), plt.imshow(diff1, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes21=Fig.add_subplot(Grid[2:4,:2]), plt.imshow(lena0, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes22=Fig.add_subplot(Grid[2:6,2:6]), plt.imshow(lena11, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes23=Fig.add_subplot(Grid[2:4,6:8]), plt.imshow(lena22, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes24=Fig.add_subplot(Grid[2:4,8:10]), plt.imshow(diff2, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
plt.show()

圖像金字塔的作用,opencv,學(xué)習(xí),計(jì)算機(jī)視覺(jué)

六、拉普拉斯金字塔

拉普拉斯金字塔是在高斯金字塔的基礎(chǔ)上生成的。
為啥要發(fā)明拉普拉斯金字塔?還是因?yàn)楦咚菇鹱炙?,雖然它用高斯核過(guò)濾了一遍,但或多或少還是有信息丟失,而這些丟失的信息就是拉普拉斯金字塔?。所以拉普拉斯金字塔的作用就在于能夠恢復(fù)圖像的細(xì)節(jié),就是我們從高層的尺寸小的特征圖中提取特征后,我們還能通過(guò)拉普拉斯金字塔數(shù)據(jù)找回高層像素點(diǎn)對(duì)應(yīng)的底層清晰度更高的圖像,就是返回來(lái)找到更多圖像的細(xì)節(jié)。
Li = Gi - PyrUp( PyrDown(Gi) )
其中,Gi:原始圖像 ; Li:拉普拉斯金字塔圖像圖像金字塔的作用,opencv,學(xué)習(xí),計(jì)算機(jī)視覺(jué)

#例11.4 對(duì)lena圖片構(gòu)造拉普拉斯金字塔
import cv2
import numpy as np
import matplotlib.pyplot as plt

lena = cv2.imread(r'C:\Users\25584\Desktop\lena.bmp', 0)   #512

G0 = lena
G1 = cv2.pyrDown(G0)
G2 = cv2.pyrDown(G1)
G3 = cv2.pyrDown(G2)
L0 = G0 - cv2.pyrUp(G1)
L1 = G1 - cv2.pyrUp(G2)
L2 = G2 - cv2.pyrUp(G3)

Fig=plt.figure(figsize=(16,10))
Grid=plt.GridSpec(33,33)
axes1=Fig.add_subplot(Grid[:17,:17]), plt.imshow(G0, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes2=Fig.add_subplot(Grid[:9,17:25]), plt.imshow(G1, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes3=Fig.add_subplot(Grid[:5,25:29]), plt.imshow(G2, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes4=Fig.add_subplot(Grid[:3,29:31]), plt.imshow(G3, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])

Fig=plt.figure(figsize=(16,10))
Grid=plt.GridSpec(33,33)
axes1=Fig.add_subplot(Grid[:17,:17]), plt.imshow(L0, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes2=Fig.add_subplot(Grid[:9,17:25]), plt.imshow(L1, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
axes3=Fig.add_subplot(Grid[:5,25:29]), plt.imshow(L2, cmap='gray'), plt.box(), plt.xticks([]), plt.yticks([])
plt.show()

圖像金字塔的作用,opencv,學(xué)習(xí),計(jì)算機(jī)視覺(jué)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-768572.html

#例11.5 使用拉普拉斯金字塔和高斯金字塔恢復(fù)原始圖像
import cv2
import numpy as np
import matplotlib.pyplot as plt

lena = cv2.imread(r'C:\Users\25584\Desktop\lena.bmp', 0)   #512
#生成高斯金字塔
G0 = lena
G1 = cv2.pyrDown(G0)
G2 = cv2.pyrDown(G1)
G3 = cv2.pyrDown(G2)
#生成拉普拉斯金字塔
L0 = G0 - cv2.pyrUp(G1)
L1 = G1 - cv2.pyrUp(G2)
L2 = G2 - cv2.pyrUp(G3)
#恢復(fù)原始圖像
G0_1 = L0 + cv2.pyrUp(G1)
G1_1 = L1 + cv2.pyrUp(G2)
G2_1 = L2 + cv2.pyrUp(G3)
#確認(rèn)每層是否真的復(fù)原
f0 = G0_1 - G0
f1 = G1_1 - G1
f2 = G2_1 - G2
print(np.sum(abs(f0)))
print(np.sum(abs(f1)))
print(np.sum(abs(f2)))
0
0
0

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

本文來(lái)自互聯(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)文章

  • OpenCV(十六):高斯圖像金字塔

    OpenCV(十六):高斯圖像金字塔

    目錄 1.高斯圖像金字塔原理 2.高斯圖像金字塔實(shí)現(xiàn) 1.高斯圖像金字塔原理 高斯圖像金字塔是一種用于多尺度圖像表示和處理的重要技術(shù)。它通過(guò)對(duì)圖像進(jìn)行多次高斯模糊和下采樣操作來(lái)生成不同分辨率的圖像層級(jí),每個(gè)層級(jí)都是原始圖像的模糊和降采樣版本。 以下是高斯圖

    2024年02月09日
    瀏覽(31)
  • 圖像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重構(gòu)原圖的Python-OpenCV代碼

    圖像金字塔、高斯金字塔、拉普拉斯金字塔是怎么回事?附利用拉普拉斯金字塔和高斯金字塔重構(gòu)原圖的Python-OpenCV代碼

    圖像金字塔是對(duì)圖像進(jìn)行多分辨率表示的一種有效且簡(jiǎn)單的結(jié)構(gòu)。 一個(gè)圖像金字塔是一系列以金字塔形狀排列的分辨率逐步降低的圖像。圖像金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率表示。 圖像金字塔有什么作用? 圖像金字塔常用于圖像縮放、圖像重

    2024年02月04日
    瀏覽(97)
  • Python Opencv實(shí)踐 - 圖像金字塔
  • OpenCV圖像金字塔pyrDown下采樣

    OpenCV圖像金字塔pyrDown下采樣

    2024年02月13日
    瀏覽(16)
  • 【OpenCV實(shí)現(xiàn)平滑圖像金字塔,輪廓:入門】

    【OpenCV實(shí)現(xiàn)平滑圖像金字塔,輪廓:入門】

    文章內(nèi)容的概要: 平滑圖像金字塔: 輪廓: 使用圖像金字塔去創(chuàng)造一個(gè)新的水果,“橘果(Orapple)” 函數(shù):cv.pyrUp(), cv.pyrDown() 通常,我們處理圖像時(shí)使用的是固定分辨率。然而,在某些情況下,我們需要在不同的分辨率下處理同一張圖像。例如,在搜索圖像中的某些內(nèi)容(

    2024年02月08日
    瀏覽(29)
  • OpenCV官方教程中文版 —— 圖像金字塔

    OpenCV官方教程中文版 —— 圖像金字塔

    ? 學(xué)習(xí)圖像金字塔 ? 使用圖像創(chuàng)建一個(gè)新水果:“橘子蘋(píng)果” ? 將要學(xué)習(xí)的函數(shù)有:cv2.pyrUp(),cv2.pyrDown()。 一般情況下,我們要處理是一副具有固定分辨率的圖像。但是有些情況下,我們需要對(duì)同一圖像的不同分辨率的子圖像進(jìn)行處理。比如,我們要在一幅圖像中查找某

    2024年02月07日
    瀏覽(91)
  • Opencv 圖像金字塔----高斯和拉普拉斯

    Opencv 圖像金字塔----高斯和拉普拉斯

    原文:圖像金字塔----高斯和拉普拉斯 圖像金字塔 是圖像中多尺度表達(dá)的一種,最初用于機(jī)器視覺(jué)和圖像壓縮,最主要用于圖像的分割、融合。 高斯金字塔是由底部的最大分辨率圖像逐次向下采樣得到的一系列圖像。最下面的圖像分辨率最高,越往上圖像分辨率越低。 高斯

    2024年02月09日
    瀏覽(19)
  • OpenCV基礎(chǔ)補(bǔ)充自適應(yīng)閾值及圖像金字塔

    OpenCV基礎(chǔ)補(bǔ)充自適應(yīng)閾值及圖像金字塔

    對(duì)于OpenCV知識(shí)點(diǎn)還有很多,基礎(chǔ)的大家可以參考前面幾節(jié)。 OpenCv基礎(chǔ)之繪圖及幾何變換實(shí)例 OpenCV基礎(chǔ)操作之圖像的形態(tài)學(xué)運(yùn)算 OpenCV基礎(chǔ)操作之邊界填充、圖像閾值以及圖像平滑處理 OpenCV基礎(chǔ)之邊緣檢測(cè)與輪廓描繪 OpenCV基礎(chǔ)之模板匹配與直方圖 OpenCV圖像處理之傅里葉變換

    2024年02月02日
    瀏覽(36)
  • 構(gòu)建圖像金字塔:探索 OpenCV 的尺度變換技術(shù)

    構(gòu)建圖像金字塔:探索 OpenCV 的尺度變換技術(shù)

    在計(jì)算機(jī)視覺(jué)領(lǐng)域,圖像金字塔是一種強(qiáng)大的技術(shù),可用于在不同尺度下對(duì)圖像進(jìn)行分析和處理。金字塔的概念借鑒了古埃及的金字塔形狀,其中每一級(jí)都是前一級(jí)的縮小版本。本篇博客將深入探討如何構(gòu)建圖像金字塔,以及如何在實(shí)際應(yīng)用中利用金字塔來(lái)解決各種計(jì)算機(jī)視

    2024年02月08日
    瀏覽(35)
  • Python-OpenCV中的圖像處理-圖像金字塔

    Python-OpenCV中的圖像處理-圖像金字塔

    同一圖像的不同分辨率的子圖集合,如果把最大的圖像放在底部,最小的放在頂部,看起來(lái)像一座金字塔,故而得名圖像金字塔。 cv2.pyrUp():上采樣 cv2.pyrDown():下采樣 高斯金字塔的頂部是通過(guò)將底部圖像中的連續(xù)的行和列去除得到的。頂部圖像中的每個(gè)像素值等于下一層圖

    2024年02月13日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包