24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1042  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 这年头没有找到涵评专家,还有中面上的可能吗 +11 dd921ww 2026-05-12 13/650 2026-05-16 09:16 by Howard28
[考博] 2026博士还有哪些学校有名额 +4 小王求读研 2026-05-15 5/250 2026-05-16 07:09 by lilibo1987
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 4/200 2026-05-16 04:44 by k37jurhrau
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 5/250 2026-05-16 04:33 by k37jurhrau
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 cjf4bx70cj 2026-05-14 5/250 2026-05-16 04:24 by k37jurhrau
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 3/150 2026-05-16 01:49 by k37jurhrau
[教师之家] 上海大学实验技术岗位非升即走 +5 嘻嘻哈哈乐呵呵 2026-05-15 5/250 2026-05-16 00:17 by caiyun
[文学芳草园] 裁员滚滚,退居二线 +3 J_wei 2026-05-10 3/150 2026-05-15 22:52 by molecula
[论文投稿] 有带发论文的吗 +4 山楂之术 2026-05-09 4/200 2026-05-15 15:40 by 妹子不好惹
[文学芳草园] 风把牡丹吹跑了 +5 myrtle 2026-05-12 9/450 2026-05-15 15:27 by myrtle
[基金申请] 青C资助名额大幅增加! +11 西葫芦炒鸡蛋 2026-05-13 15/750 2026-05-15 14:36 by ambravo
[基金申请] 精华III评审感受-评审感受-评审感受 +14 ferrarichen 2026-05-11 18/900 2026-05-15 11:12 by cmhchen
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 3/150 2026-05-15 09:23 by onwj4wpxp2
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 cjf4bx70cj 2026-05-14 4/200 2026-05-15 09:03 by gagyerk94e
[教师之家] 教学课件你会给同学吗 +8 硕士研究生吗 2026-05-13 8/400 2026-05-14 22:23 by 常规沥青
[有机交流] 求助2,4-二氯-5-嘧啶甲醛的合成方法 20+3 光吃不拉 2026-05-14 5/250 2026-05-14 20:15 by 一切都是空工
[高分子] 本人最近太闲了,谁有问题可以提,每天会统一回复 +8 一切都是空工 2026-05-12 19/950 2026-05-14 20:03 by 一切都是空工
[考博] 申博自荐 +4 食品的橙子 2026-05-09 6/300 2026-05-14 16:05 by great1919
[论文投稿] 求助大佬sci投稿哪个好中 +3 江沅188 2026-05-12 4/200 2026-05-13 14:35 by 江沅188
[考博] 现在不知道怎么办,感觉很痛苦 +4 qweww 2026-05-11 5/250 2026-05-11 20:23 by Oversize
信息提示
请填处理意见