python金字塔_高斯金字塔與拉普拉斯金字塔的原理與python構建

高斯金字塔和拉普拉斯金字塔【1】在圖像相關領域應用廣泛,尤其是圖像融合和圖像分割方面。本文從理論和opencv實現兩個方面對兩種金字塔進行了介紹,并給出了二者的視覺效果。

1、高斯金字塔

在計算機視覺與圖像處理相關任務中,經常需要使用同一張圖的不同尺寸的子圖,我們可以使用高斯金字塔來獲取這些子圖。高斯金字塔是通過對一張圖逐級下采樣獲得的,如下圖所示:

上圖中最下層是原始的圖像,越靠上的層圖像尺寸越小,這一組圖像就被稱為高斯金字塔(在某些資料中,下采樣之前需要首先進行高斯濾波,本文為了簡化過程省略了這一步驟)。假設G0表示原始圖像,Gi表示第i次下采樣得到的圖像,那么高斯金字塔的計算過程可以表示如下:

其中Down表示下采樣函數,下采樣可以通過拋去圖像中的偶數行和偶數列來實現,這樣圖像長寬各減少二分之一,面積減少四分之一。opencv提供了pyrDown()函數用于下采樣,代碼如下:

def gaussian(ori_image, down_times=5):

# 1:添加第一個圖像為原始圖像

temp_gau = ori_image.copy()

gaussian_pyramid = [temp_gau]

for i in range(down_times):

# 2:連續存儲5次下采樣,這樣高斯金字塔就有6層

temp_gau = cv2.pyrDown(temp_gau)

gaussian_pyramid.append(temp_gau)

return gaussian_pyramid

進行5次下采樣可以獲得下面得6級高斯金字塔(第1級為原始高分辨率圖像):

可以看出,隨著下采樣的進行,圖像的分辨率不斷降低,視覺效果也越來越模糊。

2、拉普拉斯金字塔

拉普拉斯金字塔可以認為是殘差金字塔,用來存儲下采樣后圖片與原始圖片的差異。我們知道,如果高斯金字塔中任意一張圖Gi(比如G0為最初的高分辨率圖像)先進行下采樣得到圖Down(Gi),再進行上采樣得到圖Up(Down(Gi)),得到的Up(Down(Gi))與Gi是存在差異的,因為下采樣過程丟失的信息不能通過上采樣來完全恢復,也就是說下采樣是不可逆的。下面展示了一張圖先進行下采樣,再進行上采樣的過程:

可以看出,原始圖片下采樣后得到的小尺寸圖片雖然保留了視覺效果,但是將該小尺寸圖像再次上采樣也不能完整的恢復出原始圖像。為了能夠從下采樣圖像Down(Gi)中還原原始圖像Gi,我們需要記錄再次上采樣得到Up(Down(Gi))與原始圖片Gi之間的差異,這就是拉普拉斯金字塔的核心思想,下面最右邊的圖展示了這種差異(為了效果明顯我進行了伽馬矯正):

拉普拉斯金字塔就是記錄高斯金字塔每一級下采樣后再上采樣與下采樣前的差異,目的是為了能夠完整的恢復出每一層級的下采樣前圖像。下面的公式就是前面的差異記錄過程:

對于前文得到的高斯金字塔,現在可以構建對應的拉普拉斯金字塔如下(第1級為高斯金字塔中最小尺寸的圖,也就是高斯金字塔最后1級;為了下圖看起來更明顯我進行了伽馬矯正):

opencv提供了pyrUp()函數用于上下采樣過程,對應代碼如下:

def laplacian(gaussian_pyramid, up_times=5):

laplacian_pyramid = [gaussian_pyramid[-1]]

for i in range(up_times, 0, -1):

# i的取值為5,4,3,2,1,0也就是拉普拉斯金字塔有6層

temp_pyrUp = cv2.pyrUp(gaussian_pyramid[i])

temp_lap = cv2.subtract(gaussian_pyramid[i-1], temp_pyrUp)

laplacian_pyramid.append(temp_lap)

return laplacian_pyramid

3、總結

高斯金字塔和拉普拉斯金字塔作為獲取不同分辨率圖像的方法,原理并不復雜,但是自己并沒有找到中文論文專門介紹,僅僅找到了拉普拉斯金字塔論文【1】,大部分其它論文都是直接對其進行應用的。所以,如果本文的介紹有誤,請幫我指出此錯誤。

參考文獻:

【1】Burt P, Adelson E. The Laplacian pyramid as a compact image code[J]. IEEE Transactions on communications, 1983, 31(4): 532-540.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457787.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457787.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457787.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mongodb在32位機的連接

Windows 32bit版本安裝Mongodb時,會發生的下面問題 2016-05-09T00:09:45.1240800 I STORAGE [initandlisten] exception in initAndListen: 28663 Cannot start server. The default storage engine wiredTiger is not available with this build of mongod. Pleas…

oracle sql 語句 start with ...... connect by prior .......

這個查詢條件可以理解為遞歸查詢 select up_unit_code from pmctl_nuit START WITH unit_code 1188899Q CONNECT BY PRIOR up_unit_code unit_code 語句理解: 首先根據條件 START WITH unit_code 查詢到 up_unit_code 顯示 然后 CONNECT BY P…

cnetos7安裝zabbix3.0.3安裝手冊

