Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 8位彩色图像矩阵表示法_Image_Matlab_Image Processing_Rgb - Fatal编程技术网

Image 8位彩色图像矩阵表示法

Image 8位彩色图像矩阵表示法,image,matlab,image-processing,rgb,Image,Matlab,Image Processing,Rgb,我刚刚开始自学图像处理,我正在使用MATLAB。我已经熟悉了基本的图像操作。当我阅读下面的图像(res:225x300)时,这应该是一个8位彩色图像,我希望生成的矩阵有3个维度,每个维度对应一个RGB。通过一个关于8位彩色图像的简单网络搜索,我找到了维基百科,其中包含以下信息: 最简单的量化形式(通常称为8位真彩色)是简单地将3位分配给红色,3位分配给绿色,2位分配给蓝色(人眼对蓝光不太敏感),以创建3-3-2 因此,我期望图像矩阵具有225x300x3维,具有上述b/w RGB位分布。但在我检

我刚刚开始自学图像处理,我正在使用MATLAB。我已经熟悉了基本的图像操作。当我阅读下面的图像(res:225x300)时,这应该是一个8位彩色图像,我希望生成的矩阵有3个维度,每个维度对应一个RGB。通过一个关于8位彩色图像的简单网络搜索,我找到了维基百科,其中包含以下信息:

最简单的量化形式(通常称为8位真彩色)是简单地将3位分配给红色,3位分配给绿色,2位分配给蓝色(人眼对蓝光不太敏感),以创建3-3-2

因此,我期望图像矩阵具有225x300x3维,具有上述b/w RGB位分布。但在我检查了图像矩阵的尺寸后,我发现它是225x300 unit8,这是人们对8位灰度图像的期望。但是,正如任何图像查看器所看到的那样,该图像是彩色图像。那么,我缺乏知识或做错了什么呢?我如何阅读图像有问题吗

此外,我还想到uint8是最小的无符号整数类。那么,我们怎样才能得到4,8,10等的彩色图像,比特的表示和创建呢

我的代码:

>> I_8bit = imread('input_images\8_bit.png');
>> size(I_8bit)
ans =
   225   300
>> class(I_8bit)
ans =
    'uint8'
>> I_24bit = imread('input_images\24_bit.png');
>> size(I_24bit)
ans =
   225   300     3
>> class(I_24bit)
ans =
    'uint8'

(来源:)

Matlab支持,包括

  • RGB图像,允许以R、G、B分量存储任意颜色。图像由3D
    m
    ×
    n
    ×
    3
    数组定义
  • 索引图像,其中每个像素由彩色贴图的索引定义。图像由2D
    m
    ×
    n
    数组和
    c
    ×
    3
    colormap定义,其中
    c
    si为颜色数
看起来您正在加载的图像已编制索引。因此,您需要的两个输出版本来获取2D数组和颜色贴图:

[I_8bit, cmap] = imread('input_images\8_bit.png');
imshow(I_8bit, cmap)
要显示图像,需要指定2D阵列和颜色贴图:

[I_8bit, cmap] = imread('input_images\8_bit.png');
imshow(I_8bit, cmap)
例如,您可以看到更改颜色贴图的效果

cmap_wrong = copper(size(cmap, 1)); % different colormap with the same size
imshow(I_8bit, cmap_wrong)
要转换为RGB图像,请使用:

然后可以显示为

imshow(I_8bit_RGB)

要有225x300x3图像,您应该有三个通道的彩色图像,其中每个通道使用unit8表示。您可以从该链接看到,颜色可以使用一个通道8位颜色范围来表示。“那么,我们如何能得到4、8、10等的彩色图像,并表示和创建位?”4位图像使用每个像素一个字节(8位)进行存储。这可以减少到存储到文件的字节数的一半,但不值得在内存中这样做,因为这会使一切变得更加困难。图像处理库通常只处理内存中的8位、16位等图像。对于表示为16位图像的10位或12位图像也是如此。实际上,我们是否不使用这些4位、10位和12位图像,而是使用8位和16位图像,因为在存储4位和8位图像时,它们都表示为8位图像?