国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python-OpenCV中的圖像處理-圖像金字塔

這篇具有很好參考價值的文章主要介紹了Python-OpenCV中的圖像處理-圖像金字塔。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

圖像金字塔

  • 同一圖像的不同分辨率的子圖集合,如果把最大的圖像放在底部,最小的放在頂部,看起來像一座金字塔,故而得名圖像金字塔。
  • cv2.pyrUp():上采樣
  • cv2.pyrDown():下采樣
    Python-OpenCV中的圖像處理-圖像金字塔,OpenCV Python,python,opencv,圖像處理

高斯金字塔

高斯金字塔的頂部是通過將底部圖像中的連續(xù)的行和列去除得到的。頂部圖像中的每個像素值等于下一層圖像中 5 個像素的高斯加權平均值。這樣操作一次一個 MxN 的圖像就變成了一個 M/2xN/2 的圖像。所以這幅圖像的面積就變?yōu)樵瓉韴D像面積的四分之一。這被稱為 Octave。連續(xù)進行這樣的操作我們就會得到一個分辨率不斷下降的圖像金字塔。我們可以使用函數(shù)cv2.pyrDown() 和 cv2.pyrUp() 構建圖像金字塔。

import numpy as np
import cv2
from matplotlib import pyplot as plt

# 圖像金字塔 :同一圖像的不同分辨率的子圖集合
# 有兩種:高斯金字塔(Gaussian Pyramid) 和 拉普拉斯金字塔(Pyramid)
# 高斯金字塔 每次處理后圖像的面積變?yōu)樵瓉淼乃姆种?,也被稱為Octave
# cv2.pyrDown() #分辨率降低
# cv2.pyrUp()   #分辨率增高

img = cv2.imread('./resource/opencv/image/messi5.jpg')
lower_reso = cv2.pyrDown(img)
lower_reso2 = cv2.pyrDown(lower_reso)

upper_reso = cv2.pyrUp(lower_reso2)
upper_reso2 = cv2.pyrUp(upper_reso)

cv2.imshow('img', img)
cv2.imshow('lower_reso', lower_reso)
cv2.imshow('lower_reso2', lower_reso2)
cv2.imshow('upper_reso', upper_reso)
cv2.imshow('upper_reso2', upper_reso2)
cv2.waitKey(0)
cv2.destroyAllWindows()

Python-OpenCV中的圖像處理-圖像金字塔,OpenCV Python,python,opencv,圖像處理

拉普拉斯金字塔

拉普拉斯金字塔可以有高斯金字塔計算得來,公式如下:
Li = Gi - pyrUp( Gi + 1 )
式中:

  • Li:表示拉普拉斯金字塔中的第i層
  • Gi:表示高斯金字塔中的第i層
    拉普拉金字塔的圖像看起來就像邊界圖,其中很多像素都是 0。他們經(jīng)常
    被用在圖像壓縮中。

Python-OpenCV中的圖像處理-圖像金字塔,OpenCV Python,python,opencv,圖像處理
圖中各標記含義如下:

  • G0、G1、G2、G3分別是高斯金字塔的第0層、第1層、第2層、第3層。
  • L0、L1、L2、分別是拉普拉斯金字塔的第0層、第1層、第2層。
  • 向下的箭頭表示向下采樣操作(對應cv2.pyrDown()函數(shù))
  • 向右的箭頭表示向上采樣操作(對應cv2.pyrUp() 函數(shù))
  • "+"表示加法操作
  • "-"表示減法操作

上圖中的操作關系有:
向下采樣:

  • G1 = cv2.pyrDown(G0)
  • G2 = cv2.pyrDown(G1)
  • G3 = cv2.pyrDown(G2)

拉普拉斯金字塔:

  • L0 = G0 - cv2.pyrUp(G1)
  • L1 = G1 - cv2.pyrUp(G2)
  • L2 = G2 - cv2.pyrUp(G3)

向上采樣恢復高分辨率圖像:

  • G0 = L0 + cv2.pyrUp(G1)
  • G1 = L1 + cv2.pyrUp(G2)
  • G2 = L2 + cv2.pyrUp(G3)

上述關系是通過數(shù)學運算推導得到的。例如,已知L0=G0-cv2.pyrUp(G1),將表達式右側的cv2.pyrUp(G1)移到左側,就得到了表達式G0 = L0 + cv2.pyrUp(G1)。除此之外,G1和G2都可以通過拉普拉斯金字塔的構造表達式得到。如之前介紹的,拉普拉斯金字塔的目的就是為了恢復高分辨率的圖像。

