我试图检索一组“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
我是否正确提取亮度分量?
答案 0 :(得分:2)
正如评论所述,不需要squeeze
。这段代码对我来说也很好看。但是,如果您想跳过计算YCbCr
的所有分量只是为了提取亮度,请使用SMPTE / PAL标准来计算亮度。如果你想查找源代码,这实际上是在MATLAB的rgb2gray
中完成的。
在任何情况下,假设您的图像是无符号的8位整数:
image = double(image);
defaultImages{i} = uint8(0.299*image(:,:,1) + 0.587*image(:,:,2) + 0.114*image(:,:,3));
BTW,image
是MATLAB中的内置命令。它接收任何矩阵,并将其可视化为新图中的图像。我强烈建议您使用另一个变量来存储临时图像,因为您可能稍后会调用更多代码,这需要image
作为函数。