说,我有一个RGB图像rgb
和一个空间坐标列表coords
。我想在空间坐标处提取像素值,例如[x1 y1]
,[x2 y2]
和[x3 y3]
。对于RGB图像,我可以使用:
rgb = imread('sample.jpg')
coords = [x1 y1; x2 y2; x3 y3];
pixelData = impixel(rgb, coords(:,1), coords(:,2));
返回指定图像像素的红色,绿色和蓝色值。
impixel
仅适用于彩色(RGB)图像。但我想从灰度图像I
中提取像素值。我可以使用for
循环执行此操作,如下所示
for i = 1:size(coords,1)
pixelData(i,:) = I(coords(i,2), coords(i,1));
end
我想避免使用for
循环。还有另一种方法可以实现这个目标吗?
imstats = regionprops(mask, I,'PixelValues');
也有效,但我首先需要一张图片mask
。
答案 0 :(得分:5)
使用sub2ind
。
pixelData = I(sub2ind(size(I), coords(:,2), coords(:,1)));
答案 1 :(得分:-3)
void Image::createImage(int width_x, int height_y)
{
pixelData = new Color* [width]; // array of Pixel*
for (int x = 0; x < width; x++)
{
pixelData[x] = new Color [height]; // this is 2nd dimension of pixelData
}
}