matlab图像处理两张图的问题 25
想请问我有一张二值化后的图现在里面有两块图形是白色的(不规则破碎的矩形)其它背景全是黑的我想找出那两块白色图形的中心点然后以中心点的上下左右分别长出白色也就是各自填满成一...
想请问 我有一张二值化后的图
现在里面有两块图形是白色的(不规则破碎的矩形)
其它背景全是黑的
我想找出那两块白色图形的中心点 然后以中心点的上下左右
分别长出白色 也就是各自
填满成一个白色的矩形
这是我的源码
[T,TotalBlob]=bwlabel(bw,4);
stats=regionprops(T,'all');
for w=1:TotalBlob
ind = find(T == w);
H=cat(1,stats(w).SubarrayIdx);
h=H{1};
w=H{2};
h1=length(h);
w1=length(w);
if w1 > 5*h1
bw(ind) = 0;
else
bw=bw;
end
end
figure,imshow(bw)
有用gildor高手大人的
% bw为二值化后的图
% top,bottom,left,right为要画的矩形的上下左右位置
[M N] = size(bw);
top = M;
bottm = 1;
left = N;
right = 1;
% 找出上下左右位置
for m=1:M
for n=1:N
if (bw(m,n)==1)
top = min(top,m);
bottom = max(bottom,m);
left = min(left,n);
right = max(right,n);
end;
end;
end;
% 填充成白色矩形
for m=top:bottm
for n=left:right
bw(m,n)=1;
end;
end;
% 显示结果
imshow(bw);
只有一个图时效果非常棒
只是当我出现两个图时 他们会相连在一起 变成非常大的一块白色矩形
要怎么才能使它们各自变成白色矩形呢
希望gildor高手大人 能帮帮忙 非常谢谢您!!!
谢谢dsj6700417高手 我自己后来也用rgb写了出来 所以才把取图的问题关闭
不过还是很谢谢你 如果我昨天没关闭的话 一定选你当最佳解答!!
现在是这个标签化的问题 我的结果是有两个不规则图形 想把它们都各自填满为白色矩形 填满矩形的码gildor高手有写出来 只是如果要各自都填满成矩形 我有试著写 都不成功
希望各位高手一起帮帮忙 谢谢!!! 展开
现在里面有两块图形是白色的(不规则破碎的矩形)
其它背景全是黑的
我想找出那两块白色图形的中心点 然后以中心点的上下左右
分别长出白色 也就是各自
填满成一个白色的矩形
这是我的源码
[T,TotalBlob]=bwlabel(bw,4);
stats=regionprops(T,'all');
for w=1:TotalBlob
ind = find(T == w);
H=cat(1,stats(w).SubarrayIdx);
h=H{1};
w=H{2};
h1=length(h);
w1=length(w);
if w1 > 5*h1
bw(ind) = 0;
else
bw=bw;
end
end
figure,imshow(bw)
有用gildor高手大人的
% bw为二值化后的图
% top,bottom,left,right为要画的矩形的上下左右位置
[M N] = size(bw);
top = M;
bottm = 1;
left = N;
right = 1;
% 找出上下左右位置
for m=1:M
for n=1:N
if (bw(m,n)==1)
top = min(top,m);
bottom = max(bottom,m);
left = min(left,n);
right = max(right,n);
end;
end;
end;
% 填充成白色矩形
for m=top:bottm
for n=left:right
bw(m,n)=1;
end;
end;
% 显示结果
imshow(bw);
只有一个图时效果非常棒
只是当我出现两个图时 他们会相连在一起 变成非常大的一块白色矩形
要怎么才能使它们各自变成白色矩形呢
希望gildor高手大人 能帮帮忙 非常谢谢您!!!
谢谢dsj6700417高手 我自己后来也用rgb写了出来 所以才把取图的问题关闭
不过还是很谢谢你 如果我昨天没关闭的话 一定选你当最佳解答!!
现在是这个标签化的问题 我的结果是有两个不规则图形 想把它们都各自填满为白色矩形 填满矩形的码gildor高手有写出来 只是如果要各自都填满成矩形 我有试著写 都不成功
希望各位高手一起帮帮忙 谢谢!!! 展开
1个回答
展开全部
http://zhidao.baidu.com/question/73534384.html?fr=id_push&adt=0_983#
这个问题我刚做出来,不知是否还需要:
%预先把一张命名为'1.bmp'的图片放在当前路径里面
I=imread('1.bmp');%读入图像
figure(1);
imshow(I);%显示原图像
B1=im2bw(I,graythresh(I));
figure(2);
imshow(B1);%显示二值图像
R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);
R=immultiply(R,B1);%图象乘积
G=immultiply(G,B1);
B=immultiply(B,B1);
A(:,:,1)=R;A(:,:,2)=G;A(:,:,3)=B;A;
figure(3)
imshow(uint8(A))
这个问题我刚做出来,不知是否还需要:
%预先把一张命名为'1.bmp'的图片放在当前路径里面
I=imread('1.bmp');%读入图像
figure(1);
imshow(I);%显示原图像
B1=im2bw(I,graythresh(I));
figure(2);
imshow(B1);%显示二值图像
R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);
R=immultiply(R,B1);%图象乘积
G=immultiply(G,B1);
B=immultiply(B,B1);
A(:,:,1)=R;A(:,:,2)=G;A(:,:,3)=B;A;
figure(3)
imshow(uint8(A))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询