matlab图像处理,我已经将一副图片转成二值图了,现在需要计算图片里面白点构成物体的长度和深度.

就是对应的横向白像素点数目和纵向白像素点数目,已经定标了能算了但是我是初学者还没弄清楚怎么写.大概思路是创建一个矩阵扫描每行碰到白点就记下1每多1个就+1,列的也一样这样数据最大值就是横向和纵向白点的总是了 希望有大神写给我看看

p=imread('000.jpg');
pp=rgb2gray(p);
pp=1*(pp>=128)+0*~(pp>=128); %转换为二值图
imshow(pp);
[r,c]=size(pp); %图片宽高
rmax=0;cmax=0;
for k=1:r
mx=sum(pp(k,:)); %值为1为白点,求和即为其宽度
rmax=max([rmax mx]);
end
for k=1:c
mx=sum(pp(:,k));
cmax=max([cmax mx]);
end
disp(' 横长 纵深');
disp([rmax cmax]);追问

图片是104*144,对比一下你的函数算出来数据不对啊..

追答

% 对不起是我搞错,要找白点,需统计 0 的个数(首先要确认 pp 必须是二值,disp(pp) 看看)
p=imread('000.jpg');
pp=rgb2gray(p);
pp=1*(pp>=128)+0*~(pp>=128); %转换为二值图
imshow(pp);
[r,c]=size(pp); %图片宽高
rmax=0;cmax=0;
for k=1:r
mx=c-sum(pp(k,:)); %值为1为白点,求和即为其宽度
rmax=max([rmax mx]);
end
for k=1:c
mx=r-sum(pp(:,k));
cmax=max([cmax mx]);
end
disp(' 横长 纵深');
disp([rmax cmax]);

追问

图片是144*104的 用了新的程序..显示是144 和 104 就是最大值..我晕了..求解..

温馨提示:答案为网友推荐,仅供参考
相似回答