最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python圖像處理之圖像金字塔詳解

 更新時(shí)間:2022年02月11日 10:21:05   作者:Eastmount  
這篇文章主要介紹了圖像處理中的圖像金字塔,包括圖像向上取樣和向下取樣。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下

一.圖像金字塔原理

上一篇文章講解的圖像采樣處理可以降低圖像的大小,本文將補(bǔ)充圖像金字塔知識(shí),了解專門用于圖像向上采樣和向下采樣的pyrUp()和pyrDown()函數(shù)。

圖像金字塔是指由一組圖像且不同分別率的子圖集合,它是圖像多尺度表達(dá)的一種,以多分辨率來解釋圖像的結(jié)構(gòu),主要用于圖像的分割或壓縮。一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低,且來源于同一張?jiān)紙D的圖像集合。如圖10-1所示,它包括了四層圖像,將這一層一層的圖像比喻成金字塔。圖像金字塔可以通過梯次向下采樣獲得,直到達(dá)到某個(gè)終止條件才停止采樣,在向下采樣中,層級(jí)越高,則圖像越小,分辨率越低[1-2]。

生成圖像金字塔主要包括兩種方式:

  • 向下取樣
  • 向上取樣

在圖中,將圖像G0轉(zhuǎn)換為G1、G2、G3,圖像分辨率不斷降低的過程稱為向下取樣;將G3轉(zhuǎn)換為G2、G1、G0,圖像分辨率不斷增大的過程稱為向上取樣。

二.圖像向上取樣

在圖像向上取樣是由小圖像不斷放圖像的過程。它將圖像在每個(gè)方向上擴(kuò)大為原圖像的2倍,新增的行和列均用0來填充,并使用與“向下取樣”相同的卷積核乘以4,再與放大后的圖像進(jìn)行卷積運(yùn)算,以獲得“新增像素”的新值。如圖10-2所示,它在原始像素45、123、89、149之間各新增了一行和一列值為0的像素。

在OpenCV中,向上取樣使用的函數(shù)為pyrUp(),其原型如下所示:

dst = pyrUp(src[, dst[, dstsize[, borderType]]])

– src表示輸入圖像,

– dst表示輸出圖像,和輸入圖像具有一樣的尺寸和類型

– dstsize表示輸出圖像的大小,默認(rèn)值為Size()

– borderType表示像素外推方法,詳見cv::bordertypes

向上取樣的代碼如下所示:

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2 ?
import numpy as np ?
import matplotlib.pyplot as plt

#讀取原始圖像
img = cv2.imread('lena-small.png')

#圖像向上取樣
r = cv2.pyrUp(img)

#顯示圖像
cv2.imshow('original', img)
cv2.imshow('PyrUp', r)
cv2.waitKey()
cv2.destroyAllWindows()

輸出結(jié)果如圖10-3所示,它將原始圖像擴(kuò)大為原圖像的四倍。

多次向上取樣的代碼如下。

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2 ?
import numpy as np ?
import matplotlib.pyplot as plt

#讀取原始圖像
img = cv2.imread('lena-small.png')

#圖像向上取樣
r1 = cv2.pyrUp(img)
r2 = cv2.pyrUp(r1)
r3 = cv2.pyrUp(r2)

#顯示圖像
cv2.imshow('original', img)
cv2.imshow('PyrUp1', r1)
cv2.imshow('PyrUp2', r2)
cv2.imshow('PyrUp3', r3)
cv2.waitKey()
cv2.destroyAllWindows()

輸出結(jié)果如圖10-4所示,每次向上取樣均為上次圖像的四倍,但圖像的清晰度會(huì)降低。

三.圖像向下取樣

在圖像向下取樣中,使用最多的是高斯金字塔。它將對(duì)圖像Gi進(jìn)行高斯核卷積,并刪除原圖中所有的偶數(shù)行和列,最終縮小圖像。其中,高斯核卷積運(yùn)算就是對(duì)整幅圖像進(jìn)行加權(quán)平均的過程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值(權(quán)重不同)經(jīng)過加權(quán)平均后得到。常見的3×3和5×5高斯核如下:

高斯核卷積讓臨近中心的像素點(diǎn)具有更高的重要度,對(duì)周圍像素計(jì)算加權(quán)平均值,如圖10-5所示,其中心位置權(quán)重最高為0.4。

在OpenCV中,向下取樣使用的函數(shù)為pyrDown(),其原型如下所示:

dst = pyrDown(src[, dst[, dstsize[, borderType]]])

– src表示輸入圖像,

– dst表示輸出圖像,和輸入圖像具有一樣的尺寸和類型

– dstsize表示輸出圖像的大小,默認(rèn)值為Size()

– borderType表示像素外推方法,詳見cv::bordertypes

向下取樣的代碼如下所示:

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2 ?
import numpy as np ?
import matplotlib.pyplot as plt

#讀取原始圖像
img = cv2.imread('nv.png')

#圖像向下取樣
r = cv2.pyrDown(img)

#顯示圖像
cv2.imshow('original', img)
cv2.imshow('PyrDown', r)
cv2.waitKey()
cv2.destroyAllWindows()

輸出結(jié)果如圖10-6所示,它將原始圖像壓縮成原圖的四分之一。

