圖像金字塔

圖像金字塔是圖像處理和計(jì)算機(jī)視覺中常用到的概念嵌巷,常常用于多尺度處理領(lǐng)域(multiscale processing)重窟,尤其早年的圖像匹配、識(shí)別等算法中都用到了圖像金字塔享郊。

高斯金字塔(Gaussian pyramid)

下圖為高斯金字塔的示意圖览祖,金字塔的底層為原始圖像,每向上一層則是通過高斯濾波和1/2采樣得到(去掉偶數(shù)行和列)炊琉。


高斯金字塔

我們可以使用如下Matlab代碼來進(jìn)行得到高斯金字塔:

function [ pyr ] = gaussian_pyramid( I,nlev )
%GAUSSIAN_PYRAMID Summary of this function goes here
%   Detailed explanation goes here
pyr = cell(nlev,1);
pyr{1} = I;

filter = fspecial('gaussian');

for i=2:nlev
    % gaussian filter
    I = imfilter(I,filter,'symmetric');
    % downsample
    I = I(1:2:end,1:2:end);
    pyr{i} = I;
end
end

下圖就是生成的金字塔圖像


金字塔圖像

高斯濾波器可以看做一個(gè)低通濾波器展蒂,那么每經(jīng)過一次的高斯濾波,圖像中僅能夠保留某個(gè)頻率值以下的頻率部分苔咪,所以高斯金字塔也可以看做一個(gè)低通金字塔(每一級只保留某個(gè)頻率以下的成分)锰悼。

拉普拉斯金字塔(Laplacian pyramid)

在進(jìn)行高斯金字塔運(yùn)算時(shí),由于不斷的進(jìn)行高斯濾波和下采樣团赏,我們丟失了很多高頻信號箕般,而拉普拉斯金字塔的目的就是保存這些高頻信號,保存這些高頻信號所采用的方式就是保存差分圖像舔清。比如丝里,拉普拉斯金字塔的第0層,就是原始圖像和原始圖像下采樣(Reduce)后再次上采樣(Expand)的圖像的差值鸠踪。

function pyr = laplacian_pyramid(I,nlev)
r = size(I,1);
c = size(I,2);
if ~exist('nlev')
    % compute the highest possible pyramid    
    nlev = floor(log(min(r,c)) / log(2));
end
% recursively build pyramid
pyr = cell(nlev,1);
filter = pyramid_filter;
J = I;
for l = 1:nlev - 1
    % apply low pass filter, and downsample
    I = downsample(J,filter);
    odd = 2*size(I) - size(J);  % for each dimension, check if the upsampled version has to be odd
    % in each level, store difference between image and upsampled low pass version
    pyr{l} = J - upsample(I,odd,filter);
    J = I; % continue with low pass image
