灰度图像中的MATLAB像素值

时间:2012-05-25 16:04:37

标签: matlab image-processing

说,我有一个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

2 个答案:

答案 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    
   }
}