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
获取所有 x
和 y
坐标,然后将它们附加到您的数据中,从而生成 N x 5
矩阵。
[x, y] = meshgrid(1:size(img, 2), 1:size(img, 1));
out = cat(2, x(:), y(:), reshape(img, [], 3));
我正在尝试获取一个五列矩阵,其中一行对应图像中的每个像素。前两列是像素的位置(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
获取所有 x
和 y
坐标,然后将它们附加到您的数据中,从而生成 N x 5
矩阵。
[x, y] = meshgrid(1:size(img, 2), 1:size(img, 1));
out = cat(2, x(:), y(:), reshape(img, [], 3));