親測可用呀。學習好幾天 最好用的文檔詳見附件http://down.51cto.com/data/2251232轉載于:https://blog.51cto.com/11802086/1863554

python文件夾目錄_Python 操作文件、文件夾、目錄大全

#-*- coding: utf-8 -*-importosimportshutil#一. 路徑操作:判斷、獲取和刪除#1. 得到當前工作目錄,即當前Python腳本工作的目錄路徑: os.getcwd()#print: currentpath: f:\LearnPythoncurrentpath os.getcwd()print "currentpath:",currentpa…

LightOJ 1370 Bi-shoe and Phi-shoe(歐拉函數)

題意:題目給出一個歐拉函數值F(X),讓我們求>這個函數值的最小數N,使得F(N) > F(X); 分析:這個題目有兩種做法。第一種,暴力打出歐拉函數表,然后將它調整…

15-CSS基礎-浮動流

浮動 網頁的布局方式 什么是網頁的布局方式? 網頁的布局方式其實就是指瀏覽器是如何對網頁中的元素進行排版的 標準流(文檔流/普通流)排版方式 其實瀏覽器默認的排版方式就是標準流的排版方式在CSS中將元素分為三類, 分別是塊級元素/行內元素/行內塊級元素在標準流中有兩種排版…

oracle sql 排序

當有多個排序列時 并且每列都是降序排序 需要在每個列名后 寫desc

遷移DirectX11到VS2015 Win10

書本中的例子遷移:Introduction to 3D Game Programming with Direct3D 11.0 顏色:DirectXColors.h and the DirectX::Colors namespace. 效果:Effect framework編譯后只需兩個文件,d3dx11effect.h及生成的lib文件。 紋理&#xf…

python監控網頁更新_python監控網頁更新

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技術人對外發布原創技術內容的最大平臺&…

git-- 使用

git 使用時兩個人沖突: Resolve conflicts

ansible 配置文件

配置文件 兩個核心文件:ansible.cfg和hosts文件,默認都存放在/etc/ansible目錄下。 ansible.cfg:主要設置一些ansible初始化的信息,比如日志存放路徑、模塊、插件等配置信息 hosts:機器清單,進行分組管理 1.ansible.cf…

高內聚低耦合通俗理解_抱歉,請不要把“業務邏輯層”理解為“業務中臺”

在IAS2019中臺架構峰會上,我曾與一位年輕帥氣的技術小伙來了一番有趣的對話。因為和朋友有約,所以我在現場互動結束之后,就急匆匆地跟其他嘉賓打了聲招呼,抱著筆記本沖出了會場。但沒想到剛到電梯口,卻被一位帥小伙迎面…

ofstream的使用方法--超級精細。C++文件寫入、讀出函數(轉)

ofstream的使用方法ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間; 在C中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的文件I/O,stream這個類…

org-mode入門教程

org-mode 入門教程By Z.H. Fu切問錄 www.fuzihao.orgorg-mode 入門教程 org-mode是Emacs提供的一個強大的編輯模式,可以用于做會議筆記以及制作各種待辦事項(GDT)。其語法類似于Markdown但是提供了比Markdown更多的操作,再加上Ema…

ansible 配置文件優先級

優先級如下: 1.首先找執行ansible命令的當前目錄中,是否有 ansible.cfg文件 ./ansible.cfg 2.如果找不到,再 找 當前用戶的家目錄下是否有 .ansible.cfg ~/.ansible.cfg 3.如果還找不到,就找 /etc/ansible/ansible.cfg /etc/ansible/ansible.…

如何對web.config進行加密和解密

http://blog.csdn.net/jf_jifei/article/details/6527390 在WEB網站開發過程中,如果我們將數據庫連接字符串封裝到.DLL文件中,將會給數據庫和程序的遷移帶來麻煩,因為萬一服務器地址或者數據庫發生變更,那么我們就不得不修改源程序…

java 爬蟲_Java原生代碼實現爬蟲(爬取小說)

Java也能做爬蟲。現在提到爬蟲人第一個想到的就是python,其實使用Java編寫爬蟲也是很好的選擇,Java成熟的爬蟲框架很多,下面給大家展示一個使用Java基礎語言編寫的爬取小說的案例:實現功能:爬取目標網站全本小說代碼編…

JS window對象 Location對象 location用于獲取或設置窗體的URL,并且可以用于解析URL。 語法: location.[屬性|方法]...

Location對象 location用于獲取或設置窗體的URL&#xff0c;并且可以用于解析URL。 語法: location.[屬性|方法] location對象屬性圖示: location 對象屬性&#xff1a; location 對象方法: 任務 在右邊編輯器script標簽內&#xff0c;獲取當前顯示文檔的URL,并輸出。 <!DOC…

ansible inventory 主機清單配置

文章目錄 環境介紹 ansible ssh配置 操作測試/etc/hosts 配置Inventory文件 主機與組主機變量、組變量把一個組變成另一個組的子成員變量太多了&#xff0c;不好管理怎么辦&#xff1f;來&#xff0c;分文件定義主機變量和組變量 操作環境介紹 為了練習方便&#xff0c;本次使…

python(26)查看文件的大小

有時候&#xff0c;在寫文件的時候需要判斷文件的大小&#xff0c;或者刪除空的文件 import os from os.path import join, getsizedef getdirsize(dir):size 0Lfor root, dirs, files in os.walk(dir):print filesfor name in files:print nameprint join(root,name) #輸出文…