數字圖像處理——最短距離法聚類

%最短距離分類
K = 3;
%樣本訓練——均以一個樣本爲例
class1 = double(imread('class21.jpg'));
class2 = double(imread('class22.jpg'));
class3 = double(imread('class23.jpg'));
Class1 = round([mean(mean(class1(:,:,1))),mean(mean(class1(:,:,2))),mean(mean(class1(:,:,3)))]);
Class2 = round([mean(mean(class2(:,:,1))),mean(mean(class2(:,:,2))),mean(mean(class2(:,:,3)))]);
Class3 = round([mean(mean(class3(:,:,1))),mean(mean(class3(:,:,2))),mean(mean(class3(:,:,3)))]);
Class = reshape([Class1,Class2,Class3],[K,3]);
Image= double(imread('監督分類2.jpg'));
[lines,samples,bands] = size(Image);
Image1 = reshape(Image,[lines*samples,3]);
%按最短距離分類
for i = 1:lines*samples
    for k = 1:K
        Data1(k) = sqrt((Image1(i,1)-Class(k,1))^2+(Image1(i,2)-Class(k,2))^2+(Image1(i,3)-Class(k,3))^2);
    end
        [m,index] = min(Data1);
        Result(i,1) = index;
end
%顯示結果
figure(3);
subplot(1,2,1);
imshow(uint8(Image));
title('原始圖像');
Image2 = reshape(Result,lines,samples);
subplot(1,2,2);
imshow(label2rgb(Image2));
title('最短距離法聚類分割後的影像');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章