K均值(图像)聚类分析
百度网盘视频链接:视频链接:http://pan.baidu.com/s/1jI5MvIY
录制的视频是算法底层原理讲解,底层代码实现,方便大家真正掌握算法实质,开发出更加出色的算法。录制视频的初衷是:避免读者朋友利用大把时间学习已有常见算法,本系列视频旨在让读者朋友快速深入了解这些常见算法原理,有更多的时间去研究更加高大上算法(价值)。
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
K均值(图像)聚类分析:
% K均值聚类算法
clc,clear,close all;
warning off;
I_rgb=imread('ysw_image.jpg');
% I_rgb=im2double(I_rgb); % 双精度
I_rgb = double(I_rgb); % 双精度
% I_rgb = imresize(I_rgb, );% 改变图像的大小
I_rgb = imresize(I_rgb, );% 改变图像的大小
= size(I_rgb(:,:,1));
% I_rgb = rgb2gray(I_rgb);% 彩色图像转化为灰度图像
if size(I_rgb,3)==1
ClusterData(:,1) = I_rgb(:);
else
ClusterData(:,1) = reshape( I_rgb(:,:,1), [],1);% R
ClusterData(:,2) = reshape( I_rgb(:,:,2), [],1);% G
ClusterData(:,3) = reshape( I_rgb(:,:,3), [],1);% B
end
% 分类数
= size(ClusterData);
Kc = 4; % 聚类中心个数
% 初始化中心
% index = ceil( unifrnd(1,len, 1, Kc) ); % 均匀分布
index = 1:Kc;
center = ClusterData(index,:);
center_new = center; % 初始化新的中心
% maim loop
maxgen = 1e3;% 最大迭代次数
for i=1:maxgen
% 计算 每一个待分类的数据隶属于的中心编号
= center_nearest(center,ClusterData);
for j=1:Kc
index = find(center_index==j);
center_new(j,:) = mean( ClusterData(index,:) ,1 );
end
error = norm( center_new-center, 2 );% 相连两次中心点的距离值
center = center_new; % 更新中心
if error<0.000001
fprintf('\n');
disp(['收敛迭代次数:', num2str(i)])
disp( '聚类中心为:' )
disp( num2str(center) )
break;
end
endL2距离计算:
function = center_nearest(center,ClusterData)
for i=1:size(ClusterData) % i个样本
for j =1:size(center,1)% j个中心
dist(j) = norm( ClusterData(i,:) - center(j,:), 2);
end
= min(dist);
end
参考链接:http://halcom.cn/forum.php?mod=v ... ge=1&extra=#pid1617
改进一下:
maxgen = 1e3;% 最大迭代次数
for i=1:maxgen
% 计算 每一个待分类的数据隶属于的中心编号
= center_nearest(center,ClusterData);
for j=1:Kc
index = find(center_index==j);
if(isempty(index))
center_new(j,:) = center(j,:);
else
center_new(j,:) = mean( ClusterData(index,:) ,1 );
end
end
error = norm( center_new-center, 2 );% 相连两次中心点的距离值
center = center_new; % 更新中心
if error<1e-3
break;
end
end
您好!这是我的机器码,FC72E003CE31BA7C-0-FF3AF712D936E17C Mistc 发表于 2018-8-15 18:12
您好!这是我的机器码,FC72E003CE31BA7C-0-FF3AF712D936E17C
具体联系管理员QQ 3283892722
页:
[1]