巴氏距離例項

2021-07-06 09:51:13 字數 1986 閱讀 9971

之前提到了巴氏距離,巴氏距離用來檢測兩張影象不像是乙個很好的工具喲~

我們就用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距離的更近些 很直接的原因就是長軸的方差比較大,...