【发布时间】:2011-02-06 23:14:08
【问题描述】:
或者说1 表示 RGB 图像的白色?
因为这个答案,我有这个问题:
How to convert a grayscale matrix to an RGB matrix in MATLAB?
有人可以澄清一下吗?
【问题讨论】:
标签: matlab image-manipulation rgb
或者说1 表示 RGB 图像的白色?
因为这个答案,我有这个问题:
How to convert a grayscale matrix to an RGB matrix in MATLAB?
有人可以澄清一下吗?
【问题讨论】:
标签: matlab image-manipulation rgb
Image data in MATLAB 可以存储为different data types。图像的类型及其存储的数据类型将决定什么构成颜色“白色”:
grayscale image 矩阵(每个像素有一个数据值)可以是以下任何一种数据类型:uint8、uint16、int16、single 或 double。来自文档:
对于
single类的矩阵或double,使用默认灰度 colormap,强度0代表 黑色和强度1代表 白色的。对于uint8类型的矩阵,uint16,或int16,强度intmin(class(I))代表黑色和 强度intmax(class(I))代表白色。
RGB image 矩阵(每个像素具有三个数据值:红色、绿色和蓝色)可以是以下任何一种数据类型:uint8、uint16、single 或 double .来自文档:
在
single类的真彩色数组中 或double,每个颜色分量是一个 介于 0 和 1 之间的值。一个像素,其 颜色分量是 (0,0,0) 是 显示为黑色,以及一个像素,其 颜色分量是 (1,1,1) 是 显示为白色。
【讨论】:
rgbImage = grayImage / 255; 是将灰度图像转换为双精度类型的 RGB 图像的正确解决方案?
1 的double 矩阵实际上没有任何意义?如果是这样,为什么double(grayImage) 不会通过255 隐式/自动缩放结果,而是要求我们由double(grayImage)./255 明确执行?
double 矩阵 可以 具有大于 1 的值,但如果该矩阵应该是 图像数据矩阵,那么当您将图像数据传递给它们时,大多数(如果不是全部)图像处理函数都会引发错误/警告(因为它们希望 double 类型的图像数据矩阵的值介于 0 和 1 之间)。转换为双精度并不会自动缩放 255,因为并非所有要转换为双精度的东西都是图像数据矩阵,因此您必须自己进行缩放。
truecolor,有falsecolor吗?