MATLAB获取xyrgb像素值

MATLAB get xyrgb pixel values

我正在尝试获取一个五列矩阵,其中一行对应图像中的每个像素。前两列是像素的位置(x,y),其余列是像素的RGB值。

我可以使用循环来创建此矩阵,但出于效率目的,我想对该操作进行矢量化。我可以分别使用 img(:,:,1)、img(:,:,2) 和 img(:,:,3) 获取 RGB 值,但我不知道如何获取 x 和 y 值矢量化时关联像素的大小。

Find是查询坐标的一种方式。

您可以分离 RGB 通道,找到坐标,然后连接结果:

imgR = img(:, :, 1);
imgG = img(:, :, 2);
imgB = img(:, :, 3);
[rows, cols] = find(imgR + 1); % +1 to avoid zeros!
M = [rows, cols, imgR(:), imgG(:), imgB(:)];

您可以使用 meshgrid 获取所有 xy 坐标,然后将它们附加到您的数据中,从而生成 N x 5 矩阵。

[x, y] = meshgrid(1:size(img, 2), 1:size(img, 1));
out = cat(2, x(:), y(:), reshape(img, [], 3));