搜索

matlab图像处理 原图如下 希望能去掉左下角白色小块 求高手解答!在线等

发布网友 发布时间:2022-04-25 23:18

我来回答

2个回答

热心网友 时间:2023-10-17 10:01

用4连通不就可以了吗
你要的腰形区域面积肯定是最大的
而你要去掉的那一个区域是面积第二大的,找出来去掉它就可以了

如果你原来的图像是个二值图BW

[L num]=bwlabel(BW,4); %4连通标记
s=zeros(num,1);
for ii=1:num
s(ii)=sum(sum(L==ii)); %计算每个连通区域的面积
end
[ss IX]=sort(s,'descend'); %面积从大到小排序
BWout=xor(BW,L==IX(2)); %从原来图像中扣除面积大小排第二的区域

你会发现除了左下那快比较大的区域外,还有很多小的区域
如果你只要保留面积最大的腰形区域,最后两句改成这样就可以了
[ms ind]=max(s);
BWout=(L==ind);
当然,只保留最大快,其实用bwareaopen可以轻松实现
BWout(BW,s,4); %s对应一个面积值,小于最大的那块面积,大于其他小块面积

热心网友 时间:2023-10-17 10:02

rgb2gray转成灰度图,dither转成二进制图,两层for循环,判断一下元素值是否为1[white],为1则置为0[黑],OK !
顺便提一下,您的意思不就是把图变成全黑的吗?size取维数,zeros所有元素置0,目的也达到了吧,希望对你有所帮助。追问哎 您说的我都没懂 我的意思是主体部分保留 左下角的一块白色不要 谢谢你的回答

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top