我有一张灰度图像。
当我在MATLAB中加载它时,我发现灰度级别与原始图像不匹配。MATLAB读入的图像比原始图像更亮。我做错了什么?如何解决?
左边是MATLAB读取的,右边是原始的。
当我在MATLAB中加载它时,我发现灰度级别与原始图像不匹配。MATLAB读入的图像比原始图像更亮。我做错了什么?如何解决?
左边是MATLAB读取的,右边是原始的。
X = imread('Lena.bmp');
读取时,你读取的是一个索引图像。这意味着每个值都是一个指向颜色映射的索引 - 这与实际强度不同。imread
的两个输出变量,然后使用ind2rgb
相应地转换索引图像。[X,map] = imread('Lena.bmp');
im = ind2rgb(X,map);
imshow(im);
[im, map] = imread('...'); %// Place your input image location here
if ~isempty(map)
im = ind2rgb(im,map);
end
rgb2gray
或从图像中提取任何通道。 灰度的工作方式是RGB图像中的每个通道完全相同。im = rgb2gray(im);
%// Or
%im = im(:,:,1);
double
类型,因此要转换为uint8
(最常见的类型),只需执行以下操作:im = im2uint8(im);
im = rgb2gray(im);
,或者只提取一个通道:im = im(:,:,1);
。无论哪种方式,结果都是一样的。我已经相应地编辑了我的答案。如果可以的话,请告诉我它是否有效! - rayryengim = uint8(255*im);
。或者如果您懒得这样做,可以使用im = im2uint8(im);
。 - rayryeng