关于Matlab图像分析的代码

键盘国治理专家 2020-05-06 10:22:54

function [C, label, J] = kmeans(I, k) %传了一张图片进来,按4进行聚类
[m, n, p] = size(I);
X = reshape(double(I), m*n, p);
rng('default');
C = X(randperm(m*n, k), :);
J_prev = inf; iter = 0; J = []; tol = 1e-2;
while true;
iter = iter + 1;
dist = sum(X.^2, 2)*ones(1, k) + (sum(C.^2, 2)*ones(1, m*n))' - 2*X*C';
[~, label] = min(dist, [], 2) ;
for i = 1:k;
C(i, :) = mean(X(label == i , :));
end
J_cur = sum(sum((X - C(label, :)).^2, 2));
J = [J, J_cur];
display(sprintf('#iteration: %03d, objective fcn: %f', iter, J_cur));
if norm(J_cur-J_prev, 'fro') < tol;
break;
end
J_prev = J_cur;
end



此处,I是一张图片,从size(I)就开始完全看不懂了,希望了解这些函数功能的能指点一下,查Matlab自带的文档并没有查到相应的,所以本地解决没办法,希望大家能够解答。
...全文
293 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