标签

3次浏览(过去30天)
Syahrul Niezam
Syahrul Niezam 2012年2月2日
编辑: 戴夫2013年10月2日
我尝试用阈值法分割成四个区域(白色,浅灰色,深灰色,黑色)后做标注。这是代码:
清晰的所有
C = imread(“image1_069.jpg”);
一个=双(c);
B = 0(大小(a));
B = uint8(a<90);
B (a >= 110) = 180;
B (a >= 150) = 200;
B (a >= 200) = 255;
图(1);
imshow (b);
%的标签
ImgLB = b;
: ImgLB (1) = 0;ImgLB (xsize:) = 0;ImgLB (: 1) = 0;
ImgLB (:, ysize) = 0;
标签= 0;
kx = 2: xsize-1
肯塔基州= 2:ysize-1
W = 0 (3);
W (1:3, 1:3) = ImgLB (kx-1: kx + 1, ky-1:肯塔基州+ 1);
maxW = max (W (:));
如果ImgLB(kx,ky)==1 & ImgLB(kx,ky-1)==0 & maxW==1
标签=标签+ 1;
ImgLB (kx,肯塔基州)=标签;
结束
如果ImgLB(kx,ky)==1 & maxW>=1
ImgLB (kx,肯塔基州)= maxW;
结束
结束
结束
图(1)
Subplot (1,3,1), imagesc(c),title (“输入”
Subplot (1,3,2), imagesc(b), title(“阈值”
subplot(1,3,3), imagesc(unit8(ImgLB*255/max(max(ImgLB)))), title(“标签”
colormap (“灰色”);
循环= 1;
循环
国旗= 0;
kx = 2: xsize-1
肯塔基州= 2:ysize-1
如果ImgLB (kx,肯塔基州)~ = 0 & ImgLB (kx + 1,肯塔基州)~ = 0 & ImgLB (kx,肯塔基州)~ = ImgLB (kx + 1,肯塔基州)
老= ImgLB (kx,肯塔基州);
新= ImgLB (kx + 1,肯塔基州);
标志= 1;
打破
结束
结束
结束
如果标志= = 0
打破
结束
kx = 2: xsize-1
肯塔基州= 2:ysize-1
如果ImgLB (kx,肯塔基州)= =
ImgLB (kx,肯塔基州)= =新;
结束
结束
结束
结束
但是,line subplot(1,3,3), imagesc(unit8(ImgLB*255/max(max(ImgLB)))), title('Label'))
我不知道这句话里有什么错误。有什么建议吗?这是我使用的图像: http://i41.tinypic.com/243glli.jpg

答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2012年2月2日
MATLAB中没有名为unit8的例程。也许你指的是“uint8”。
5个评论
Syahrul Niezam
Syahrul Niezam 2012年2月7日
对不起,我应该在哪一行更改密码?

登录评论。


Syahrul Niezam
Syahrul Niezam 2012年2月4日
谢谢你的帮助。但是,在直线上有误差;
: ImgLB (1) = 0;ImgLB (xsize:) = 0;ImgLB (: 1) = 0;
有什么错误吗?

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!