天天看點

【MATLAB圖像融合】[6]高斯圖像金字塔

高斯圖像金字塔

       有沒有使用過PS軟體的小夥伴呀,裡面有一項模糊的功能就叫做高斯模糊,用高斯模糊就可以生成‘馬賽克’區域。本次要實作的高斯金字塔的原理就和PS的高斯模糊原理是相同的。

原理

       在高斯金字塔中,最重要的就是高斯核。我們需要使用高斯核對原圖像做卷積處理。在這之後,進行一次原圖大小二分之一的下采樣,這樣就生成了一層高斯圖像。高層的高斯圖像對底層的圖像做上述操作即可。

       高斯核: 将其了解成一個權值就可以了,使用高斯核提供的權值對原像素進行權重的操作。

       卷積: 卷積(英語:Convolution)是通過兩個函數f 和g 生成第三個函數的一種數學算子,以本文為例,就是用像素點+高斯核=新像素點的操作步驟。

高斯核:

【MATLAB圖像融合】[6]高斯圖像金字塔

步驟

①、構造高斯卷積核。

②、進行卷積操作。

③、進行下采樣操作。

④、建立一個cell存入每一層的高斯圖像。

⑤、對新生成的圖像重複②~④步驟。

⑥、最終cell數組中存放了高斯金字塔。

MATLAB實作

clear;clc;

I=imread('leftcoff.PNG');
R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);                %取出R,G,B三個通道。

x=input('請輸入1~8之間的數字:');                 %依據圖像大小設定高斯層數。
for i=1:x
    R=fgaosi(R);G=fgaosi(G);B=fgaosi(B);
    y{i}=cat(3,R,G,B);                           %将三個通道拼接回RGB彩色圖像。
end
subplot(1,2,1);imshow(uint8(y{2}));title('2層高斯')
subplot(1,2,2);imshow(uint8(y{4}));title('4層高斯')

function y=fgaosi(x)
w=[1,4,6,4,1];
w=w'*w.*1/256;                                   %構造卷積核
temp=conv2(x,w,'same'); %help conv2              %進行卷積操作
y=imresize(temp,1/2);                            %進行下采樣操作
end 
           

運作結果:

【MATLAB圖像融合】[6]高斯圖像金字塔

       關于conv2卷積操作的使用方法,在系統中有寫,很詳細。關于高斯核的構造和使用,根據實際需求不同,也可以對它做出修改,其本質也是值得思考和琢磨。高斯金字塔對于實作拉普拉斯金字塔是必要的。因為後者是前者的內插補點金字塔。當然,直接采用高斯金字塔也可以實作圖像融合。

繼續閱讀