填写MATLAB二进制图像的行

时间:2016-08-29 18:58:58

标签: matlab

我有一条线的二进制图像,它到达图像的两侧,并希望填充它下面的部分。我不能得到imfill();做任何事情,因为它只是一条线,而不是一个封闭的形状。我想可能会在图像的下半部分添加一个边框,但是我查看了大部分文档,但没有找到任何关于能够指定一个文档的内容。有没有什么方法可以填补我图像中线下的空白?

1 个答案:

答案 0 :(得分:1)

您可以在列中使用cummax(累计最大值)来执行此操作。这将导致图像为0,直到它在每列中达到1,然后它将产生所有1。这将基本上“填充”线下方的图像。

BW = [0 0 1;
      0 1 0;
      1 0 0];

BW = cummax(BW, 1);

%     0     0     1
%     0     1     1
%     1     1     1

如果您使用的是比R2014b更旧的MATLAB版本,则可以使用cumsum

执行类似的操作
BW = cumsum(BW, 1) > 0;