如何绘制图形作为improfile节目

时间:2014-03-17 06:54:43

标签: matlab

当我在我的身材上绘制一个线段时,我可以通过improfile();获得二维图 enter image description here

但是现在,我需要绘制1000张图片,所以我不能手动完成,

我试图获得improfile的返回并保存到M 然后绘制它,但它没有工作。 输出是空的 enter image description here

im=imread('./sample.jpeg');
% im=imread('./red.jpeg');
imshow(im,[]);
x=[50,50];
y=[80,80];
% improfile();
M = improfile(im,x,y);
plot3(M(:,1), M(:,2), M(:,3))

1 个答案:

答案 0 :(得分:2)

第一个问题是您的xy变量,它们应该保留您所在行的每个点的坐标。但是,您指定两次相同的坐标,因此它不是一行,而是一个解释为什么M只是一个1x1x3变量的点。

如果您正在使用RGB图像,那么变量M会为每种颜色保留行向量。要获得像improfile这样的精确图,您需要绘制三条线而不是一条3D线。此外,这需要每个插值的线上的位置,你也可以从improfile获得,只需查看函数的来源和帮助。

im = imread( './sample.jpeg' );
imshow( im, [] );
x = [ 50, 80 ];
y = [ 50, 80 ];
[ M ] = improfile( im, x, y );

D = 1 : length( M );
plot( ...
    D, M( :, :, 1 ), 'r' ...
  , D, M( :, :, 2 ), 'g' ...
  , D, M( :, :, 3 ), 'b' ...
);