end
pyr{nlev} = J; % the coarest level contains the residual low pass image
%下采樣函數(shù)
function R = downsample(I, filter)
border_mode = 'symmetric';
% low pass, convolve with separable filter
R = imfilter(I,filter,border_mode);     %horizontal
R = imfilter(R,filter',border_mode);    %vertical
% decimate
r = size(I,1);
c = size(I,2);
R = R(1:2:r, 1:2:c, :);  
%上采樣函數(shù)
function R = upsample(I,odd,filter)

% increase resolution
I = padarray(I,[1 1 0],'replicate'); % pad the image with a 1-pixel border
r = 2*size(I,1);
c = 2*size(I,2);
k = size(I,3);
R = zeros(r,c,k);
R(1:2:r, 1:2:c, :) = 4*double(I); % increase size 2 times; the padding is now 2 pixels wide丙者,注意這里要乘以4!

% interpolate, convolve with separable filter
R = imfilter(R,filter);     %horizontal
R = imfilter(R,filter');    %vertical

% remove the border
R = R(3:r - 2 - odd(1), 3:c - 2 - odd(2), :);
%產(chǎn)生拉普拉斯濾波器
function f = pyramid_filter()
f = [.05, .25, .4, .25, .05];  % original [Burt and Adelson, 1983]
%f = [.0625, .25, .375, .25, .0625];  % binom-5
f = f'*f;
end

通過上面的代碼营密,我們可以得到拉普拉斯金字塔如下所示械媒。

拉普拉斯金字塔

由于拉普拉斯金字塔保留了高頻信號,那么我們可以用它來重建原始圖像。

function R = reconstruct_laplacian_pyramid(pyr)
r = size(pyr{1},1);
c = size(pyr{1},2);
nlev = length(pyr);
% start with low pass residual
R = pyr{nlev};
filter = pyramid_filter;
for l = nlev - 1 : -1 : 1
    % upsample, and add to current level
    odd = 2*size(R) - size(pyr{l});
    R = pyr{l} + upsample(R,odd,filter);
    %figure
    %imshow(R,[]);
    %imwrite(mat2gray(R),[num2str(l),'.jpg']);
end
重建的圖像

需要注意的地方

  • 為什么在處理高斯金字塔的時(shí)候需要采用濾波呢纷捞,直接下采樣不可以嗎痢虹?
    如果把圖像看做頻率信號的話,直接進(jìn)行下采樣則會(huì)出現(xiàn)采樣不足的情況主儡,消除這種情況的方法是采用低通濾波器(高斯濾波器)對圖像進(jìn)行濾波奖唯,將采樣不足的高頻信號過濾掉,這樣在進(jìn)行下采樣的時(shí)候就保證了不出現(xiàn)采樣不足的情況糜值。

  • 一般在圖像處理中丰捷,將上面Matlab實(shí)現(xiàn)的下采樣函數(shù)(包括高斯濾波和圖像尺寸減半)這一部分叫做Reduce,將上面Matlab實(shí)現(xiàn)的上采樣函數(shù)(包括高斯濾波和圖像尺寸增加一倍)這部分叫做Expand寂汇,如果用數(shù)學(xué)方式表達(dá)的話病往,Expand函數(shù)如下:

注意前面需要乘以4。

  • 拉普拉斯金字塔可以看做一個(gè)帶通濾波器骄瓣,在每一級都保留了圖像某個(gè)頻率值附近的成分停巷。(這一點(diǎn)與高斯金字塔不同,高斯金字塔是低通金字塔)

  • 兩個(gè)低通濾波器的差值就構(gòu)成了一個(gè)帶通濾波器榕栏。

兩個(gè)低通之差畔勤,構(gòu)成帶通濾波器

Python實(shí)現(xiàn)

下面是高斯金字塔和拉普拉斯金字塔的Opencv-Python實(shí)現(xiàn)

import cv2
import numpy as np

def gaussian_pyr(img,lev):
    img = img.astype(np.float)
    g_pyr = [img]
    cur_g = img;
    for index in range(lev):
        cur_g = cv2.pyrDown(cur_g)
        g_pyr.append(cur_g)
    return g_pyr


def laplacian_pyr(img,lev):
    img = img.astype(np.float)
    g_pyr = gaussian_pyr(img,lev)
    l_pyr = []
    for index in range(lev):
        cur_g = g_pyr[index]
        next_g = cv2.pyrUp(g_pyr[index+1])
        cur_l = cv2.subtract(cur_g,next_g)
        l_pyr.append(cur_l)
    l_pyr.append(g_pyr[-1])
    return l_pyr

def lpyr_recons(l_pyr):
    lev = len(l_pyr)
    cur_l = l_pyr[-1]
    for index in range(lev-2,-1,-1):
        print(index)
        cur_l = cv2.pyrUp(cur_l)
        next_l = l_pyr[index]
        cur_l = cur_l + next_l
    return cur_l
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扒磁,隨后出現(xiàn)的幾起案子庆揪,更是在濱河造成了極大的恐慌,老刑警劉巖渗磅,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嚷硫,死亡現(xiàn)場離奇詭異,居然都是意外死亡始鱼,警方通過查閱死者的電腦和手機(jī)仔掸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來医清,“玉大人起暮,你說我怎么就攤上這事』崂樱” “怎么了负懦?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柏腻。 經(jīng)常有香客問我纸厉,道長,這世上最難降的妖魔是什么五嫂? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任颗品,我火速辦了婚禮肯尺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躯枢。我一直安慰自己则吟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布锄蹂。 她就那樣靜靜地躺著氓仲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪得糜。 梳的紋絲不亂的頭發(fā)上敬扛,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音掀亩,去河邊找鬼舔哪。 笑死欢顷,一個(gè)胖子當(dāng)著我的面吹牛槽棍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抬驴,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼炼七,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了布持?” 一聲冷哼從身側(cè)響起豌拙,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎题暖,沒想到半個(gè)月后按傅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胧卤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年唯绍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枝誊。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡况芒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叶撒,到底是詐尸還是另有隱情绝骚,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布祠够,位于F島的核電站压汪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏古瓤。R本人自食惡果不足惜止剖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滴须,春花似錦舌狗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至魔市,卻和暖如春主届,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背待德。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工君丁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人将宪。 一個(gè)月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓绘闷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親较坛。 傳聞我的和親對象是個(gè)殘疾皇子印蔗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自:http://www.cnblogs.com/silence-hust/p/4193208.html關(guān)于用拉...
    Mordekaiser閱讀 3,168評論 1 2
  • 圖像金字塔 圖像金字塔是圖像中多尺寸表達(dá)的一種,最主要的是用于圖像的分割丑勤。是一種以多分辨率來解釋圖像的有效但概念簡...
    傻傻小蘿卜閱讀 623評論 0 0
  • 圖像金字塔 圖像金字塔在圖像處理領(lǐng)域應(yīng)用比較多华嘹,上課的時(shí)候只記得老師講的一個(gè)大概的概念:圖像金字塔和普通金字塔一樣...
    Mordekaiser閱讀 1,497評論 0 0
  • 有些情況下,我們需要處理源自同一張圖像的不同分辨率的圖像集合法竞。這些不同分辨率的圖像組成的集合稱為圖像金字塔耙厚。 圖像...
    Kangel_Zenn閱讀 9,081評論 0 6
  • 一般來說,我們都是處理固定大小的圖片岔霸,但是有時(shí)候也會(huì)需要處理一個(gè)圖像的不同分辨率的圖片薛躬。比如在搜索圖像里的某些元素...
    xxxss閱讀 2,812評論 0 47