天天看點

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

第四章 圖像變換 附實驗

前言

圖像變換:為達到某種目的将原始圖像變換映射到另一個空間上,使得圖像的某些特征得以突出,以便于後面的處理和識别。

4.1連續傅裡葉變換

一維變換

用傅裡葉變換表示的函數特征完全可以通過傅裡葉反變換來重建,而不會丢失任何資訊。若把一個一維輸入信号做一維傅裡葉變換,該信号就被變換到頻域上,即得到了構成該輸入信号的頻譜,頻譜反映了該輸入信号由哪些頻率構成。

函數f(x)的一維連續傅裡葉變換是,及其傅裡葉變換F(x)的反變換是:

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗
  1. 其中f(x)與F(x)是一個傅裡葉變換對,并且對于任意一個f(x)它的F(x)是唯一的,反之亦然
  2. f(x)是實函數,而F(x)是複函數,因為有 j2=-1。
  3. x稱為時域變量,u稱為頻域變量。

F(u)的實部、虛部、振幅、能量和相位分别表示如下:

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

注意之後就會用R(u)代替實部,I(u)帶圖虛部。

歐拉公式

上述過程中R(u)與I(u)的得到用到歐拉公式

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

空間頻率

空間頻率是指在一定方向上的機關空間(距離)波動的周期數。它不僅具有大小而且具有方向,是一個矢量。一幅圖像有明暗和色彩的差别,是一種光的強度和顔色按空間的分布。這種空間分布的特征可以用空間頻率來表示。

引進空間頻率這一概念的目的:

  1. 研究輸入圖像由哪些空間頻率成分構成。
  2. 在空間頻率域中進行各種處理。

相對于空間頻率域,有時也把圖像本身叫做空間域。

空間頻率可以表示機關長度上的正弦波形變化的重複次數。用空間頻率為u, v的二維平面(空間頻率域)來表示(分别對應于x軸方向和y軸方向)。

推廣到二維

設函數f(x,y)是連續可積,且F(u,v)可積,則存在如下傅裡葉變換對:

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗
數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

存在限制

傅裡葉變換的f(x)為連續(模拟)信号,而計算機處理的是數字信号(圖像資料)。

數學上采用無窮大概念,而計算機隻能進行有限次計算。

4.2離散傅裡葉變換DFT

一維離散傅裡葉變換

離散傅裡葉變換是傅裡葉變換在時間域和空間域上都呈離散形式,實際上是對變換兩端(在時間域和空間域)的原本無限長的序列進行采樣,是其主值序列。

一維離散傅裡葉變換對:

其中x,u=0,1,2,…, N-1

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗
數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

推廣到二維

2-D DFT 與 2-D IDFT。

其中u, x=0, 1, 2, …, M-1;v, y=0, 1, 2, …, N-1;

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

4.3快速傅裡葉變換FFT

變換過程

快速傅裡葉變換是離散傅裡葉變換的一種。

快速傅裡葉變換

在分析離散傅裡葉變換中的多餘運算的基礎上

,進而在消除這些重複工作的思想指導下得到的,是以在運算中大大節省了工作量, 達到了快速的目的。

對于一個有限長序列,它的(離散)傅裡葉變換由下式表示:

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

其傅裡葉變換轉換為

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

實際的快速傅裡葉變換過程比較麻煩,這裡就不細寫了。

對于原本的傅裡葉變換可以看出要得到每一個頻率分量,需進行N次乘法和 (N-1)次加法運算。要完成整個變換需要N2次乘法和N(N-1)次加法運算,計算複雜度很高。

庫利和圖基于1965年發表了一篇論文,提出了快速傅裡葉變換算法。該算法把原始的N點序列依次分解成一系列短序列,求出這些短序列的離散傅裡葉變換,以此來減少乘法運算量。

傅裡葉變換的計算量為N2次複數乘法運算,快速傅裡葉變換的計算量為N/2 * log2N次複數乘法運算。

快速傅裡葉變換對一維離散傅裡葉變換的直接實作的計算優勢:

C(N)=N2 / (N/2 * log2N) = N / log2N

通常假設N=2n,是以可以用n來表示:C(N)=2n / n。

4.4傅裡葉變換的性質

可分離性

一個二維傅裡葉變換可分解為兩步進行,其中每一步都是一個一維傅裡葉變換。

