关于matlab图像处理的问题

我想求二值化图像后的最大8连通域的像素总和除以其城市距离,但是有的图像可以行,有的图像却提示错误,不知道为什么,恳请朋友帮我找找错。以下是我用到的图像和程序:图像:程序:... 我想求二值化图像后的最大8连通域的像素总和除以其城市距离,但是有的图像可以行,有的图像却提示错误,不知道为什么,恳请朋友帮我找找错。以下是我用到的图像和程序:
图像:

程序:
clear all;
clc;
I = imread('D:\Program Files\MATLAB\R2013a\bin\work\绝缘子样本\污秽\4.bmp');
I=im2double(I);
I=rgb2gray(I);
%%%%%%%%%%%%%%%%%%%%%%
%高斯滤波
h=fspecial('average',3);
I=imfilter(I,h,'corr','replicate');
%%%%%%%%%%%%%%%%%%%%%
%I=1-I;
figure(1);
imshow(I);
Ibw=im2bw(I,0.5);
%Ibw=1-Ibw;
figure(2);
imshow(Ibw);
se=strel('square',3);
Ibw1=imerode(Ibw,se);
Ibw=Ibw-Ibw1;
%Ibw=edge(Ibw,'sobel');
[x1,x2]=size(Ibw);%%求二值图像的大小
figure(3), imshow(Ibw)% 得到8.24(b)
hold on
[L, num] = bwlabel(Ibw, 8); % 标注连通分量 针对Ibw
[y1,y2]=size(L);
disp(['图中共有' num2str(num) '个连通分量'])

% 找出最大的连通分量(嘴)
max = 0; % 当前最大连通分量的大小
indMax = 0; % 当前最大连通分量的索引
for k = 1:num
[y x] = find(L == k); % 找出编号为k的连通区的行索引集合y和列索引集合x

nSize = length(y); %计算该连通区中的像素数目
if(nSize > max)
max = nSize;
indMax = k;
end
end

if indMax == 0
disp('没有找到连通分量')
return
end

% 计算并显示最大连通分量正序起始点和倒序的起始点
[y x] = find(L == indMax);
for i=1:1:x1
for j=1:1:x2
if L(i,j)==indMax
X_1=i;
Y_1=j;
break;
end
end
break;
end
for i=x1:-1:1
for j=x2:-1:1
if L(i,j)==indMax
X_2=i;
Y_2=j;
break;
end
end
break;
end
Sum4=size(y,1);%%%区域标号为indMax的像素点总数!!!!!!!!!!!!!!!!
city_length=abs(X_1-X_2)+abs(Y_1-Y_2);%%两点之间的城市距离
AAAAA=Sum4/city_length;%%所求结果

求这个图像的时候总是出现“Undefined function or variable 'X_1'.”这个错误,希望大家帮我解决下。谢谢了!!!
展开
 我来答
电动炉钩子
2013-04-24 · TA获得超过1569个赞
知道小有建树答主
回答量:614
采纳率:0%
帮助的人:808万
展开全部
for i=1:1:x1

for j=1:1:x2
if L(i,j)==indMax
X_1=i;
Y_1=j;
break;
end
end
break;
end
for i=x1:-1:1
for j=x2:-1:1
if L(i,j)==indMax
X_2=i;
Y_2=j;
break;
end
end
break;
end
删掉这个部分。
换成
X_1 = x(1);
Y_1 = y(1);
X_2 = x(end);
Y_2 = y(end);
Cannonfish
2013-04-24 · TA获得超过447个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:88.8万
展开全部
出错的原因可能是x1的计算结果有异,导致
for i=1:1:x1
for j=1:1:x2
if L(i,j)==indMax
X_1=i;
以上程序执行时X_1=i;的赋值操作出错,检测一下该图[x1,x2]=size(Ibw);的计算结果。
更多追问追答
追问

我试过了 要是换一张图就没有问题。下面这张图是没有问题的,不知道为什么有的行有的就不行了,估计还是算法的问题,但是没找出来。。。

追答
这张的白色轨迹是不闭合的,提示错误的是闭合的,试试看是不是所有白色轨迹不闭合的可以,另外再找一张闭合的对比测试下哈(比如中间那个白框换成圆圈)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式