Как получить канал яркости из изображения RGB в MATLAB
Я пытаюсь получить компонент яркости из набора изображений 'TIF' в Matlab. Код ниже:
function [defaultImages] = readImgLum(nFiles)
% readImgLum reads a specified number of images in 'tif' format
% and retrieves the luminance component
narginchk(1, 1);
defaultImages = cell(nFiles, 1); % store all images in a vector
for i = 1 : nFiles
imagePreffix = int2str(i);
imageFullName = strcat(imagePreffix, '.tif');
image = imread(imageFullName);
imageYCbCr = rgb2ycbcr(image);
defaultImages{i} = squeeze(imageYCbCr(:,:,1));
end
Я правильно извлекаю компонент яркости?
1 ответ
Как говорится в комментариях, нет необходимости squeeze
, Этот код также выглядит хорошо для меня. Однако, если вы хотите пропустить вычисления всех компонентов YCbCr
просто для извлечения яркости используйте стандарт SMPTE / PAL для расчета яркости. Это на самом деле сделано в rgb2gray
в MATLAB, если вы хотите посмотреть источник.
В любом случае, если ваши изображения имеют 8-битное целое число без знака:
image = double(image);
defaultImages{i} = uint8(0.299*image(:,:,1) + 0.587*image(:,:,2) + 0.114*image(:,:,3));
КСТАТИ, image
встроенная команда в MATLAB Это берет в любой матрице, и визуализирует это как изображение в новой фигуре. Я настоятельно рекомендую вам использовать другую переменную для хранения вашего временного изображения, так как вы, возможно, позже будете вызывать дополнительный код, который требует image
как функция.