先對f(x, y)按行進行傅裡葉變換得到F(x, v),再對F(x, v)按列進行傅裡葉變換,便可得到f(x, y)的傅裡葉變換結果。

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

平移性
數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

f(x,y)與一個指數相乘 等于 将變換後的頻率域中心移到新的位置,同理 F(x,y)與一個指數相乘 等于 将其反變換後的空間域中心移到新的位置。

f(x,y)的平移将不改變頻譜的幅值。

移中性

當u0=M/2,v0=N/2時

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

如圖,在平移前,坐标原點在視窗的左上角,視窗四角分布低頻成分。經過移中之後,坐标原點移至頻譜圖視窗中央,因而圍繞坐标原點的是低頻,向外是高頻。

由圖可知,圖像的能量主要集中在低頻去,相對高頻的位置的幅度值很小,可能接近于0,之後進行傅裡葉變換之後都要進行移中。

周期性與共轭對稱性
數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

旋轉性質

當變量x,y,u,v都用極坐标表示時:

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

上述表明,對f(x,y)旋轉一個角度θ0對應于F(u,v) 将其傅裡葉變換也旋轉相同的角度θ0。

卷積

設:f(x),g(x)是R上的兩個可積函數,作積分

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

可以證明,關于幾乎所有的實數x,上述積分是存在的。這樣,随着x的不同取值,這個積分就定義了一個新函數h(x),稱為函數f與g的卷積,記為h(x)=(f*g)(x)。

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

卷積定理表明兩個二維連續函數在空間域中的卷積可用求其相應的兩個傅裡葉變換乘積的逆變換而得。反之,在頻域中的卷積可用空間域中乘積的傅裡葉變換而得。

目的:與其在一個域中作不直覺的和難懂的卷積,不如在另外一個域中作乘法,可以達到相同的效果。

尺度變化

a * f(x,y) = a * F(u,v)

圖檔

如圖,在乘以e-1之後,圖像整體變暗。中央低頻成分代表圖像的平均亮度。

平均值

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

頻譜直流成分的 1/(MN)0.5 倍等于圖像平面的亮度平均值。

4.5圖像傅裡葉變換執行個體

例1

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

加噪圖存在明顯的顆粒噪聲,變換後的高頻成分增多。

例2

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗
數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗
  1. 從幅值譜圖像中得到的資訊比在相位譜圖像中得到的資訊多,但對幅值譜圖像重構後,即忽略相位資訊,将其設為常數,所得到的圖像與原始圖像相比,結果差别很大。
  2. 對相位譜圖像重構後,即忽略幅值資訊,将其設定為常數,可以從中看出圖像的基本輪廓。

4.6離散餘弦變換DCT

離散餘弦變換(Discrete Cosine Transform, DCT)是可分離的變換,其變換核為餘弦函數。在對語音信号、圖像信号的變換中,DCT變換被認為是一種準最佳變換。

定義

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

矩陣表示

數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗
數字圖像處理學習筆記4第四章 圖像變換 附實驗第四章 圖像變換 附實驗

離散餘弦變換具有很強的“能量集中”特性,能量主要集中在左上角處。

4.7課程實驗

實驗内容

(1)對圖像lena、cameraman和face進行傅裡葉變換,觀察圖像能量在頻譜圖中的分布情況。

(2)利用Matlab生成下列圖像,并對其進行旋轉30度、90度和120度,然後對他們分别進行傅裡葉變換。

(3)對圖像lena、cameraman和face用DCT變換進行圖像壓縮,舍掉的變換系數分别小于0.01、0.03、0.05,求經壓縮、解壓後的圖像。

實驗1

I1 =imread('face.jpg');I1=im2double(I1); 
I2 =imread('cameraman.tif');I2=im2double(I2); 
I3 =imread('lena.jpg');I3=im2double(I3); 

%求傅裡葉變換
I1f = fft2(I1);I2f = fft2(I2); I3f = fft2(I3);
I1f1 =abs(I1f);I2f1 = abs(I2f); I3f1 = abs(I3f);
I1f2 = fftshift(I1f1); I2f2 = fftshift (I2f1); I3f2 = fftshift(I3f1);
%顯示圖像
figure;
%原圖
subplot(3,3,1);
imshow(I1);
xlabel('原圖1 '); 

