之前提到了巴氏距離,巴氏距離用來檢測兩張影象不像是乙個很好的工具喲~
我們就用matlab來檢測一下巴氏距離的威力吧!
這是我大國武的櫻頂,想想清明時節
櫻花紛飛現在被我拿來做實驗,理工男啊!
當 櫻花以秒速3.5公尺下落,我又該如何尋思你。
首先這是主教拍攝櫻頂的
這張是上半部分,但是兩張還是很想哦,至少人類是這麼認為的。
這是第三張,基本就不太能夠辨認了。
我們把第一張對應的直方圖稱為psorg,第二張很匹配的稱為psma,第三張對應的直方圖稱為psnonma。請原諒我把c++命名習慣放到matlab裡面來了。然後我們要做的就是計算第二張與原圖(第一張)之間的巴氏距離,以及第三張與第二張之間的巴氏距離。反正,結果是這樣的:
這是三張對應的直方圖。
不說了,上matlab 的程式:
clcfn='i:\orginalpicture.png';
i=imread (fn);
j=i;
%計算灰度圖象的直方圖資料
l=256; %灰度級
psorg = zeros(l,1); %統計直方圖結果資料
nk=zeros(l,1);
[row,col]=size(i);
n=row*col; %總畫素個數
for i = 1:row
for j = 1:col
num = double(i(i,j))+1; %獲取畫素點灰度級
nk(num) = nk(num)+1; %統計nk
endend
%計算直方圖概率估計
for i=1:l
psorg(i)=nk(i)/n;
endfigure;
subplot(2,1,1);imshow(j),title('原圖');
subplot(2,1,2),bar(psorg),title('直方圖');
、、%figure;
%subplot(3,1,1);
�r(psorg);
%subplot(3,1,2);
�r(psma);
%subplot(3,1,3);
�r(psnon);
summa = 0;
sumnonma =0;
for i = 1:256
summa=summa+sqrt(psma(i)*psorg(i));
sumnonma=sumnonma+sqrt(psnon(i)*psorg(i));
endsumma
sumnonma
%figure(4),imhist(hist);
%p=imhist(hist); %生成直方圖函式,返回灰度圖象直方圖資料
%figure(5),plot(p);
這一段可以算出的直方圖和直方圖矩陣,三張都可以這麼算
summa = 0;
sumnonma =0;
for i = 1:256
summa=summa+sqrt(psma(i)*psorg(i));
sumnonma=sumnonma+sqrt(psnon(i)*psorg(i));
endsumma
sumnonma
這一段就是求兩個巴氏距離的程式。
距離度量之馬氏距離
用來度量乙個樣本點 與資料分布為 的集合的距離。假設樣本點為 資料集分布的均值為 協方差矩陣為 則這個樣本點 與資料集合的馬氏距離為 馬氏距離也可以衡量兩個來自同一分布的樣本x和y的相似性 當樣本集合的協方差矩陣是單位矩陣時,即樣本的各個維度上的方差均為 馬氏距離就等於歐式距離相等。當協方差矩陣是對...
距離度量之馬氏距離
用來度量乙個樣本點 與資料分布為 的集合的距離。假設樣本點為 資料集分布的均值為 協方差矩陣為 則這個樣本點 與資料集合的馬氏距離為 馬氏距離也可以衡量兩個來自同一分布的樣本x和y的相似性 當樣本集合的協方差矩陣是單位矩陣時,即樣本的各個維度上的方差均為 馬氏距離就等於歐式距離相等。當協方差矩陣是對...
馬氏距離與歐式距離
1 歐式距離 2 標準歐式距離 3 馬氏距離 4 測試 構造資料,構建乙個長軸為2短軸為1的橢圓 測試兩個點到質心的距離綠色的點x1 1,0 和黃色的點x2 0,0.8 通過計算歐式距離發現x2距離質心更近一些,但是計算馬氏距離和標準歐式距離卻又是x1距離的更近些 很直接的原因就是長軸的方差比較大,...