最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
最小距離分類器
%最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
function re=mindis()
[filename,pathname]=uigetfile({'*.jpg;*.bmp;*.tif;*.png;*.gif','All Image Files';'*.*','All Files'});%動態開啟檔案
image = imread([pathname,filename]);%讀取
figure(1);imshow(image);
image=double(image);
[m,n,bands]=size(image);
k=input('請輸入要分類的個數: ');%輸入要選取的樣本類別數
aver=zeros(k,bands);%申請矩陣空間儲存樣本資料各類別各波段均值
%對所選取樣本資料進行處理求得各類別均值
for i=1:k%對選中類別迴圈
str=['請在螢幕影像上選擇第',num2str(i),'種分類樣本,選擇完畢請回車確定'];
disp(str);
[y,x]=getpts;%從影像上獲取資料點
A=[round(y),round(x)];
for band=1:bands%對影像每個波段進行計算,求取指定類別每個波段均值
Sum=0;
for count=1:size(A,1)%對取得點迴圈
temp=image(:,:,band);
Sum=Sum+temp(A(count,2),A(count,1));
end
aver(i,band)=Sum/size(A,1);%求均值
end
end
image=reshape(image,m*n,bands);%將影像資料重塑成為一列為一個波段資料的形式,便於計算
dis=zeros(k,m*n);%申請矩陣空間儲存每個類別影像各個點資料分別到各波段均值的距離的和
type=input('請輸入要選擇的分類型別: 1.歐式距離 2.馬氏距離 3.計程距離 : ');
switch type%分別代入不同公式
case 1
%對每個類別進行迴圈,求出各個類別的距離,後面進行比較
for t=1:k
tem=image-aver(t,:);%影像資料與樣本每個類別每個波段均值分別求差值
dis(t,:)=sqrt(sum((tem.*tem).')); %和的平方根
end
case 2
%申請矩陣儲存樣本資料均值協方差
T=zeros(bands,bands,k);
for t=1:k
T(:,:,t)=cov(aver);%求取協方差
tem=image-aver(t,:);
dis(t,:)=sqrt(sum((tem*T(:,:,t).*tem).')); %同上
end
case 3
for t=1:k
tem=image-aver(t,:);
dis(t,:)=sum(abs(tem.'));%絕對值之和
end
end
[~,index]=min(dis);%求各距離最小值
index=reshape(index,m,n);%重塑回原影像排列
re=index/k;%給各類別賦值指定灰度值便於區分,也可賦值其他
figure(2),imshow((re));%顯示
end
相關文章
- 馬氏距離與歐氏距離
- 馬氏距離
- 距離-有這麼多類
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 【Python】距離Python
- JavaScript 元素距離視窗頂部的距離JavaScript
- 編輯距離及編輯距離演算法演算法
- 曼哈頓距離與切比雪夫距離
- 曼哈頓距離與切比雪夫距離的互化
- Laravel 距離排序Laravel排序
- unit原子距離
- 餘弦距離
- 【DP】編輯距離
- 距離度量學習
- opencv距離變換函式distanceTransformOpenCV函式ORM
- PyTorch 實戰:計算 Wasserstein 距離PyTorch
- 距離容差來源
- 461. 漢明距離
- 漢明距離(Hamming distance)
- 倍頻程與鋼琴調式的距離
- 28、(向量)歐幾里得距離計算
- 原生JS獲取DOM 節點到瀏覽器頂部的距離或者左側的距離JS瀏覽器
- 動態規劃-編輯距離動態規劃
- 編輯距離演算法演算法
- LeetCode 461. 漢明距離LeetCode
- LeetCode72編輯距離LeetCode
- LeetCode 834 樹中距離之和LeetCode
- 經緯度距離換算
- 線性dp:編輯距離
- 902.最短編輯距離
- 求矩陣中向量兩兩間的歐氏距離(python實現)矩陣Python
- 783. 二叉搜尋樹節點最小距離
- 461.漢明距離(c++實現)C++
- Leetcode 編輯距離(動態規劃)LeetCode動態規劃
- Levenshtein:計算字串的編輯距離字串
- 45.LeetCode461. 漢明距離LeetCode
- 【scipy 基礎】--正交距離迴歸