在matlab中求图像的边界坐标

在matlab中求图像的边界坐标,matlab,coordinates,boundary,Matlab,Coordinates,Boundary,我想在matlab中逆时针找到手轮廓的边界点(坐标)。i、 e.从任何点开始逆时针移动并存储坐标 简单的行-列扫描没有用处,因为坐标必须是8-连接的 请帮助我您可以使用imcontour获取轮廓,然后fliplr逆时针排列 用你的形象: I = imread('Image.jpg'); % --- Get a BW image, remove the title BW = rgb2gray(I)<200; BW(1:50,:) = 0; % With a logical image,

我想在matlab中逆时针找到手轮廓的边界点(坐标)。i、 e.从任何点开始逆时针移动并存储坐标

简单的行-列扫描没有用处,因为坐标必须是8-连接的


请帮助我

您可以使用
imcontour
获取轮廓,然后
fliplr
逆时针排列

用你的形象:

I = imread('Image.jpg');

% --- Get a BW image, remove the title
BW = rgb2gray(I)<200;
BW(1:50,:) = 0;

% With a logical image, simply use:
% BW = double(Img);

% --- Find the outer contour coordinates
BW = imfill(BW, 'holes');
C = imcontour(BW,1);

% --- Arrange the contour counter-clockwise
x = fliplr(C(1,2:end));
y = fliplr(C(2,2:end));

% --- Display    
imshow(BW)
hold on
plot(x, y);

% --- Display regularly spaced markers to check the order
bin = linspace(1,numel(x), 11);
bin = round(bin(1:end-1));
cm = jet(numel(bin));
for i = 1:numel(bin)
    scatter(x(bin(i)), y(bin(i)), 'o', 'MarkerEdgeColor', 'none', ...
        'MarkerFaceColor', cm(i,:));
    text(x(bin(i)), y(bin(i))+10, num2str(i), 'color', cm(i,:));
end
I=imread('Image.jpg');
%---获取BW图像,删除标题

BW=rgb2gray(I)非常感谢您的解决方案。但是,如果我想要从
bin=linspace(1,numel(x),11)中选择点的坐标这里给出11分。如何获得这些点的坐标?当使用fliplr时,我以顺时针的方式得到分数,正如你所说的相反<代码>%---逆时针排列轮廓x=fliplr(C(1,2:end));y=fliplr(C(2,2:end))
轮廓的坐标位于
x
y
中,带有
bin
的零件仅用于可视化目的。而
fliplr
只是翻转向量,因此根据您的方向,您可能想使用它,也可能不想使用它。如果向量是垂直的,则可能需要使用
flipud
。明白了吗?明白了。谢谢还有一件事,我使用的是源图像I,它是二进制的,而不是RGB。如何修改此代码以使用它?简单地删除这些步骤是行不通的。请发布您的源图像或回答以下几个问题:您是否使用
imread
?如果是,那么
class(Img)
max(Img(:)
的输出是什么?
class(Img)
的输出是逻辑的&
max(Img(:)
:1