6您炉、頻率域?yàn)V波


1柒爵、基礎(chǔ)

  • 卷積定理
    f(x,y)★h(h,y)\Leftrightarrow H(u,v)F(u,v)
    f(x,y)h(h,y) \Leftrightarrow H(u,v)*F(u,v)

  • 折疊誤差補(bǔ)零

當(dāng)處理DFT時(shí),圖像及其變換是周期的赚爵。在周期接近函數(shù)非零部分的持續(xù)周期時(shí)棉胀,對(duì)周期函數(shù)進(jìn)行卷積會(huì)引起相鄰周期的串?dāng)_法瑟。
這種稱(chēng)為 折疊誤差 的串?dāng)_可通過(guò)補(bǔ)零方法來(lái)避免。

假設(shè)函數(shù) f(x,y) 和 h(x,y) 的大小分別為 A x B 和 C x D唁奢。通過(guò)對(duì) f 和 g 補(bǔ)零霎挟,構(gòu)造兩個(gè)大小均為 P x Q 的擴(kuò)展函數(shù)。
按如下方式進(jìn)行選擇可以避免折疊誤差:

P \ge A+C-1,\\Q \ge B+D-1

下面 paddedsize 的函數(shù)可以滿足上面等式的 P 和 Q 的最小偶數(shù)值麻掸。

function PQ = paddedsize(AB, CD, PARAM)
if nargin == 1
    PQ = 2*AB;
elseif nargin == 2 && -ischar(CD)
    PQ = AB + CD - 1;
    PQ = 2 * ceil(PQ / 2);
elseif nargin == 2
    m = max(AB);
    P = 2^nextpow2(2*m);
    PQ = [P, P];
elseif (nargin == 3) && strcmp(PARAM, 'pwr2')
    m = max([AB CD]);
    P = 2^nextpow2(2*m);
    PQ = [P, P];
else
    error('Wrong number of inputs.')
end  

示例

[f, revertcalss] = tofloat(f);
sig = 10;
PQ = paddedsize(size(f));
Fp = fft2(f, PQ(1), PQ(2));
Hp = lpfilter('gaussian', PQ(1), PQ(2), 2*sig); %濾波器大小是未填充時(shí)的兩倍
Gp = Hp .* Fp;
gp = ifft2(Gp);
gpc = gp(1:size(f, 1), 1:size(f, 2));
gpc = revertcalss(gpc);
imshow(gp)



2酥夭、DFT 濾波的基本步驟

1、使用函數(shù) tofloat 把輸入圖像轉(zhuǎn)換為浮點(diǎn)圖像:

[f, revertclass] = tofloat(f);

2脊奋、使用函數(shù) paddedsize 獲得填充參數(shù):

PQ = paddedsize(size(f));

3熬北、得到有填充圖像的傅里葉變換:

F = fft2(f, PQ(1), PQ(2));

4、生成一個(gè)大小為 PQ(1) * PQ(2) 的濾波器函數(shù)诚隙。如果它是居中的讶隐,使用前要令 H = ifftshift(H)。
5久又、使用濾波器乘以該變換:

G = H .* F;

6巫延、獲得G的IFFT:

g = ifft2(G);

7、將左上部的矩形修剪為原始大械叵:

g = g(1:size(f, 1), 1:size(f, 2));

8炉峰、需要時(shí),將濾波后的圖像轉(zhuǎn)換為輸入圖像的類(lèi):

g = revertclass(g);
  • 用于頻率域?yàn)V波的M函數(shù)
function g = dftfilt(f, H, classout)
[f, revertcalss] = tofloat(f);

F = fft2(f, size(H, 1), size(H, 2))
g = ifft2(H .* F);
g = g(1:size(f, 1), 1:size(f, 2));

if nargin == 2 || strcmp(classout, 'original')
    g = revertcalss(g);
elseif strcmp(classout, 'fltpoint')
    return
else
    error('Undefined class fot the output image.')
end



3犯建、從空間濾波器獲得頻域?yàn)V波器

通常當(dāng)濾波器較小時(shí)讲冠,在計(jì)算上空間濾波要比頻率域?yàn)V波更有效率。
當(dāng)濾波器大約有 32 個(gè)或更多元素時(shí)适瓦,使用 FFT 算法的濾波處理要比空間實(shí)現(xiàn)快竿开。

函數(shù) freqz2 可以將空間濾波器轉(zhuǎn)換為頻率域?yàn)V波器

H = freqz2(h, R, C)

示例

h = fspecial('sobel')'
freqz2(h)

% 頻率域?yàn)V波器
PQ = paddedsize(size(f));
H = freqz2(h, PQ(1), PQ(2));
H1 = ifftshift(H)

函數(shù) dftfilt 用于處理頻率域?yàn)V波

gf = dftfilt(f, H1);



4、在頻率域中直接生成濾波器

  • 創(chuàng)建用于實(shí)現(xiàn)頻率域?yàn)V波器的網(wǎng)格數(shù)組
function [U, V] = dftuv(M, N)
u = single(0:(M - 1));
v = single(0:(N - 1));

idx = find(u > M/2);
u(idx) = u(idx) - M;
idy = find(v > N/2);
v(idy) = v(idy) - N;

[V, U] = meshgrid(v, u);

% ----------------------- %
[U, V] = dftuv(8, 5);
DSQ = hypot(U, V)
  • 低通(平滑)頻率域?yàn)V波器

    • 理想低通濾波器(ILPF)
      H(u, v)=\begin{cases} 1,D(u,v)\le D_0\\ 0,D(u,v)\gt D_0 \end{cases}

    • 巴特沃斯低通濾波器(BLPF)
      H(u,v)=\frac{1}{1+[D(u,v)/D_0]^{2n}}

    • 高斯低通濾波器
      H(u,v)=e^{-D^2(u,v)/2D^2_0}

