如何计算矩阵中的1和0的数量?

时间:2013-06-02 08:49:44

标签: matlab image-processing matrix

我有一张图片,我只剪了一列。之后我把它变成了逻辑,所以这一栏中只有0和1。

假设此列中的值为

1111000110000000000000011111111

我想计算每个块或每个零块的长度。

结果将是

1 - 4 (first 1)
0 - 3 (first 0)
1 - 2 
and so on...

我知道只计算整个列,但我不能为每个不同的块执行此操作。有人请帮帮我。

1 个答案:

答案 0 :(得分:6)

vec成为向量(1-by-n)的0和1,然后您可以使用以下代码

rl = ( find( vec ~= [vec(2:end), vec(end)+1] ) );
data =  vec( rl );
rl(2:end) = rl(2:end) - rl(1:end-1);

rl将为您提供连续的0和1的数量,而data将告诉您每个块是否为0或1。

此问题与run length coding密切相关。

演示:

vec = [1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1];
rl = ( find( vec ~= [vec(2:end), vec(end)+1] ) );
data =  vec( rl ),
rl(2:end) = rl(2:end) - rl(1:end-1),

data =
     1     0     1     0     1

rl =
     4     3     2    14     8