MATLAB区域增长法分割图像,好像是种子点的选取超边界了。。请问怎么改啊
while (pixdist < 0.06 && reg_size < numel(I))
%增加新的邻域像素到neg_list中
for j=1:4
xn = x + neigb(j,1);
yn = y + neigb(j,2);
%检查邻域像素是否超过了图像的边界
ins = (xn>=1)&&(yn>=1)&&(xn<=Isizes(1))&&(yn<=Isizes(1));
%如果邻域像素在图像内部,并且尚未分割好;那么将它添加到邻域列表中
if( ins && J(xn,yn)==0)
neg_pos = neg_pos+1;
neg_list(neg_pos,:) =[ xn, yn, I(xn,yn)];%存储对应点的灰度值
J(xn,yn) = 1;%标注该邻域像素点已经被访问过 并不意味着,他在分割区域内
end
end
%如果分配的内存空问不够,申请新的内存空间
if (neg_pos+10>neg_free)
neg_free = neg_free + 100000;
neg_list((neg_pos +1):neg_free,:) = 0;
end
%从所有待分析的像素点中选择一个像素点,该点的灰度值和已经分割好区域灰度均值的
%差的绝对值时所待分析像素中最小的
dist = abs(neg_list(1:neg_pos,3)-reg_mean);
[pixdist,index] = min(dist);
%计算区域的新的均值
reg_mean = (reg_mean * reg_size +neg_list(index,3))/(reg_size + 1);
reg_size = reg_size + 1;
%将旧的种子点标记为已经分割好的区域像素点
J(x,y)=2;%标志该像素点已经是分割好的像素点
x = neg_list(index,1);
y = neg_list(index,2);
%将新的种子点从待分析的邻域像素列表中移除
** neg_list(index,:) = neg_list(neg_pos,:);**
neg_pos = neg_pos -1;
位置 1 处的索引无效。数组索引必须为正整数或逻辑值。
出错 Untitled2 (line 93)
neg_list(index,:) = neg_list(neg_pos,:);
报错就这一条吗?