Скопируйте свою маску в третье измерение и примените ее как обычно. Затем просто измените выходной вектор в матрицу со строкой для каждого пикселя в маске и столбцом для каждого цветового канала. Вот пример использования встроенного изображения:
% Load image
X = imread(('board.tif'));
X_size = size(X);
% Make mask
mask = zeros(X_size(1:2));
mask(250:251, 100:102) = 1;
mask = repmat(mask, [1 1 X_size(3)]);
mask = logical(mask);
% Apply mask to image
X_data = X(mask);
X_data = reshape(X_data, [length(X_data)/X_size(3) X_size(3)]);
% Compute stats
mean(X_data)
cov(double(X_data))
Теперь, просто чтобы проверить, проверяем ли мы первый пиксель внутри нашей маски на исходном изображении X
>> X(250, 100, :)
ans(:,:,1) =
144
ans(:,:,2) =
125
ans(:,:,3) =
123
должно равняться первой строке в X_data
:
>> X_data
X_data =
144 125 123
128 138 135
180 186 184
60 68 70
38 42 26
55 49 44