24小时热门版块排行榜    

查看: 1144  |  回复: 3

cjy0803

新虫 (初入文坛)

[求助] 求解kmeans图像分割程序中的一些问题 已有2人参与

1 计算灰度直方图之前为什么要去除图像灰度值中的0值?
2 计算灰度直方图那一块代码没理解 h与hc这两个矩阵是什么作用
3 程序中的cc应该是一个值,为什么要写成cc(1)这种形式?
下面是部分代码
谢谢解答
CODE:
clc;
clear;

k=4;%定义聚类个数

% 读入图像
A=imread('C:\Documents and Settings\Administrator\桌面\wonder\2.jpg','jpg');
% 转为灰度图像
B=rgb2gray(A);
% 保存至22.jpg
imwrite(B,'C:\Documents and Settings\Administrator\桌面\wonder\22.jpg','jpg');

ima=double(B);    % 转为double类型
copy=ima;         % 保留副本
ima=ima(:);       % 向量化

mi=min(ima);      % 最小值为0
ima=ima-mi+1;     % 转换灰度范围 原[0,255] 现[1,256] 去除0值

s=length(ima);    % s=m*n



% 计算图像灰度直方图
m=max(ima)+1;    % m=257

h=zeros(1,m);    % h 1*257
hc=zeros(1,m);   % hc 1*257

for i=1:s        % 遍历向量
  if ima(i)>0
      h(ima(i))=h(ima(i))+1;
  end   
end
ind=find(h);     % 返回h中非零元素所在位置
hl=length(ind);  % 计算h中非零元素个数 hl=256

% 初始化质心
mu=(1:k)*m/(k+1);

% 开始
while(true)
  
  oldmu=mu;
  % 当前的分类
  for i=1:hl
      c=abs(ind(i)-mu);  % 计算每个值到中心的距离
      cc=find(c==min(c));% 找出距离最小的点
      hc(ind(i))=cc(1);     
  end
  
  %重新计算均值
  for i=1:k,
      a=find(hc==i);
      mu(i)=sum(a.*h(a))/sum(h(a));
  end
  
  if mu==oldmu
      break;
  end;
  
end

回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gorgan

木虫之王 (文学泰斗)

无意苦争春

【答案】应助回帖

感谢参与,应助指数 +1
1 计算灰度直方图之前为什么要去除图像灰度值中的0值?
答:本来灰度范围是0到255,但是要转化为1到256,才能建立一个长度为256的数组
因为matlab里数组不能是从0开始的,比如m是一个数组,m[0]是非法的,m的第一个元素是m[1]
3 程序中的cc应该是一个值,为什么要写成cc(1)这种形式?
答:等于最小值的可能不是一个元素,比如最小值为1,等于1的可能有好几个,cc(1)就是从相等的里面取出一个
无我相,无人相,无众生相,无寿者相
2楼2014-06-09 14:07:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

仙木映月

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
cjy0803: 金币+7, ★★★很有帮助 2014-06-17 09:06:02
问题1:
这步的主要目的并不是为了要去掉灰度为0的值,而是要确定图像中灰度值的范围。比如一个图像的灰度只有:12,13,14,15.则得到的s=4,ima为:1,2,3,4. 这省去了不必要的循环运算。
问题2:
h是为了统计处于灰度值区间ima内的各个灰度值上像素点的个数,用这个做均一化就可以求出灰度的直方图了。
hc是为了给离Kmeans的k个中心最近的点做标记,这样就可以利用这样的分类迭代更新中心值mu了。
问题3:
楼上说可能不止一个是从范围的角度讲的。其实这里的小循环的目的就是要找到当前点距离哪个分累中心最近,并用这个分类重心的标号为这个点做标记。cc中的第一个元素就是那个距离某中心最近的该中心的标号,所以用来更新hc。
Hardtosay.
3楼2014-06-10 09:14:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cjy0803

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by gorgan at 2014-06-09 14:07:45
1 计算灰度直方图之前为什么要去除图像灰度值中的0值?
答:本来灰度范围是0到255,但是要转化为1到256,才能建立一个长度为256的数组
因为matlab里数组不能是从0开始的,比如m是一个数组,m是非法的,m的第一个元 ...

谢谢
4楼2014-06-17 09:06:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cjy0803 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[文学芳草园] 梦想 +4 myrtle 2026-08-26 4/200 2026-08-31 08:43 by 逸域隐帆
[基金申请] 中青基了要发朋友圈吗? +6 349506619 2026-08-28 6/300 2026-08-31 08:43 by kingkocxr
[基金申请] 能否申诉? +6 echo8914667 2026-08-30 7/350 2026-08-31 08:41 by kingkocxr
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-31 08:28 by xiangy672
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +6 gdd2018 2026-08-28 11/550 2026-08-30 08:58 by 超级无敌华子
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 国自然面上复盘~欢迎讨论 (金币+15) +15 晴天加油 2026-08-26 16/800 2026-08-29 18:28 by symmetry
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 怎么查啊 +6 huang1991js 2026-08-26 6/300 2026-08-28 08:42 by winsaint
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 基金未中,这种答复是模板吗? +5 zhaosm1982 2026-08-27 6/300 2026-08-27 16:00 by lfy8008
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
信息提示
请填处理意见