Matlab 在矩阵中存储像素坐标
我必须以(x,y)的形式在矩阵中存储图像像素的坐标。 我正在尝试的代码是:Matlab 在矩阵中存储像素坐标,matlab,image-processing,Matlab,Image Processing,我必须以(x,y)的形式在矩阵中存储图像像素的坐标。 我正在尝试的代码是: [x,y]=size(diff_im); count=0; for i=1:x for j=1:y if a(i,j)==0 count=count+1; new_x(count)=j; new_y(count)=i; end end end 目前,我将x和y存储在不同的阵列中。但我想知道如何在单个矩
[x,y]=size(diff_im);
count=0;
for i=1:x
for j=1:y
if a(i,j)==0
count=count+1;
new_x(count)=j;
new_y(count)=i;
end
end
end
目前,我将x和y存储在不同的阵列中。但我想知道如何在单个矩阵中存储x,y值 如果您只需要一个数组,其中每一行都是
a
中0像素的x/y坐标,则可以使用find
,后跟一个catenation
[new_y, new_x]=find(a==0); %// x/y are now correct for plotting onto an image
new_xy = [new_x,new_y];
我不太确定你想要什么。如果您只想在一个矩阵中存储一对新坐标,您可以执行一些非常基本的操作,如:
[x,y]=size(diff_im);
count=0;
for i=1:x
for j=1:y
if a(i,j)==0 %what is this line??
count=count+1;
A(count,1)=j;
A(count,2)=i;
end
end
end
然后,每一对新的坐标都可以被
A(i,:)
检索到。你的问题很不清楚x
和y
是标量。你的意思是想把new\u x
和new\u y
作为一个矩阵吗?你能准确地描述一下你想做什么以及你想要什么样的输出吗?这里的两个矩阵有大小x*y
,你希望矩阵的大小是多少?通过new\ux,new\uy]=meshgrid(1:x,1:y),您现在所做的事情可以缩短很多;新的_x(a~=0)=0;新y(a~=0)=0就我理解你的问题而言,你只需要使用new_xy(count,:)=[ji]
将成对的值存储在数组的行中,或新建_xy(:,count)=[j;i]
将它们存储在列中。