|
百度网盘视频链接:
视频链接: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, [128,256]); % 改变图像的大小
- I_rgb = imresize(I_rgb, [64,128]); % 改变图像的大小
- [M,N] = 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
- % 分类数
- [len, depth]= 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_minDist,center_index] = 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
- end
复制代码 L2距离计算:
- function [center_minDist,center_index] = 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
- [center_minDist(i), center_index(i)] = min(dist);
- end
复制代码
参考链接:http://halcom.cn/forum.php?mod=v ... ge=1&extra=#pid1617
|
|