2011-03-25 115 views
0

我已经在这个网站上看到了复杂的边界追踪代码。matlab中的边界追踪

我是第一次使用matlab用户,并带有一个bwtraceboundary的小代码。

这段代码曾经追踪过叶子图像的轮廓(虽然没有追踪叶柄,这是一个较浅的阴影)......在我改变图像大小之前。那么我所有的图像都是空白的。

我以为我错过了边界的起点,并尝试了不同的值计算行& col(coords。of start pt。),但都没有工作。 你能帮我跟踪它的茎叶吗?

的代码是:

I = imread('C:\...\images3.jpg'); 
imshow(I) 
BW = im2bw(I); 
imshow(BW) 
dim = size(BW) 
col = round(dim(2))-90; 
row = min(find(BW(:,col))) 
boundary = bwtraceboundary(BW,[row, col],'N'); 
imshow(I) 
hold off; 
plot(boundary(:,2),boundary(:,1),'b','LineWidth',1); 

假设图像矩阵由输入获得“I”中的命令窗口,我将能够选择的起始角?怎么样?

+0

@Phonon:它来自图像处理工具箱。 – AVB 2011-03-25 20:28:03

+0

Woops。不知道。 – Phonon 2011-03-25 20:29:47

回答

1

是的,你可能会错过起点(或方向)。如果你这样做

imshow(I) 
[x, y] = getpts 

你将能够用鼠标指定起点。在Matlab中处理图像时,请注意列与行之间的eternal mix-up

+0

这个警告应该是粘在论坛上的某个地方=) – Phonon 2011-03-25 20:29:00

+0

@Phonon:它是[corner cases](http://stackoverflow.com/questions/1710299/corner-cases-unexpected-and-unusual- matlab) – Jonas 2011-03-25 22:07:49

+0

潜在的混淆是为什么我总是写''y,x] = getpts' – Jonas 2011-03-26 03:16:51