高斯圖像金字塔
有沒有使用過PS軟體的小夥伴呀,裡面有一項模糊的功能就叫做高斯模糊,用高斯模糊就可以生成‘馬賽克’區域。本次要實作的高斯金字塔的原理就和PS的高斯模糊原理是相同的。
原理
在高斯金字塔中,最重要的就是高斯核。我們需要使用高斯核對原圖像做卷積處理。在這之後,進行一次原圖大小二分之一的下采樣,這樣就生成了一層高斯圖像。高層的高斯圖像對底層的圖像做上述操作即可。
高斯核: 将其了解成一個權值就可以了,使用高斯核提供的權值對原像素進行權重的操作。
卷積: 卷積(英語:Convolution)是通過兩個函數f 和g 生成第三個函數的一種數學算子,以本文為例,就是用像素點+高斯核=新像素點的操作步驟。
高斯核:
步驟
①、構造高斯卷積核。
②、進行卷積操作。
③、進行下采樣操作。
④、建立一個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
運作結果:
關于conv2卷積操作的使用方法,在系統中有寫,很詳細。關于高斯核的構造和使用,根據實際需求不同,也可以對它做出修改,其本質也是值得思考和琢磨。高斯金字塔對于實作拉普拉斯金字塔是必要的。因為後者是前者的內插補點金字塔。當然,直接采用高斯金字塔也可以實作圖像融合。