示例玻熙,對(duì)圖像 f 應(yīng)用一個(gè)高斯低通濾波器否彩,其中 D0 為所填充圖像寬度的 5%。

[f, revertclass] = tofloat(f);
PQ = paddedsize(size(f));
[U, V] = dftuv(PQ(1), PQ(2));
D = hypot(U, V);
D0 = 0.05 * PQ(2);
F = fft2(f, PQ(1), PQ(2));
H = exp(-(D .^ 2) / (2 * (D0^2)));
g = dftfilt(f, H);
g = revertclass(g)
  • 低通濾波器整合函數(shù)
function H = lpfilter(type, M, N, D0, n)
[U, V] = dftuv(M, N);
D = hypot(U, V);

switch type
case 'ideal'
    H = single(D <= D0);
case 'btw'
    if nargin == 4
        n = 1;
    end
    H = 1 ./ (1 + (D./D0) .^ (2*n));
case 'gaussian'
    H = exp(-(D.^2) ./ (2*(D0^2)));
otherwise
    error('Unknown filter type.')
end



5嗦随、繪制線框圖和表面圖

繪制二維函數(shù)的最簡(jiǎn)單方法是使用函數(shù) mesh

mesh(H(1:k:end, 1:k:end))

默認(rèn)繪出彩色網(wǎng)格圖命令為

colormap([0 0 0])

關(guān)閉網(wǎng)格和坐標(biāo)軸命令

grid off
axis off

觀察點(diǎn)由函數(shù) view 控制

view(az, el) %az,el 代表方位角和仰角
view(3) %默認(rèn)觀察點(diǎn)

示例列荔,繪制一個(gè)高斯低通濾波器

H = fftshift(test2('gaussian', 500, 500, 50));
mesh(double(H(1:10:500, 1:10:500)))
axis tight
colormap([0 0 0])
untitled.jpg
  • 表面圖
surf(H)



6、高通(銳化)頻率域?yàn)V波器

  • 理想高通濾波器(IHPF)
    H(u, v)=\begin{cases} 0,D(u,v)\le D_0\\ 1,D(u,v)\gt D_0\\ \end{cases}

  • 巴特沃斯高通濾波器(BHPF)
    H(u,v)=\frac{1}{1+[D_0/D(u,v)]^{2n}}

  • 高斯高通濾波器
    H(u,v)=1 - e^{-D^2(u,v)/2D^2_0}

基于 lpfilter 構(gòu)建一個(gè)高通濾波器函數(shù)

function H = hpfilter(type, M, N, D0, n)
if nargin == 4
    n = 1;
end

H1p = lpfilter(type, M, N, D0, n);
H = 1 - H1p;

% ---------------------------% 
H = fftshift(hpfilter('ideal', 500, 500, 50));

高頻強(qiáng)調(diào)濾波

高通濾波器偏離了直流項(xiàng)枚尼,將圖像的平均值降低為0.補(bǔ)償方法之一是給高通濾波器加上一個(gè)偏移量贴浙。把偏移量與將濾波器乘以一個(gè)大于1的常數(shù)結(jié)合起來(lái)的方法就稱(chēng)為 高頻強(qiáng)調(diào)濾波。

H_{HFE}(u, v)=a + bH_{HP}(u, v)

示例署恍,聯(lián)合使用高頻強(qiáng)調(diào)濾波和直方圖均衡

PQ = paddedsize(size(f));
D0 = 0.05 * PQ(1);
HBW = hpfilter('btw', PQ(1), PQ(2), D0, 2);
H = 0.5 + 2*HBW;
gbw = dftfilt(f, HBW, 'fltpoint');
gbw = gscale(gbw);
ghf = dftfilt(f, H, 'fltpoint');
ghf = gscale(ghf);
ghe = histeq(ghf, 256);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末崎溃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盯质,更是在濱河造成了極大的恐慌袁串,老刑警劉巖概而,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異囱修,居然都是意外死亡赎瑰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)破镰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)餐曼,“玉大人,你說(shuō)我怎么就攤上這事啤咽〗荆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵宇整,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我芋膘,道長(zhǎng)鳞青,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任为朋,我火速辦了婚禮臂拓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘习寸。我一直安慰自己胶惰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布霞溪。 她就那樣靜靜地躺著孵滞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸯匹。 梳的紋絲不亂的頭發(fā)上坊饶,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音殴蓬,去河邊找鬼匿级。 笑死,一個(gè)胖子當(dāng)著我的面吹牛染厅,可吹牛的內(nèi)容都是我干的痘绎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼肖粮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼孤页!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起尿赚,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤散庶,失蹤者是張志新(化名)和其女友劉穎蕉堰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體悲龟,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屋讶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了须教。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皿渗。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖轻腺,靈堂內(nèi)的尸體忽然破棺而出乐疆,到底是詐尸還是另有隱情,我是刑警寧澤贬养,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布挤土,位于F島的核電站,受9級(jí)特大地震影響误算,放射性物質(zhì)發(fā)生泄漏仰美。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一儿礼、第九天 我趴在偏房一處隱蔽的房頂上張望咖杂。 院中可真熱鬧,春花似錦蚊夫、人聲如沸诉字。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)壤圃。三九已至,卻和暖如春屈扎,著一層夾襖步出監(jiān)牢的瞬間埃唯,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工鹰晨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留墨叛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓模蜡,卻偏偏與公主長(zhǎng)得像漠趁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子忍疾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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