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,目的也达到了吧,希望对你有所帮助。追问哎 您说的我都没懂 我的意思是主体部分保留 左下角的一块白色不要 谢谢你的回答