MATLAB获取xyrgb像素值

时间:2016-10-02 22:08:26

标签: matlab computer-vision

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

我可以使用循环来创建这个矩阵,但我想为了效率目的而向量化这个操作。我可以分别用img(:,:1),img(:,:,2)和img(:,:,3)获取RGB值,但我不知道如何得到x和y值矢量化时相关像素的数据。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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(:)];