導航:首頁 > 源碼編譯 > pca演算法總結

pca演算法總結

發布時間:2022-06-03 09:53:53

⑴ 如何結合pca演算法和最近鄰法進行人臉識別

%一個修改後的PCA進行人臉識別的Matlab代碼
% calc xmean,sigma and its eigen decomposition
allsamples=[];%所有訓練圖像
for i=1:40
for j=1:5
a=imread(strcat('D:\rawdata\ORL\s',num2str(i),'\',num2str(j),'.pgm'));
% imshow(a);
b=a(1:112*92); % b是行矢量 1×N,其中N=10304,提取順序是先列後行,即從上到下,從左到右
b=double(b);
allsamples=[allsamples; b]; % allsamples 是一個M * N 矩陣,allsamples 中每一行數據代表一張圖片,其中M=200
end
end
samplemean=mean(allsamples); % 平均圖片,1 × N
for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean是一個M × N矩陣,xmean每一行保存的數據是「每個圖片數據-平均圖片」
end;
sigma=xmean*xmean'; % M * M 階矩陣
[v d]=eig(sigma);
d1=diag(d);
[d2 index]=sort(d1); %以升序排序
cols=size(v,2);% 特徵向量矩陣的列數
for i=1:cols
vsort(:,i) = v(:,index(cols-i+1) ); % vsort 是一個M*col(注:col一般等於M)階矩陣,保存的是按降序排列的特徵向量,每一列構成一個特徵向量
dsort(i) = d1( index(cols-i+1) ); % dsort 保存的是按降序排列的特徵值,是一維行向量
end %完成降序排列
%以下選擇90%的能量
dsum = sum(dsort);
dsum_extract = 0;
p = 0;
while( dsum_extract/dsum < 0.9)
p = p + 1;
dsum_extract = sum(dsort(1:p));
end
i=1;
% (訓練階段)計算特徵臉形成的坐標系
while (i0)
base(:,i) = dsort(i)^(-1/2) * xmean' * vsort(:,i); % base是N×p階矩陣,除以dsort(i)^(1/2)是對人臉圖像的標准化,詳見《基於PCA的人臉識別演算法研究》p31
i = i + 1;
end
% add by wolfsky 就是下面兩行代碼,將訓練樣本對坐標繫上進行投影,得到一個 M*p 階矩陣allcoor
allcoor = allsamples * base;
accu = 0;
%
for i=1:40
for j=6:10 %讀入40 x 5 副測試圖像
a=imread(strcat('D:\rawdata\ORL\s',num2str(i),'\',num2str(j),'.pgm'));
b=a(1:10304);
b=double(b);
tcoor= b * base; %計算坐標,是1×p階矩陣
for k=1:200
mdist(k)=norm(tcoor-allcoor(k,:));
end;
%三階近鄰
[dist,index2]=sort(mdist);
class1=floor( index2(1)/5 )+1;
class2=floor(index2(2)/5)+1;
class3=floor(index2(3)/5)+1;
if class1~=class2 && class2~=class3
class=class1;
elseif class1==class2
class=class1;
elseif class2==class3
class=class2;
end;
if class==i
accu=accu+1;
end;
end;
end;
accuracy=accu/200 %輸出識別率
函數調用是定義函數,然後用函數名進行調用就可以了

⑵ unscrambler中的光譜矩陣是什麼意思

二維光譜技術

指用一個低頻率的擾動作用在樣品上,通過測定比振動弛豫慢許多,但與分子尺寸運動緊密相關的不同弛豫過程的紅外振動光譜,將數學相關分析技術用於紅外光譜中得到二維紅外相關光譜圖。這些慢的弛豫過程可以用現有的普通紅外光譜儀,通過簡單的時間分辨技術加以研究。

二維光譜技術的基本概念最早起源於30年前的核磁共振(NMR)領域。二維核磁譜是通過多脈沖技術激發核自旋,採集時間域上原子核自旋弛豫過程的衰減信號,經雙傅里葉變換得到的。其顯著的特點是:將光譜信號擴展到第二維上以提高光譜解析度,簡化含有許多重疊峰的復雜光譜;通過選擇相關的光譜信號鑒別和研究分子內和分子間的相互作用。各種二維核磁共振技術(2DNMR)在核磁共振光譜學家的努力下已建立起來並得到了廣泛的應用。但是使人感到奇怪的是,盡管二維光譜在核磁領域蓬勃發展,但二維相關技術卻一直沒能深入其他的光譜分支,如紅外、拉曼、紫外、熒光等。

阻礙二維技術發展的一個重要原因是普通光譜的時間標尺(timescale)要比核磁的時間標尺短得多。舉例來說,紅外吸收光譜觀察的分子振動時間標尺在皮秒數量級,而核磁中時間標尺數量級一般在毫秒到微秒間。因此基於多重射頻脈沖勵磁技術的二維核磁技術可以成功地在精密而昂貴的核磁儀器上實現,卻不能在普通的紅外、拉曼和紫外等儀器上實現。

1986年,Noda就二維NMR技術的理論提出了一個概念性的突破,他把磁實驗中的多重射頻勵磁看作是一種對體系的外部擾動。以這種全新的視角簡化看待二維核磁技術,就可以輕易地設計出完全不同的二維光譜實驗技術。

為此,1989年Noda提出一項新的實驗方案,用一個低頻率的擾動作用在樣品上,通過測定比振動弛豫慢許多,但與分子尺寸運動緊密相關的不同弛豫過程的紅外振動光譜,將數學相關分析技術用於紅外光譜中得到二維紅外相關光譜圖。這些慢的弛豫過程可以用現有的普通紅外光譜儀,通過簡單的時間分辨技術加以研究。於是,最初的二維紅外相關光譜技術的理論就此誕生。

然而最初的二維紅外相關光譜技術的理論中,外擾的波形僅局限於正弦波形。這就極大地限制了二維相關技術在普通光譜上的進一步發展。1993年,Noda再次對已有理論進行修正,破除了外擾波形的局限,並且用Hilbert轉換替代了原先二維相關分析中的Fourier轉換,由此縮短了二維處理的時間,並把新的理論正式命名為「廣義二維光譜技術技術」。至此,應用的外擾的波形可以多種多樣,從簡單的正弦波、一串脈沖,到隨機的噪音或靜態的物理變化,均可應用於外擾。如電場、熱、磁、化學、機械甚至聲波等變化。每種外擾對體系的影響是獨特而有選擇性的,由特定的宏觀刺激和微觀或分子級別的相互作用機理決定。此後,這種二維相關分析技術開始逐漸適用於拉曼、熒光、X射線衍射、GPC等其它譜學技術中。

二維光譜技術的相關方程編輯

二維光譜技術的基本想法實際非常簡單。就是考慮由外擾引起的外擾變數t在Tmin和Tmax間變化時光譜強度y(ν,t)的變化。體系對外擾的反應經常表現為有特徵的光譜變化,稱作動態光譜(dynamicspectrum)。因此,二維相關實際上測的就是動態光譜的變化。外擾變數t經常被當作時間,但它也可以是任意其它合理的物理變數,如溫度、壓強、濃度、電壓等。光學變數ν可以是任何合適的光譜量化系數,如拉曼位移、紅外或近紅外波數、紫外波長,甚至是X光散射角。體系受外擾引起的動態光譜y(ν,t)可以正式定義為:

y(ν,t)=y(ν,t)-y(ν)Tmin≤t≤Tmax0otherwise(1)

y(ν)是體系的參比光譜。參比光譜的選擇並不一定要嚴格一致,在大多數情況下,我們使用光譜的平均值,定義為:

y(ν)=1Tmax-Tmin∫TmaxTminy(ν,t)dt(2)

在某些應用中,我們可以通過選擇在某個參考點(t=Tref)觀察到的光譜作為參考光譜。參考點可以選擇實驗的初始狀態,即在施以外擾前的足夠長的時間(Tref※-∞),或是在實驗開始時(Tref=Tmin),或是在實驗結束時(Tref=Tmax),甚至是在體系完全不受外擾影響的時候(Tref※+∞)。當然參比光譜也可以簡單地設為零,這樣動態光譜就和我們觀察到的光譜強度完全一致了。二維相關強度X(ν1,ν2)代表在一定外部變化t的區間內,對不同光學變數ν1和ν2的光學強度變化y(ν1,t)的函數進行比較。由於相關函數是計算兩個互不依賴的光學變數ν1和ν2光學強度的變化,因此我們可以將X(ν1,ν2)轉變為復數形式:X(ν1,ν2)=Υ(ν1,ν2)+iΧ(ν1,ν2)(3)

組成復數的相互垂直的實部和虛部分別被稱作同步和非同步二維相關強度。同步二維相關強度Υ(ν1,ν2)表示隨著t值的變化,兩個在不同光學變數下測量的互不依賴的光學強度的相似性變化。恰恰相反,非同步二維相關強度Χ(ν1,ν2)表示光學強度的相異性變化。廣義二維相關函數及其定義的同步和非同步相關強度如下:X(ν1,ν2)=1π(Tmax-Tmin)∫∞0Y1(ω)·Y*2(ω)dω(4)

Y1(ω)=∫∞-∞y(ν1,t)e-iωtdt(5)

Y*2(ω)=∫∞-∞y(ν2,t)e+iωtdt(6)

Y(ω)是光強y(ν,t)經傅立葉變換得到,傅立葉頻率ω代表y(ν,t)隨外擾t變化的個體頻率。由於二維相關光強的計算過程必須描繪二維光譜中的每一點,即使使用快速傅立葉演算法的計算步驟來按照公式(4)計算廣義二維光譜技術,數據也會多得難以想像,所以我們在計算過程中應用了適當的估算。我們在外擾t變化區間Tmin和Tmax內等間隔地選取m個動態光譜,Δt=(Tmax-Tmin)(m-1),同步二維相關強度可以簡單地表示為:Υ(ν1,ν2)=1m-1∑mj=1yj(ν1)·yj(ν2)(7)

yj(νi)是外擾tj點的光學強度。

yj(νi)=y(νi,tj)i=1,2(8)

如果光譜系列並不是在外擾t上等間隔選取的,那麼我們就必須進行一定調整。比如我們可以通過內插等方法使本來不均勻的光譜系列變得均勻。同步光譜就按照這個新的系列由公式(7)給出。非同步二維相關光強的計算就更加困難。有許多估算方法可以對非同步光譜進行合理的估算,然而最簡單有效的估算方法由下式給出:Χ(ν1,ν2)=1m-1∑mj=1yj(νi)·∑mk=1Njk·yk(ν2)(9)其中Njk代表Hilbert-Noda轉變矩陣的第j行第k列的元素,表示為:Njk=0j=k1π(k-j)otherwise(10)

二維光譜技術譜圖最常見的表示形式就是二維contourmap。

當協方差為0時,表示兩個欄位線性不相關。

總結一下,PCA的優化目標是:

將一組N維向量降為K維(K大於0,小於N),其目標是選擇K個單位正交基,使得原始數據變換到這組基上後,各欄位兩兩間協方差為0,而欄位的方差則盡可能大。

⑶ 主成分分析PCA演算法:為什麼要對數據矩陣進行均值化

個人覺得 去均值化是為了方面後面的協方差,去均值化後各維度均值為零,
協方差中的均值也就是零了,方便求解。

具體,假設矩陣A去中心化後得到B,那麼B的協方差就是B*B的轉置

⑷ 用pca演算法可以寫一篇小論文嗎

不可以。該演算法的主要作用為:
1、數據壓縮
2、數據預處理;
3、圖象、語音、通信的分析處理
4、降維(最主要),去除數據冗餘與雜訊
5、高維數據集的探索與可視化。

⑸ 求PCA人臉識別演算法

a1=imread('a1.jpg');
a2=imread('a2.jpg');
b1=imread('b1.jpg');
b2=imread('b2.jpg');

a1=rgb2gray(a1);
a2=rgb2gray(a2);
b1=rgb2gray(b1);
b2=rgb2gray(b2);

figure,imshow(a1)
figure,imshow(a2)
figure,imshow(b1)
figure,imshow(b2)

a1=double(a1);
a2=double(a2);
b1=double(b1);
b2=double(b2);

a1_lie=a1(:);
a2_lie=a2(:);
b1_lie=b1(:);
b2_lie=b2(:);

c=cat(1,a1_lie',a2_lie',b1_lie',b2_lie');
c_mean=mean(c);

X=[a1_lie-c_mean',a2_lie-c_mean',b1_lie-c_mean',b2_lie-c_mean'];
R=X'*X; % R是4×4的矩陣

[p,q]=eig(R);
u=diag(q); % u是4×1的列向量
u=flipud(u); % flipud(u)實現矩陣的上下翻轉, u是4×1的列向量
v=fliplr(p); % fliplr(p)實現矩陣的左右翻轉,v是4×4的矩陣

e=zeros(36000,4);
for m=1:3
e(:,m)=X*v(:,m)./(u(m)^(-0.5)); % 參見《模式識別》P226公式9-18
end

p1=zeros(200,180);
p2=zeros(200,180);
p3=zeros(200,180);
for m=1:36000

p1(m)=e(m);
p2(m)=e(m+36000);
p3(m)=e(m+72000);
end

p1=mat2gray(p1);
p2=mat2gray(p2);
p3=mat2gray(p3);
figure,imshow(p1) % 顯示第1特徵臉
figure,imshow(p2) % 顯示第2特徵臉
figure,imshow(p3) % 顯示第3特徵臉

new=c*e(:,1:3); %分別計算4個訓練樣本分別在第1、第2、第3、特徵臉上的投影

p1=imread('p_test1.jpg'); %讀入一個測試樣本
p1=rgb2gray(p1);
figure,imshow(p1);
p2=double(p1(:));

test=p2'*e(:,1:3);%計算測試樣本在3個特徵臉上的投影
error=zeros(4,1);
for m=1:4
error(m)=norm((new(m,:)-test));
end
[distence,index]=sort(error); %將列向量error中的數據按從小到大排列
if index(1)==1
result=1;
elseif index(1)==2
result=1;
elseif index(1)==3
result=2;
elseif index(1)==4
result=2;
end

result %result為1時表示測試樣本屬於第1個人,為2時表示測試樣本屬於第2個人

⑹ 稀疏表示和PCA演算法的關系是什麼

PCA是用來特徵提取和降維用的

⑺ 人臉識別PCA演算法,子空間和投影到子空間怎麼理解

PCA人臉識別是把所有圖像看做是一個樣本,每張圖像看成一行向量,有N張圖像就有N行,所以這個樣本就可以看成是一個N行的矩陣。先求出這個矩陣的協方差矩陣,再求出這個協方差矩陣的特徵值,選擇特徵值中前m個最大的特徵值,這前m個最大的特徵值,每個都對應一個特徵向量(特徵向量也叫做特徵臉),這m個特徵向量組成一個m行的特徵矩陣,這個特徵矩陣就是「子空間」,也叫做特徵臉空間。所謂投影到子空間,就是把樣本中的一張圖像看成一行向量,這個向量乘以特徵矩陣得到一個m維的向量,就是投影的結果,也是這張圖像的特徵值。

⑻ 什麼「PCA演算法」。

有關圖像融合的一種線性演算法,在MATLAB中是一種演算法融合程序。

閱讀全文

與pca演算法總結相關的資料

熱點內容
企業密信伺服器地址是什麼 瀏覽:402
note2android升級 瀏覽:834
麻省理工python 瀏覽:22
編譯程序軟體哪個好 瀏覽:840
rar命令行壓縮 瀏覽:932
單片機字元表代碼 瀏覽:498
pdf轉換word蘋果電腦 瀏覽:661
python字典格式化輸出 瀏覽:849
加密壓縮包百度和諧 瀏覽:718
路由代碼程序員 瀏覽:7
電腦上qq郵箱可以發文件夾嗎 瀏覽:211
appiumpython環境 瀏覽:15
序列化後再壓縮 瀏覽:157
福克斯15t壓縮比 瀏覽:929
手機qq發壓縮包 瀏覽:679
安卓機藍牙耳機如何彈出彈窗 瀏覽:113
linuxoracle環境變數設置 瀏覽:364
php去掉重復數據 瀏覽:369
C關機編程 瀏覽:771
程序員將滑鼠拉到現實世界 瀏覽:67