gpt4 book ai didi

matlab - 如何从图像中删除/替换边框像素?

转载 作者:行者123 更新时间:2023-12-02 09:37:36 25 4
gpt4 key购买 nike

我是 Matlab 新手,需要一些帮助。我有一个分段图像,我想从图像边框中删除背景(或黑色)像素(值== 1)。我已经能够获得我不想要的边界像素的图像掩模。 Interior_blackPixels 很有用,但我想摆脱outer_blackPixels,但是,我不确定如何使用我拥有的掩码(outer_blackPixels)检索没有黑色像素边框的最终图像。到目前为止的代码如下所示:

img =   [1 1 1 1 1 1 1 1
1 1 1 1 2 2 2 1
1 1 1 2 2 2 2 1
1 1 1 2 2 2 2 1
1 1 2 2 2 2 2 1
1 1 2 2 2 2 2 1
1 3 3 1 1 1 3 1
1 3 3 1 1 1 3 1
1 3 3 3 3 3 3 1
1 1 1 1 1 1 1 1];

% Get the black pixels image array
blackPixels = (img == 1);

% Obtain the other pixels by negating the black pixels
otherPixels = ~blackPixels

% Get the border black pixels (or mask)
outer_blackPixels = blackPixels & ~imclearborder(blackPixels)
interior_blackPixels = blackPixels & ~outer_blackPixels

请注意,我不介意将outer_blackPixels的像素值替换为“0”,因为这不会影响我的分析。因此,我希望我的最终图像是这样的:

img =   [0 0 0 0 0 0 0 0
0 0 0 0 2 2 2 0
0 0 0 2 2 2 2 0
0 0 0 2 2 2 2 0
0 0 2 2 2 2 2 0
0 0 2 2 2 2 2 0
0 3 3 1 1 1 3 0
0 3 3 1 1 1 3 0
0 3 3 3 3 3 3 0
0 0 0 0 0 0 0 0];

任何帮助/建议将不胜感激。谢谢!

最佳答案

您可以使用bwlabel来区分1的区域。由于此函数仅处理二进制图像,因此您可以使用逻辑img转换为二进制:

L=bwlabel(~logical(img-1),4)

然后将边框转换为 0:

img(L==L(1))=0

img =

 0     0     0     0     0     0     0     0
0 0 0 0 2 2 2 0
0 0 0 2 2 2 2 0
0 0 0 2 2 2 2 0
0 0 2 2 2 2 2 0
0 0 2 2 2 2 2 0
0 3 3 1 1 1 3 0
0 3 3 1 1 1 3 0
0 3 3 3 3 3 3 0
0 0 0 0 0 0 0 0

关于matlab - 如何从图像中删除/替换边框像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41216646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com