# 拉普拉斯金字塔構建
G0 = cv2.imread("./resource/opencv/image/lena.jpg")
cv2.imshow("input image",G0)
G1=cv2.pyrDown(G0)
G2=cv2.pyrDown(G1)
G3=cv2.pyrDown(G2)
G4=cv2.pyrDown(G3)
L0 = cv2.subtract(G0,cv2.pyrUp(G1))
L1 = cv2.subtract(G1,cv2.pyrUp(G2))
L2 = cv2.subtract(G2,cv2.pyrUp(G3))
L3 = cv2.subtract(G3,cv2.pyrUp(G4))
cv2.imshow("G1",G1)
cv2.imshow("G2",G2)
cv2.imshow("G3",G3)
cv2.imshow("G4",G4)
cv2.waitKey(0)
cv2.destroyAllWindows()
import numpy as np
import cv2

# 拉普拉斯金字塔是由高斯金字塔計數(shù)得到,公式如下
# Li = Gi - PyrUP(PyrDown(Gi))
 
# 拉普拉斯金字塔圖像看起來像是邊界圖,其中很多像素都是0,常被用在圖像壓縮中。

import cv2 as cv
 
if __name__ == '__main__':
    img = cv.imread("./resource/opencv/image/lena.jpg")
 
    down1 = cv.pyrDown(img)
    res = img - cv.pyrUp(down1)
 
    down2 = cv.pyrDown(down1)
    res2 = down1 - cv.pyrUp(down2)
 
    cv.imshow("img", img)
    cv.imshow("res", res)
    cv.imshow("res2", res2)
 
    cv.waitKey(0)
    cv.destroyAllWindows()

Python-OpenCV中的圖像處理-圖像金字塔,OpenCV Python,python,opencv,圖像處理

金字塔圖像融合

import numpy as np
import cv2
import sys

# 實現(xiàn)上述效果的步驟如下:
# 1. 讀入兩幅圖像,蘋果和橘子
# 2. 構建蘋果和橘子的高斯金字塔( 6 層)
# 3. 根據(jù)高斯金字塔計算拉普拉斯金字塔
# 4. 在拉普拉斯的每一層進行圖像融合(蘋果的左邊與橘子的右邊融合)
# 5. 根據(jù)融合后的圖像金字塔重建原始圖像。

A = cv2.imread('./resource/opencv/image/apple.jpg')
B = cv2.imread('./resource/opencv/image/orange.jpg')
print(A.shape)
print(B.shape)
# 生成高斯金字塔
G = A.copy()
gpA = [G]
for i in range(5):
    G = cv2.pyrDown(G)
    gpA.append(G)
    
G = B.copy()
gpB = [G]
for i in range(5):
    G = cv2.pyrDown(G)
    gpB.append(G)
# 產(chǎn)生Laplacian金字塔
lpA = [gpA[5]]
for i in range(5,0,-1):
    GE = cv2.pyrUp(gpA[i])
    L = cv2.subtract(gpA[i-1],GE)
    lpA.append(L)

lpB = [gpB[5]]
for i in range(5,0,-1):
    GE = cv2.pyrUp(gpB[i])
    L = cv2.subtract(gpB[i-1],GE)
    lpB.append(L)
