资源简介
用matlab编写的基于K-means图像分割,可直接运行.m文件。
代码片段和文件信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:演示Kmeans聚类算法在计算机视觉中的应用
%实现如何利用Kmeans聚类实现图像的分割;
%环境:Win7,Matlab2012b
%Modi: NUDT-VAP
%时间:2014-10-17
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function kmeans_demo1()
clear;close all;clc;
%% 读取测试图像
im = imread(‘city.jpg‘);
imshow(im) title(‘原始图像‘);
%% 转换图像的颜色空间得到样本
cform = makecform(‘srgb2lab‘);
lab = applycform(imcform);
ab = double(lab(::2:3));
nrows = size(lab1); ncols = size(lab2);
X = reshape(abnrows*ncols2)‘;
figure scatter(X(1:)‘X(2:)‘3‘filled‘); title(‘图像ad空间样本分布‘); box on; %显示颜色空间转换后的二维样本空间分布
%print -dpdf 2D1.pdf
%% 对样本空间进行Kmeans聚类
k = 5; % 聚类个数
max_iter = 100; %最大迭代次数
[centroids labels] = run_kmeans(X k max_iter);
%% 显示聚类分割结果
figure scatter(X(1:)‘X(2:)‘3labels‘filled‘);title(‘图像ab空间样本聚类结果‘); %显示二维样本空间聚类效果
hold on; scatter(centroids(1:)centroids(2:)60‘r‘‘filled‘)
hold on; scatter(centroids(1:)centroids(2:)30‘g‘‘filled‘)
box on; hold off;
%print -dpdf 2D2.pdf
pixel_labels = reshape(labelsnrowsncols);
rgb_labels = label2rgb(pixel_labels);
figure imshow(rgb_labels) title(‘分割结果‘);
%print -dpdf Seg.pdf
end
function [centroids labels] = run_kmeans(X k max_iter)
% 该函数实现Kmeans聚类
% 输入参数:
% X为输入样本集,dxN
% k为聚类中心个数
% max_iter为kemans聚类的最大迭代的次数
% 输出参数:
% centroids为聚类中心 dxk
% labels为样本的类别标记
%% 采用K-means++算法初始化聚类中心
centroids = X(:1+round(rand*(size(X2)-1)));
labels = ones(1size(X2));
for i = 2:k
D = X-centroids(:labels);
D = cumsum(sqrt(dot(DD1)));
if D(end) == 0 centroids(:i:k) = X(:ones(1k-i+1)); return; end
centroids(:i) = X(:find(rand < D/D(end)1));
[~labels] = max(bsxfun(@minus2*real(centroids‘*X)dot(centroidscentroids1).‘));
end
%% 标准Kmeans算法
for iter = 1:max_iter
for i = 1:k l = labels==i; centroids(:i) = sum(X(:l)2)/sum(l); end
[~labels] = max(bsxfun(@minus2*real(centroids‘*X)dot(centroidscentroids1).‘)[]1);
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 118067 2014-02-12 14:08 1、K-means学习\city.jpg
文件 2329 2019-03-19 20:30 1、K-means学习\kmeans_demo1.m
目录 0 2019-03-19 20:55 1、K-means学习
----------- --------- ---------- ----- ----
120396 3
- 上一篇:马尔科夫随机场应用与图像分割
- 下一篇:matlab基于笔记本电脑的摄像头的人脸检测
相关资源
- 基于lab空间的图像分割
- MATLAB大脑腔体图像分割
- LAB空间分别提取红色、绿色、紫色、
- 图像分割matlab
- 模糊聚类图像分割FCM/FLICM等
- 斯坦福机器学习编程作业machine-learn
- ASM二维图像分割MATLAB代码
- matlab 静态图像分割
- 基于信息熵方法的多阈值图像分割算
- KFCM与FCM进行脑电图分割
- MATLAB与机器学习
- 纹理图像分割Matlab源代码 PDF PPT
- K均值聚类算法,图像处理,GUI,mat
- 基于变分水平集的图像分割
- MACHINE_LEARNING_with_NEURAL_NETWORKS_using_MA
- MATLAB简介+图像轮廓线提取+图像分割技
- 遗传算法图像分割matlab+源代码
- 用matlab写的图像分割的代码
- MRI图像分割
- 基于颜色的图像分割算法MATLAB代码
- 一种效果极好的交互式图像分割算法
- GVFSnake(matlab)边缘检测和图像分割
- LBF和LDF模型的matlab程序,用于图像分
- 交替方向乘子法ADMM算法的matlab代码
- 图像分割分形算法
- 机器学习 : 实用案例解析 mobi格式
- 基于形态学的图像分割算法研究
- 基于K-means算法的遥感图像分类的mat
- 基于Matlab实现的图像分割的常用算法
- 带操作界面GUI的字母识别-MATLAB程序
评论
共有 条评论