<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
上一篇文章講解的影象取樣處理可以降低影象的大小,本文將補充影象金字塔知識,瞭解專門用於影象向上取樣和向下取樣的pyrUp()和pyrDown()函數。
影象金字塔是指由一組影象且不同分別率的子圖集合,它是影象多尺度表達的一種,以多解析度來解釋影象的結構,主要用於影象的分割或壓縮。一幅影象的金字塔是一系列以金字塔形狀排列的解析度逐步降低,且來源於同一張原始圖的影象集合。如圖10-1所示,它包括了四層影象,將這一層一層的影象比喻成金字塔。影象金字塔可以通過梯次向下取樣獲得,直到達到某個終止條件才停止取樣,在向下取樣中,層級越高,則影象越小,解析度越低[1-2]。
生成影象金字塔主要包括兩種方式:
在圖中,將影象G0轉換為G1、G2、G3,影象解析度不斷降低的過程稱為向下取樣;將G3轉換為G2、G1、G0,影象解析度不斷增大的過程稱為向上取樣。
在影象向上取樣是由小影象不斷放影象的過程。它將影象在每個方向上擴大為原影象的2倍,新增的行和列均用0來填充,並使用與“向下取樣”相同的折積核乘以4,再與放大後的影象進行折積運算,以獲得“新增畫素”的新值。如圖10-2所示,它在原始畫素45、123、89、149之間各新增了一行和一列值為0的畫素。
在OpenCV中,向上取樣使用的函數為pyrUp(),其原型如下所示:
dst = pyrUp(src[, dst[, dstsize[, borderType]]])
– src表示輸入影象,
– dst表示輸出影象,和輸入影象具有一樣的尺寸和型別
– dstsize表示輸出影象的大小,預設值為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()
輸出結果如圖10-3所示,它將原始影象擴大為原影象的四倍。
多次向上取樣的程式碼如下。
# -*- 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()
輸出結果如圖10-4所示,每次向上取樣均為上次影象的四倍,但影象的清晰度會降低。
在影象向下取樣中,使用最多的是高斯金字塔。它將對影象Gi進行高斯核折積,並刪除原圖中所有的偶數行和列,最終縮小影象。其中,高斯核折積運算就是對整幅影象進行加權平均的過程,每一個畫素點的值,都由其本身和鄰域內的其他畫素值(權重不同)經過加權平均後得到。常見的3×3和5×5高斯核如下:
高斯核折積讓臨近中心的畫素點具有更高的重要度,對周圍畫素計算加權平均值,如圖10-5所示,其中心位置權重最高為0.4。
在OpenCV中,向下取樣使用的函數為pyrDown(),其原型如下所示:
dst = pyrDown(src[, dst[, dstsize[, borderType]]])
– src表示輸入影象,
– dst表示輸出影象,和輸入影象具有一樣的尺寸和型別
– dstsize表示輸出影象的大小,預設值為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()
輸出結果如圖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()
輸出結果如圖10-7所示,每次向下取樣均為上次的四分之一,並且影象的清晰度會降低。
本文主要講解影象金字塔處理,包括影象向上取樣和向下取樣。需要注意,向上取樣放大後的影象比原始影象要模糊,而每次向下取樣會刪除偶數行和列,它會不停地丟失影象的資訊。此外,向上取樣和向下取樣不是互逆的操作,經過兩種操作後,是無法恢復原始影象的。
以上就是Python影象處理之影象金字塔詳解的詳細內容,更多關於Python影象金字塔的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45