IDL(Interactive Data Language)是美國RSI公司開發的一種交互式數據可視化語言。它為科學數據的可視化及數學分析提供了一個完整的計算機環境。IDL許多特點使得它特別適用于圖像的處理和分析。
一、IDL語言的優點
1.面向矩陣
面向矩陣是IDL能夠大量提高編程速度的主要原因之一。在IDL中,可以用數組的變量名代表全數組。面向矩陣運算簡捷且不易出錯,省去對矩陣中每個元素逐個運算的循環語句,并且IDL集成了許多專門對矩陣處理運算的方法和函數。
2.集成多種函數
IDL集成了許多諸如平滑、濾波等函數,極大地簡化了圖像處理的過程。研究者在做圖像處理工作時,可以把主要精力放在核心算法上,而不是在實現普通函數上。
3.支持多種數據格式
IDL能夠處理任何有格式或無格式數據,它還支持通用文本及圖像數據,如JPEG,GIF,DXF,PNG,TIF等格式的數據。
4.適用于多種平臺
IDL適用目前主要的軟件平臺,如Unix,Microsoft Windows and Macintosh systems。
二、PCA變換算法的實現
這里介紹如何利用IDL實現圖像處理技術中的PCA變換,使用的衛星圖像來源于美國的“陸地衛星7”(Landsat-7),共用8個波段的數據。這里選取5、4、3波段和8波段(高分辨率全色圖像)參與下面的融合處理。
圖1 Landsant-7的5波段(左)和4波段(右)圖像
圖2 Landsant-7的3波段(左)和8波段(右)圖像
三、PCA變換
1.基本原理
PCA變換,也稱為主成分分析,是著眼于變量之間的相互關系,盡可能不丟失信息地用幾個綜合性指標匯集多個變量的測量值進行描述的方法,是一種最小均方誤差意義上的最優正交變換。對多光譜圖像,由于各波段的數據間存在相關的情況很多,通過采用主成分分析就可以把現有圖像中所含的大部分信息用假想的少數波段表示出來,也可以說減少了光譜維數。
這里介紹的PCA變換采用3、4、5波段的圖像,最后將獲得三幅主成分圖像。
PCA變換原理:
設3、4、5波段圖像分別為f1、f2、f3,三幅主成分圖像分別為pc1、pc2、pc3。
PCA變換式為:
pc1pc2pc3=A■*f1-e(f1)f2-e(f2)f3-e(f3)
這里e(f)為f的期望值向量,A為由原圖像向量f的協方差矩陣Cf的特征向量構成的變換矩陣,AT為A的轉置矩陣。若設Cf的特征值和其對應的特征向量為D和A,則
A=[A1,A2,A3]
特征向量A1、A2、A3的排序是按照特征值D減小的次序依次排列的,即
D1>D2>D3
A1、A2、A3需進行歸一化和正交化處理
令協方差矩陣
C■=?滓211 ?滓212 ?滓213?滓221 ?滓222 ?滓223?滓231 ?滓232 ?滓233
則?滓2kk=■■■[fk(i,j)-E(fk)]2
?滓2kl=■■■[fk(i,j)-E(fk)][fl(i,j)-E(fl)]
N、M為參與協方差矩陣計算的圖像數據的行數和列數。
2.程序代碼
IDL>Read_JPEG,''p3.jpg'',f1Read_JPEG,''p4.jpg'',f2Read_ JPEG,''p5.jpg'',f3;讀取三個波段的圖像
IDL>e1=Bytarr(512,512)e2=Bytarr(512,512)e3=Bytarr
(512,512);建立期望值矩陣e(f)
IDL>e1=e1+Mean(f1)e2=e2+Mean(f2)e3=e3+Mean(f3);
求期望值矩陣
IDL>c11=Mean((f1-e1)^2)/512c22=Mean((f2-e2)^2)/512
c33=Mean((f3-e3)^2)/512;
IDL>c12=Mean((f2-e2)*(f1-e1))/512c13=Mean((f3-e3)*
(f1-e1))/512c32=Mean((f2-e2)*(f3-e3))/512;使用Mean命令求期望值
IDL>c21=c12c31=c13c23=c32;求出協方差矩陣Cf的各項值(下轉第26頁)
(上接第12頁)IDL>cf=[[c11,c12,c13],[c21,c22,c23],[c31,c32,c33]];建立協方差矩陣
IDL>a=cf
IDL>Trired,a,d,e
IDL>Triql,d,e,a;使用Trired和Triql命令求特征值和特征向量
IDL>Print,d;輸出特征值
IDL>Print,a;輸出特征向量(IDL已對特征向量進行歸一化處理)
IDL>a0=a[*,2]a1=a[*,0]a2=a[*,1];觀察輸出結果,根據各個特征值的大小重新排列特征向量。需要注意IDL輸出的特征向量為行向量
IDL>at=Fltarr(3,3);新建一個3×3矩陣
IDL>at[*,0]=a0at[*,1]=a1at[*,2]=a2;建立特征向量矩陣的轉置矩陣
IDL>pc1=at[0,0]*(f1-e1)+at[1,0]*(f2-e2)+at[2,0]*(f3-e3)
IDL>pc2=at[0,1]*(f1-e1)+at[1,1]*(f2-e2)+at[2,1]*(f3-e3)
IDL>pc3=at[0,2]*(f1-e1)+at[1,2]*(f2-e2)+at[2,2]*(f3-e3); 進行主成分變換
IDL>pc1=(pc1+255)/2pc2=(pc2+255)/2pc3=(pc3+255)/2
IDL>Window,0Tv,pc1
IDL>Window,1Tv,pc2
IDL>Window,2Tv,pc3;在三個窗口中分別顯示主成分圖像
■ ■
圖3 第一主分量圖 圖4 第二主分量圖
■圖5 第三主分量圖