Shi*_*ero 4 matlab image image-processing imread
我有一个灰度图像。
当我将其加载到 MATLAB 中时,我发现灰度级与原始图像不匹配。用 MATLAB 读入的图像比原始图像更亮。我究竟做错了什么?我该如何解决?
左一张是matlab读的,右一张是原创的
事实证明,您的图像有一个关联的颜色图。当您这样做时X = imread('Lena.bmp');
,您正在阅读索引图像。这意味着每个值都是颜色图的索引- 这与实际强度本身不同。
因此,读入带有颜色图的图像,然后将带有颜色图的索引图像转换为实际图像。您必须调用 的两个输出变体imread
,然后使用 相应地转换索引图像ind2rgb
:
[X,map] = imread('Lena.bmp');
im = ind2rgb(X,map);
imshow(im);
Run Code Online (Sandbox Code Playgroud)
我得到了这张图片,它与您的右图相匹配:
将来,如果您不确定图像是否包含颜色图,请调用双输出变体,然后检查包含颜色图的第二个输出是否为非空。如果是,则ind2rgb
相应地调用:
[im, map] = imread('...'); %// Place your input image location here
if ~isempty(map)
im = ind2rgb(im,map);
end
Run Code Online (Sandbox Code Playgroud)
由于您的图像是灰度图像,因此如果您想将其转换为单通道,请使用rgb2gray
,或从图像中提取任何通道。灰度工作原理使得 RGB 图像中的每个通道都完全相同。
所以:
im = rgb2gray(im);
%// Or
%im = im(:,:,1);
Run Code Online (Sandbox Code Playgroud)
图像也将是 类型double
,因此要转换为uint8
(最常见的类型),只需执行以下操作:
im = im2uint8(im);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4098 次 |
最近记录: |