【问题标题】:Storing pixel coordinates in a matrix将像素坐标存储在矩阵中
【发布时间】:2023-04-07 10:32:01
【问题描述】:

我必须以 (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 值存储在单个矩阵中。

【问题讨论】:

  • 你的问题很不清楚。 xy 是标量。你的意思是你想让new_xnew_y 成为一个矩阵?你能准确描述你想要做什么以及你想要什么输出吗?
  • 这里的两个矩阵的大小为x*y,你期望什么大小的矩阵? new_x,new_y]=meshgrid(1:x,1:y);new_x(a~=0) = 0;new_y(a~=0) = 0; 可以缩短你现在所做的事情
  • 据我了解您的问题,您只想使用new_xy(count,:) = [j i ]; 将您的值对存储在数组的行中或使用new_xy(:,count) = [j; i]; 将它们存储在列中。

标签: matlab image-processing


【解决方案1】:

如果您只需要一个数组,其中每一行都是a 中为 0 的像素的 x/y 坐标,您可以使用find,后跟一个连接。

[new_y, new_x]=find(a==0); %// x/y are now correct for plotting onto an image
new_xy = [new_x,new_y];

【讨论】:

    【解决方案2】:

    我不确定你想要什么。如果你只想在一个矩阵中存储几个新坐标,你可以做一些非常基本的事情,比如:

    [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,:) 可以检索每对新坐标

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多