OpenCV_Python —— (3)通道切分合並、圖像金字塔


@

一、通道切分合並

# 通道切分
(R, G, B) = cv2.split(image)

# 通道合並
merged = cv2.merge([R,G,B])

二、圖像金字塔

在這里插入圖片描述

圖像金字塔

一般情況下,我們要處理是一副具有固定分辨率的圖像。但是有些情況下,我們需要對同一圖像的不同分辨率的子圖像進行處理。比如,我們要在一幅圖像中查找某個目標,比如臉,我們不知道目標在圖像中的尺寸大小。這種情況下,我們需要創建創建一組圖像,這些圖像是具有不同分辨率的原始圖像。我們把這組圖像叫做圖像金字塔(簡單來說就是同一圖像的不同分辨率的子圖集合)。如果我們把最大的圖像放在頂部,最小的放在底部,看起來像一座金字塔,故而得名圖像金字塔。
==圖像金字塔是一個倒金字塔型 ==

高斯金字塔

高斯金字塔的頂部是通過將底部圖像中的連續的行和列去除得到的。頂部圖像中的每個像素值等於下一層圖像中 5 個像素的高斯加權平均值。這樣操作一次一個 MxN 的圖像就變成了一個 M/2×N/2 的圖像。所以這幅圖像的面積就變為原來圖像面積的四分之一。連續進行這樣的操作我們就會得到一個分辨率不斷下降的圖像金字塔。我們可以使用函數cv2.pyrDown()cv2.pyrUp() 構建圖像金字塔。

# 下采樣,圖像尺寸變小
image = cv2.pyrDown(image)

# 上采樣,圖像尺寸變大
image = cv2.pyrUp(image)

拉普拉斯金字塔

拉普拉斯金字塔可以由高斯金字塔計算得來,公式如下:

\[L_i=G_i-pyrUp(G_{i+1}) \]

拉普拉金字塔的圖像看起來就像邊界圖,其中很多像素都是 0。

# 拉普拉斯金字塔
image = imread('image.jpg')
down_image1 = cv2.pyrDown(image)
down_image2 = cv2.pyrDown(down_image1)
up_image = cv2.pyrUp(down_image2)
laplacian = down_image1-up_image
show(laplacian)

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM