欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python圖像處理之圖像金字塔的向上和向下取樣

 更新時(shí)間:2022年09月23日 09:34:24   作者:wadfdhsajd  
圖像金字塔是指由一組圖像且不同分別率的子圖集合,它是圖像多尺度表達(dá)的一種,以多分辨率來(lái)解釋圖像的結(jié)構(gòu),主要用于圖像的分割或壓縮。本文主要介紹了圖像金字塔的圖像向下取樣和向上取樣,感興趣的可以了解一下

一.圖像金字塔

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

生成圖像金字塔主要包括兩種方式——向下取樣、向上取樣。在圖6-11中,將圖像G0轉(zhuǎn)換為G1、G2、G3,圖像分辨率不斷降低的過(guò)程稱為向下取樣;將G3轉(zhuǎn)換為G2、G1、G0,圖像分辨率不斷增大的過(guò)程稱為向上取樣。

二.圖像向下取樣

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

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

顯而易見(jiàn),原始圖像Gi具有M×N個(gè)像素,進(jìn)行向下取樣之后,所得到的圖像Gi+1具有M/2×N/2個(gè)像素,只有原圖的四分之一。通過(guò)對(duì)輸入的原始圖像不停迭代以上步驟就會(huì)得到整個(gè)金字塔。注意,由于每次向下取樣會(huì)刪除偶數(shù)行和列,所以它會(huì)不停地丟失圖像的信息。

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

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

  • src表示輸入圖像,
  • dst表示輸出圖像,和輸入圖像具有一樣的尺寸和類型
  • dstsize表示輸出圖像的大小,默認(rèn)值為Size()
  • borderType表示像素外推方法,詳見(jiàn)cv::bordertypes

實(shí)現(xiàn)代碼如下所示:

# -*- coding: utf-8 -*-
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é)果如圖6-13所示,它將原始圖像壓縮成原圖的四分之一。

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

# -*- coding: utf-8 -*-
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é)果如圖所示:

三.圖像向上取樣

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

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

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

  • src表示輸入圖像,
  • dst表示輸出圖像,和輸入圖像具有一樣的尺寸和類型
  • dstsize表示輸出圖像的大小,默認(rèn)值為Size()
  • borderType表示像素外推方法,詳見(jiàn)cv::bordertypes

實(shí)現(xiàn)代碼如下所示:

# -*- coding: utf-8 -*-
import cv2  
import numpy as np  
import matplotlib.pyplot as plt
#讀取原始圖像
img = cv2.imread('lena.png')
#圖像向上取樣
r = cv2.pyrUp(img)
#顯示圖像
cv2.imshow('original', img)
cv2.imshow('PyrUp', r)
cv2.waitKey()
cv2.destroyAllWindows()

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

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

# -*- coding: utf-8 -*-
import cv2  
import numpy as np  
import matplotlib.pyplot as plt
#讀取原始圖像
img = cv2.imread('lena2.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é)果如圖6-17所示,每次向上取樣均為上次圖像的四倍,但圖像的清晰度會(huì)降低。

到此這篇關(guān)于Python圖像處理之圖像金字塔的向上和向下取樣的文章就介紹到這了,更多相關(guān)Python圖像金字塔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 容易被忽略的Python內(nèi)置類型

    容易被忽略的Python內(nèi)置類型

    這篇文章主要介紹了容易被忽略的Python內(nèi)置類型,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • Python3+pycuda實(shí)現(xiàn)執(zhí)行簡(jiǎn)單GPU計(jì)算任務(wù)

    Python3+pycuda實(shí)現(xiàn)執(zhí)行簡(jiǎn)單GPU計(jì)算任務(wù)

    GPU的加速技術(shù)在深度學(xué)習(xí)、量子計(jì)算領(lǐng)域都已經(jīng)被廣泛的應(yīng)用。這篇文章就來(lái)和大家聊聊Python3如何利用pycuda執(zhí)行簡(jiǎn)單GPU計(jì)算任務(wù)?,感興趣的可以了解一下
    2023-03-03
  • Python報(bào)錯(cuò):ModuleNotFoundError的解決辦法

    Python報(bào)錯(cuò):ModuleNotFoundError的解決辦法

    "ModuleNotFoundError: No module named 'xxx'"這個(gè)報(bào)錯(cuò)是個(gè)非常常見(jiàn)的報(bào)錯(cuò),幾乎每個(gè)python程序員都遇到過(guò),下面這篇文章主要給大家介紹了關(guān)于Python報(bào):ModuleNotFoundError錯(cuò)誤的解決辦法,需要的朋友可以參考下
    2022-06-06
  • 從零學(xué)python系列之淺談pickle模塊封裝和拆封數(shù)據(jù)對(duì)象的方法

    從零學(xué)python系列之淺談pickle模塊封裝和拆封數(shù)據(jù)對(duì)象的方法

    這個(gè)系列也發(fā)了幾篇文章了,都是個(gè)人的一些學(xué)習(xí)心得的記錄,今天在學(xué)習(xí)文件數(shù)據(jù)處理的時(shí)候了解到有pickle模塊,查找官方文檔學(xué)習(xí)了一些需要用到的pickle內(nèi)容。
    2014-05-05
  • 教你用Python3+mysql8.0搭建Django框架

    教你用Python3+mysql8.0搭建Django框架

    發(fā)現(xiàn)有很多小伙伴還不知道如何搭建Django框架,今天特地整理了本篇文章,基于Python3和mysql8.0,文中有非常詳細(xì)的步驟教程,對(duì)小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • 我就是這樣學(xué)習(xí)Python中的列表

    我就是這樣學(xué)習(xí)Python中的列表

    這篇文章主要給大家介紹了關(guān)于我是如何學(xué)習(xí)Python中的列表的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python利用splinter實(shí)現(xiàn)瀏覽器自動(dòng)化操作方法

    Python利用splinter實(shí)現(xiàn)瀏覽器自動(dòng)化操作方法

    今天小編就為大家分享一篇Python利用splinter實(shí)現(xiàn)瀏覽器自動(dòng)化操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Pytorch 的 LSTM 模型的示例教程

    Pytorch 的 LSTM 模型的示例教程

    本文給大家介紹了Pytorch 的 LSTM 模型的示例教程,文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-06-06
  • Python中hash()函數(shù)之哈希值的奧秘詳解

    Python中hash()函數(shù)之哈希值的奧秘詳解

    hash()是Python 中的一個(gè)內(nèi)置函數(shù),用于計(jì)算對(duì)象的哈希值,哈希值是一個(gè)整數(shù),用于唯一標(biāo)識(shí)對(duì)象,下面這篇文章主要給大家介紹了關(guān)于Python中hash()函數(shù)之哈希值奧秘的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • python之virtualenv的簡(jiǎn)單使用方法(必看篇)

    python之virtualenv的簡(jiǎn)單使用方法(必看篇)

    下面小編就為大家分享一python之virtualenv的簡(jiǎn)單使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論