subplot(3,3,2);
imshow(I2);
xlabel('原圖2 '); 

subplot(3,3,3);
imshow(I3);
xlabel('原圖3 ');  

%快速傅裡葉變換的圖
subplot(3,3,4);
imshow(I1f,[5,30]);
xlabel('頻譜圖1');  

subplot(3,3,5);
imshow(I2f,[5,30]);
xlabel('頻譜圖2');

subplot(3,3,6);
imshow(I3f,[5,30]);
xlabel('頻譜圖3');

%傅裡葉變換頻譜中間零頻率的圖
subplot(3,3,7);
imshow(I1f2,[5,30]);
xlabel('中心移到零點的頻譜圖1');

subplot(3,3,8);
imshow(I2f2,[5,30]);
xlabel('中心移到零點的頻譜圖2');

subplot(3,3,9);
imshow(I3f2,[5,30]);
xlabel('中心移到零點的頻譜圖3');
           

實驗2

%構造原始圖像
I = zeros(256,256); 
I(28:228,108:148) = 1;
%旋轉圖像
I1=imrotate(I,30,'bilinear');
I2=imrotate(I,90,'bilinear');
I3=imrotate(I,120,'bilinear');
%傅裡葉變換
If=fft2(I);F=abs(If);If=fftshift(F);
I1f=fft2(I1);F=abs(I1f);I1f=fftshift(F);
I2f=fft2(I2);F=abs(I2f);I2f=fftshift(F);
I3f=fft2(I3);F=abs(I3f);I3f=fftshift(F);
%顯示圖像
subplot(2,4,1);imshow(I);xlabel('原圖 ');
subplot(2,4,2);imshow(I1);xlabel('旋轉30度 ');
subplot(2,4,3);imshow(I2);xlabel('旋轉90度');
subplot(2,4,4);imshow(I3);xlabel('旋轉120度');

subplot(2,4,5);imshow(If,[5,50]);=xlabel('原圖的像傅裡葉頻譜 ');
subplot(2,4,6);imshow(I1f,[5,50]);=xlabel('旋轉30度的傅裡葉圖譜 ');
subplot(2,4,7);imshow(I2f,[5,50]);=xlabel('旋轉90度的傅裡葉圖譜 ');
subplot(2,4,8);imshow(I3f,[5,50]);=xlabel('旋轉120度的傅裡葉圖譜 ');
           

實驗3

I =imread('cameraman.tif');
[M,N]=size(I);%M=512,N=512
I=im2double(I); 

%生成标準DCT變化中的矩陣(8x8)
n=8;[cc,rr]=meshgrid(0:n-1);
C=sqrt(2/n)*cos(pi*(2*cc+1).*rr/(2*n));
C(1,:)=C(1,:)/sqrt(2);

%光亮度量化表
a=[16 11 10 16 24 40 51 61;
    12 12 14 19 26 58 60 55;
    14 13 16 24 40 57 69 56;
    14 17 22 29 51 87 80 62;
    18 22 37 56 68 109 103 77;
    24 35 55 64 81 104 113 92;
    49 64 78 87 103 121 120 101;
    72 92 95 98 112 100 103 99 ];

%分塊做DCT變換(8x8) DCT變換公式 正變換Y=CIC'
for i=1:8:M
    for j=1:8:N
        P=I(i:i+7,j:j+7);
        K=C*P*C';
        I1(i:i+7,j:j+7)=K;
        K=K./a; %量化(按位除)
        K(abs(K)<0.05)=0;  %舍掉的變換系數分别小于0.01 0.03 0.05
        I2(i:i+7,j:j+7)=K;  
    end 
end

  %分塊做DCT反變換(8x8),逆變換 P=C'YC
for i=1:8:M
    for j=1:8:N
        P=I2(i:i+7,j:j+7).*a;%反量化
        K=C'*P*C;
        I3(i:i+7,j:j+7)=K;     
    end
end

subplot(2,2,1);imshow(I);xlabel('原圖 ');
subplot(2,2,2);imshow(I1);xlabel('DCT變換後的頻域圖像 ');
subplot(2,2,3);imshow(I2);xlabel('量化後的頻域圖像 ');
subplot(2,2,4);imshow(I3);xlabel('複原圖像 ');
           

繼續閱讀