# 合并
LS = []
for la,lb in zip(lpA,lpB):
    rows,cols,dpt = la.shape
    ls = np.hstack((la[:,0:cols//2], lb[:,cols//2:]))
    LS.append(ls)
# 重新構建圖像
ls_ = LS[0]
for i in range(1,6):
    ls_ = cv2.pyrUp(ls_)
    ls_ = cv2.add(ls_, LS[i])
# 連接
real = np.hstack((A[:,:cols//2],B[:,cols//2:]))
cv2.imshow("apple",A)
cv2.imshow("orange",B)
cv2.imshow("LS",ls_)
cv2.imshow("Real",real)
cv2.waitKey()
cv2.destroyAllWindows()

Python-OpenCV中的圖像處理-圖像金字塔,OpenCV Python,python,opencv,圖像處理文章來源地址http://www.zghlxwxcb.cn/news/detail-637599.html

到了這里,關于Python-OpenCV中的圖像處理-圖像金字塔的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Python-OpenCV中的圖像處理-圖像直方圖

    Python-OpenCV中的圖像處理-圖像直方圖

    通過直方圖你可以對整幅圖像的灰度分布有一個整體的了解。直方圖的 x 軸是灰度值( 0 到 255), y 軸是圖片中具有同一個灰度的點的數(shù)目。 BINS:上面的直方圖顯示了每個灰度值對應的像素數(shù)。如果像素值為 0到255,你就需要 256 個數(shù)來顯示上面的直方圖。但是,如果你不需

    2024年02月12日
    瀏覽(31)
  • Python-OpenCV中的圖像處理-邊緣檢測

    Python-OpenCV中的圖像處理-邊緣檢測

    Canny 邊緣檢測是一種非常流行的邊緣檢測算法,是 John F.Canny 在 1986 年提出的。它是一個有很多步構成的算法:噪聲去除、計算圖像梯度、非極大值抑制、滯后閥值等。 Canny(image: Mat, threshold1, threshold2, edges=…, apertureSize=…, L2gradient=…) 在 OpenCV 中只需要一個函數(shù): cv2.Canny(),

    2024年02月13日
    瀏覽(35)
  • Python-OpenCV中的圖像處理-霍夫變換

    Python-OpenCV中的圖像處理-霍夫變換

    霍夫(Hough)變換在檢測各種形狀的技術中非常流行,如果要檢測的形狀可以用數(shù)學表達式描述,就可以是使用霍夫變換檢測它。即使要檢測的形狀存在一點破壞或者扭曲也是可以使用。 Hough直線變換,可以檢測一張圖像中的直線 cv2.HoughLines(image, rho, theta, threshold) return:返回值

    2024年02月13日
    瀏覽(124)
  • Python-OpenCV中的圖像處理-幾何變換

    Python-OpenCV中的圖像處理-幾何變換

    對圖像進行各種幾個變換,例如移動,旋轉,仿射變換等。 cv2.resize() cv2.INTER_AREA v2.INTER_CUBIC v2.INTER_LINEAR res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) 或 height, width = img.shape[:2] res = cv2.resize(img, (2 width, 2 height), interpolation=cv2.INTER_CUBIC) OpenCV提供了使用函數(shù)cv2.warpAffine()實

    2024年02月13日
    瀏覽(97)
  • Python-OpenCV中的圖像處理-物體跟蹤

    Python-OpenCV中的圖像處理-物體跟蹤

    現(xiàn)在我們知道怎樣將一幅圖像從 BGR 轉換到 HSV 了,我們可以利用這一點來提取帶有某個特定顏色的物體。在 HSV 顏色空間中要比在 BGR 空間中更容易表示一個特定顏色。在我們的程序中,我們要提取的是一個藍色的物體。下面就是就是我們要做的幾步: ? 從視頻中獲取每一幀

    2024年02月13日
    瀏覽(22)
  • Python-OpenCV中的圖像處理-顏色空間轉換

    Python-OpenCV中的圖像處理-顏色空間轉換

    在 OpenCV 中有超過 150 中進行顏色空間轉換的方法。但是你以后就會 發(fā)現(xiàn)我們經(jīng)常用到的也就兩種: BGR G r a y 和 B G R Gray 和 BGR G r a y 和 BGR HSV。 注意:在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范圍是 [0, 179],S(飽和度)的取值范圍 [0, 255], V(亮度)的取值范圍 [0,

    2024年02月13日
    瀏覽(25)
  • Python-OpenCV中的圖像處理-直方圖

    Python-OpenCV中的圖像處理-直方圖

    通過直方圖你可以對整幅圖像的灰度分布有一個整體的了解。直方圖的 x 軸是灰度值( 0 到 255), y 軸是圖片中具有同一個灰度的點的數(shù)目。 BINS:上面的直方圖顯示了每個灰度值對應的像素數(shù)。如果像素值為 0到255,你就需要 256 個數(shù)來顯示上面的直方圖。但是,如果你不需

    2024年02月13日
    瀏覽(29)
  • Python-OpenCV中的圖像處理-形態(tài)學轉換

    Python-OpenCV中的圖像處理-形態(tài)學轉換

    形態(tài)學操作:腐蝕,膨脹,開運算,閉運算,形態(tài)學梯度,禮帽,黑帽等 主要涉及函數(shù):cv2.erode(), cv2.dilate(), cv2.morphologyEx() 原理:形態(tài)學操作是根據(jù)圖像形狀進行的簡單操作。一般情況下對二值化圖像進行的操作。需要輸入兩個參數(shù),一個是原始圖像,第二個被稱為結構化

    2024年02月13日
    瀏覽(24)
  • Python-OpenCV中的圖像處理-傅里葉變換

    Python-OpenCV中的圖像處理-傅里葉變換

    傅里葉變換經(jīng)常被用來分析不同濾波器的頻率特性。我們可以使用 2D 離散傅里葉變換 (DFT) 分析圖像的頻域特性。實現(xiàn) DFT 的一個快速算法被稱為快速傅里葉變換( FFT)。 對于一個正弦信號:x (t) = A sin (2πft), 它的頻率為 f,如果把這個信號轉到它的頻域表示,我們會在頻率

    2024年02月12日
    瀏覽(22)
  • Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月13日
    瀏覽(104)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包