久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的圖像融合

 ly88 2023-09-07 發(fā)布于山西




圖像金字塔是一系列來源于同一張原始圖像、以金字塔形狀排列的分辨率逐步降低的圖像集合,。從底層圖像可以看清更多細節(jié),,從頂層圖像可以看到更多的輪廓特征。通常,,上層圖像的寬度和高度是相鄰的下層圖像的 1/2。

在計算高斯金字塔時,不斷進行高斯濾波和下采樣,,丟失了高頻信息。為了描述這些高頻信息,,將通過原圖像減去先縮小后放大的圖像的一系列差分圖像,,定義為拉普拉斯金字塔(Laplacian Pyramid)。


6.3 基于拉普拉斯金字塔的圖像融合

由于圖像噪聲,、光照,、曝光度、模型匹配誤差等因素,,圖像直接拼接合成會在圖像重疊區(qū)域的拼接處出現(xiàn)明顯的痕跡 ,。圖像融合的目的就是使兩幅圖像的重疊區(qū)域過渡自然且平滑,。

拉普拉斯金字塔將源圖像分解到不同的頻帶,越高頻的圖像信息越到上層,。在相同顯示尺寸下比較不同分辨率的拉普拉斯圖像,,可以發(fā)現(xiàn)不同尺度下關注的細節(jié)是不同的,低分辨率下關注的是較大尺度的基本紋理,,而高分辨率下關注的是更精細的紋理,。

因此,可以針對不同分解層的頻帶特征與細節(jié),,采用不同的融合算子以突出特定頻帶上特征與細節(jié),,也就可以將不同圖像的特征與細節(jié)融合在一起。

金字塔圖像融合過程,,是在不同尺度,、不同空間分辨率和不同分解層上分別進行的,也稱為多波段融合(Multi-band Blending),。多波段融合的思想,,是先對多幅圖像分別構建拉普拉斯金字塔,然后對同一層圖像(相同頻段)按一定規(guī)則融合,,對融合后的圖像金字塔重建得到融合圖像,。

在這里插入圖片描述

基于拉普拉斯金字塔的圖像融合的基本步驟為:
1、對左圖,、右圖分別構建高斯金字塔,;
2、對左圖,、右圖分別構建拉普拉斯金字塔,;
3、在每個尺度(分辨率)下,,根據(jù)當前尺度拼接左,、右圖的拉普拉斯圖像 ,得到拼接圖像的拉普拉斯金字塔,;
4,、由最低分辨率的高斯圖像生成最低分辨率的起始圖,通過拼接圖像的拉普拉斯金字塔,,逐層(逐個分辨率)重建拼接圖像,,直到得到最高分辨率的拼接圖像。


例程:1.88 拉普拉斯金字塔圖像融合

    # 1.88:拉普拉斯金字塔圖像融合
    img1 = cv2.imread("../images/buddha01.png")
    img2 = cv2.imread("../images/buddha03.png")
    img1 = cv2.resize(img1, (512, 512), interpolation=cv2.INTER_CUBIC)  # 將圖片大小調(diào)整到 2**levels 的整數(shù)倍
    img2 = cv2.resize(img2, (512, 512), interpolation=cv2.INTER_CUBIC)

    # 直接左右拼接圖像 (用于對比)
    rows, cols, channel = img1.shape
    stack = np.hstack((img1[:,:int(cols/2)], img2[:,int(cols/2):]))

    # 圖像向下取樣, 構造高斯金字塔: [原圖,,下取樣1次,,下取樣2次,下取樣3次,,下取樣4次]
    levels = 5  # 高斯金字塔層數(shù)
    gaussPyr1, gaussPyr2 = [img1], [img2]  # 原始圖像為高斯金字塔第 0 層, (512, 512)
    for i in range(1, levels):  # 高斯金字塔共 5 層: 0,1,2,3,4
        gaussPyr1.append(cv2.pyrDown(gaussPyr1[i-1]))  # 計算第 i 層高斯金字塔
        gaussPyr2.append(cv2.pyrDown(gaussPyr2[i-1]))

    # 圖像向上取樣, 構造拉普拉斯金字塔 [第1層殘差,,第2層殘差,,第3層殘差,第4層殘差]
    lapPyr1, lapPyr2 = [], []  # 從最頂層開始恢復
    for i in range(levels-1):  # 拉普拉斯金字塔有 4 層: 0,1,2,3
        lapPyr1.append(gaussPyr1[i] - cv2.pyrUp(gaussPyr1[i+1]))
        lapPyr2.append(gaussPyr2[i] - cv2.pyrUp(gaussPyr2[i+1]))

    # 拉普拉斯金字塔左右拼接
    lapStack = []
    for i in range(levels-1):  # 拉普拉斯金字塔共 4 層: 0,1,2,3
        rows, cols, channel = lapPyr1[i].shape
        splicing = np.hstack((lapPyr1[i][:, 0:int(cols/2)], lapPyr2[i][:, int(cols/2):]))
        lapStack.append(splicing)
        print("lapStack", i, lapStack[i].shape)

    # 由拼接后的Laplace金字塔恢復原圖像
    rows, cols, channel = gaussPyr1[-1].shape  # 高斯金字塔頂層 G4:(32,32)
    stackG4 = np.hstack((gaussPyr1[-1][:,:int(cols/2)], gaussPyr2[-1][:,int(cols/2):]))  # 拼接高斯金字塔頂層
    stackG3 = lapStack[3] + cv2.pyrUp(stackG4)  # stackG3:(64,64)
    stackG2 = lapStack[2] + cv2.pyrUp(stackG3)  # stackG2:(128,128)
    stackG1 = lapStack[1] + cv2.pyrUp(stackG2)  # stackG1:(256,256)
    stackG0 = lapStack[0] + cv2.pyrUp(stackG1)  # stackG0:(512,512)

    plt.figure(figsize=(9, 7))
    plt.subplot(221), plt.axis('off'), plt.title("BuddhaFace A")
    plt.imshow(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB))
    plt.subplot(222), plt.axis('off'), plt.title("BuddhaFace B")
    plt.imshow(cv2.cvtColor(img2, cv2.COLOR_BGR2RGB))
    plt.subplot(223), plt.axis('off'), plt.title("BuddhaFace stacked")
    plt.imshow(cv2.cvtColor(stack, cv2.COLOR_BGR2RGB))
    plt.subplot(224), plt.axis('off'), plt.title("Laplacian blended")
    plt.imshow(cv2.cvtColor(stackG0, cv2.COLOR_BGR2RGB))
    plt.tight_layout()
    plt.show()   1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950

程序說明:

左下圖是基于拉普拉斯金字塔的圖像融合,,右下圖是圖像直接進行拼接的結果,。直接拼接時,在左右拼接處可以看到非常明顯,、銳利的拼接縫,,稱為截斷現(xiàn)象(Seams)?;诶绽菇鹱炙膱D像拼接,,通過多頻帶融合,使兩幅圖像的重疊區(qū)域過渡自然且平滑,。

在這里插入圖片描述



(本節(jié)完)

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多