В Matlab, как я могу эффективно применить операцию с 1D-коэффициентом, установленным для каждого цвета изображения, при сохранении в 3D-массиве с использованием математической математики? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть большое изображение в трехмерном массиве с осями image [y, x, color] Я хочу применить ту же операцию, используя массив из 3 элементов для коэффициентов.

Например, в настоящее время я делаюследующее:

rgb(:,:,1) = (rgb(:,:,1) - kBlackOffset(1)) * gain(1);
rgb(:,:,2) = (rgb(:,:,2) - kBlackOffset(2)) * gain(2);
rgb(:,:,3) = (rgb(:,:,3) - kBlackOffset(3)) * gain(3);

Похоже, я должен быть в состоянии сделать это более эффективным способом в одной строке.

1 Ответ

0 голосов
/ 16 октября 2018

Просто переключите ваши смещения и увеличьте до 3-х измерений.

Вот быстрый и грязный пример:

rgb = imread('peppers.png');
rgb = im2double(rgb);
gain = 1:3;
kBlackOffset = 1:3;
rgb = rgb - reshape(gain,[1 1 3]).*reshape(kBlackOffset,[1 1 3]);

Если вы используете старую версию MATLAB, вам может понадобитьсяДля этого:

rgb = imread('peppers.png');
rgb = im2double(rgb);
gain = 1:3;
kBlackOffset = 1:3;
rgb = bsxfun(@minus,rgb,reshape(gain,[1 1 3]).*reshape(kBlackOffset,[1 1 3]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...