在二进制图像中删除边框像素

17次观看(最近30天)
大家好,下面是二进制图像
我想在下图中删除红色(我用油漆突出显示)所示的边框像素
我不能使用Imclearborder来完成此任务,因为它也消除了任何对边界的像素。因此,我认为我们可以编写一个循环,并将每一行的第一个和最后一个白蛋白设置为零。我不太确定如何编写循环。谁能帮我解决这个问题?
9条评论
Apoorva Maiya
Apoorva Maiya 2020年5月17日
谢谢大家的回复,我能够自己编写代码。

登录发表评论。

接受的答案

Apoorva Maiya
Apoorva Maiya 2020年5月17日
b = bwskel(img);%骨架图像
[行,col] = size(b);
%%找到右边缘和左边缘
右Gecolumn = Zeros(1,行);
左gecolumn =零(1,行);
为了行= 1:行
col1 = find(b(row,:),1,,'最后的');
col2 = find(b(row,:),1,,'第一的');
如果〜ISEMPTY(COL1)&& 〜ISEMPTY(COL2)
右Gecolumn(row)= col1;
左gecolumn(row)= col2;
结尾
结尾
%%去除边缘像素
为了i = 1:长度(RightedGecolumn)
k = rightedgecolumn(i);
如果k == 0%%如果整行没有白色像素
b(i,:)= 0;
别的
b(i,k)= 0;
结尾
结尾

更多答案(0)

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!