多次向下取樣的代碼如下。

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2 ?
import numpy as np ?
import matplotlib.pyplot as plt

#讀取原始圖像
img = cv2.imread('nv.png')

#圖像向下取樣
r1 = cv2.pyrDown(img)
r2 = cv2.pyrDown(r1)
r3 = cv2.pyrDown(r2)

#顯示圖像
cv2.imshow('original', img)
cv2.imshow('PyrDown1', r1)
cv2.imshow('PyrDown2', r2)
cv2.imshow('PyrDown3', r3)
cv2.waitKey()
cv2.destroyAllWindows()

輸出結(jié)果如圖10-7所示,每次向下取樣均為上次的四分之一,并且圖像的清晰度會(huì)降低。

四.總結(jié)

本文主要講解圖像金字塔處理,包括圖像向上取樣和向下取樣。需要注意,向上取樣放大后的圖像比原始圖像要模糊,而每次向下取樣會(huì)刪除偶數(shù)行和列,它會(huì)不停地丟失圖像的信息。此外,向上采樣和向下采樣不是互逆的操作,經(jīng)過兩種操作后,是無法恢復(fù)原始圖像的。

以上就是Python圖像處理之圖像金字塔詳解的詳細(xì)內(nèi)容,更多關(guān)于Python圖像金字塔的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python身份驗(yàn)證第三方庫(7個(gè))

    Python身份驗(yàn)證第三方庫(7個(gè))

    身份驗(yàn)證在很多項(xiàng)目上都可以用到,本文主要介紹了Python身份驗(yàn)證第三方庫(7個(gè)),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Python用yield from實(shí)現(xiàn)異步協(xié)程爬蟲的實(shí)踐

    Python用yield from實(shí)現(xiàn)異步協(xié)程爬蟲的實(shí)踐

    本文主要介紹了Python用yield from實(shí)現(xiàn)異步協(xié)程爬蟲的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python解決中文亂碼問題的方法小結(jié)

    python解決中文亂碼問題的方法小結(jié)

    在Python編程中,有時(shí)候我們會(huì)遇到中文亂碼的問題,中文亂碼指的是在輸出或處理中文字符時(shí),出現(xiàn)了顯示錯(cuò)誤或亂碼的情況,下面我將介紹幾種常見的解決方法,幫助你解決Python中的中文亂碼問題,需要的朋友可以參考下
    2024-11-11
  • C# DataGridView行列轉(zhuǎn)換的具體實(shí)現(xiàn)

    C# DataGridView行列轉(zhuǎn)換的具體實(shí)現(xiàn)

    本文主要介紹了C# DataGridView行列轉(zhuǎn)換的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • django+js+ajax實(shí)現(xiàn)刷新頁面的方法

    django+js+ajax實(shí)現(xiàn)刷新頁面的方法

    這篇文章主要介紹了django+js+ajax實(shí)現(xiàn)刷新頁面的方法,結(jié)合實(shí)例形式分析了django實(shí)現(xiàn)ajax刷新頁面功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • Django前端BootCSS實(shí)現(xiàn)分頁的方法

    Django前端BootCSS實(shí)現(xiàn)分頁的方法

    本文主要介紹了Django前端BootCSS實(shí)現(xiàn)分頁的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • python使用WMI檢測windows系統(tǒng)信息、硬盤信息、網(wǎng)卡信息的方法

    python使用WMI檢測windows系統(tǒng)信息、硬盤信息、網(wǎng)卡信息的方法

    這篇文章主要介紹了python使用WMI檢測windows系統(tǒng)信息、硬盤信息、網(wǎng)卡信息的方法,涉及Python針對(duì)系統(tǒng)信息的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • python中的三種注釋方法

    python中的三種注釋方法

    這篇文章主要介紹了python中的三種注釋方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Python實(shí)現(xiàn)將羅馬數(shù)字轉(zhuǎn)換成普通阿拉伯?dāng)?shù)字的方法

    Python實(shí)現(xiàn)將羅馬數(shù)字轉(zhuǎn)換成普通阿拉伯?dāng)?shù)字的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)將羅馬數(shù)字轉(zhuǎn)換成普通阿拉伯?dāng)?shù)字的方法,簡單分析了羅馬數(shù)字的構(gòu)成并結(jié)合實(shí)例形式給出了Python轉(zhuǎn)換羅馬數(shù)字為阿拉伯?dāng)?shù)字的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-04-04
  • python使用opencv換照片底色的實(shí)現(xiàn)

    python使用opencv換照片底色的實(shí)現(xiàn)

    這篇文章主要介紹了python使用opencv換照片底色的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論

霍林郭勒市| 合阳县| 水富县| 南乐县| 临颍县| 修水县| 琼结县| 涞水县| 广州市| 基隆市| 东乌珠穆沁旗| 阿拉善盟| 日喀则市| 磐石市| 犍为县| 图木舒克市| 铁力市| 贵德县| 鄂温| 广饶县| 荆州市| 元阳县| 芷江| 武定县| 汉川市| 陆河县| 营山县| 云和县| 丰县| 阿鲁科尔沁旗| 巴楚县| 定襄县| 扬中市| 达拉特旗| 平乡县| 甘德县| 莱芜市| 高要市| 牡丹江市| 民权县| 邮箱|