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