matlab测量裂缝宽度问题(图像处理.)00000111110001110----①00001111111011111----②以上是图像二值化后的矩阵(0代表黑色,1代表白色)用matlab中什么算法分别统计①中的两块1的个数,即,第一块中1个

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/16 04:02:53
matlab测量裂缝宽度问题(图像处理.)00000111110001110----①00001111111011111----②以上是图像二值化后的矩阵(0代表黑色,1代表白色)用matlab中什么算法分别统计①中的两块1的个数,即,第一块中1个

matlab测量裂缝宽度问题(图像处理.)00000111110001110----①00001111111011111----②以上是图像二值化后的矩阵(0代表黑色,1代表白色)用matlab中什么算法分别统计①中的两块1的个数,即,第一块中1个
matlab测量裂缝宽度问题(图像处理.)
00000111110001110----①
00001111111011111----②
以上是图像二值化后的矩阵(0代表黑色,1代表白色)
用matlab中什么算法分别统计①中的两块1的个数,即,第一块中1个数=5,第二块中1个数=3?

matlab测量裂缝宽度问题(图像处理.)00000111110001110----①00001111111011111----②以上是图像二值化后的矩阵(0代表黑色,1代表白色)用matlab中什么算法分别统计①中的两块1的个数,即,第一块中1个

程序可以这样写:

a='00000111110001110';   %列出要判断的字符串.
b=strfind(a,'1');   %找出字符串a中字符等于1的位置.
c=diff(b);   %求b的差分.
d=find(c~=1);   %找出c中不等于1的位置.这也就是各块的分隔点.
e=[d(1) diff(d) length(b)-d(end)];   %利用分隔点d写出各块的长度.

e中的每一项,就是每一块中1的个数:

>> disp(e)
     5     3

最后一行e这样写的目的,是为了适应不止两块的情况,比如:

a='11000111110001101';

这个a是四块,同样运行这个程序,显示各个变量,会得到:

a =

11000111110001101


b =

     1     2     6     7     8     9    10    14    15    17


c =

     1     4     1     1     1     1     4     1     2


d =

     2     7     9


e =

     2     5     2     1

可见结果是正确的.


若有不解,欢迎追问.