Image 如何使用矩阵创建图像?
我想知道RGB[228198208]是什么颜色,所以我写了这个函数:Image 如何使用矩阵创建图像?,image,matlab,image-processing,matrix,Image,Matlab,Image Processing,Matrix,我想知道RGB[228198208]是什么颜色,所以我写了这个函数: function showColor() im = ones(500, 500, 3); color = ones(500, 500); R = color * 228; G = color * 198; B = color * 208; im(:, :, 1) = R; im(:, :, 2) = G; im(:, :, 3) = B; imshow(im); 结果是白色的,似乎不正确 然后我试了一下: function
function showColor()
im = ones(500, 500, 3);
color = ones(500, 500);
R = color * 228;
G = color * 198;
B = color * 208;
im(:, :, 1) = R;
im(:, :, 2) = G;
im(:, :, 3) = B;
imshow(im);
结果是白色的,似乎不正确
然后我试了一下:
function showColor2()
im = imread('pic.jpg'); %It's a 2448*3264 picture
color = ones(2448, 3264);
R = color * 228;
G = color * 198;
B = color * 208;
im(:, :, 1) = R;
im(:, :, 2) = G;
im(:, :, 3) = B;
imshow(im);
此函数显示正确的颜色,但看起来与第一个颜色一样(图像大小除外)
所以我的问题是:
imread()
中得到的矩阵有什么区别吗
为什么第二个功能运行良好double
数组的,其中值在0到1.0之间(这是ones
创建的默认类型。请尝试键入class(ones(500500))
)。另一个更有效,基于每个维度8位。这些数组由个(N,M,'uint8')
创建
要使用double
图像格式,请使用原始代码,但请确保值在0到1.0之间。因此,在你的情况下:
im = ones(500, 500, 3);
color = ones(500, 500);
R = color * 228/256;
G = color * 198/256;
B = color * 208/256;
im(:, :, 1) = R;
im(:, :, 2) = G;
im(:, :, 3) = B;
imshow(im);
试一试
Matlab支持两种不同的图像格式。一个是基于double
数组的,其中值在0到1.0之间(这是ones
创建的默认类型。请尝试键入class(ones(500500))
)。另一个更有效,基于每个维度8位。这些数组由个(N,M,'uint8')
创建
要使用double
图像格式,请使用原始代码,但请确保值在0到1.0之间。因此,在你的情况下:
im = ones(500, 500, 3);
color = ones(500, 500);
R = color * 228/256;
G = color * 198/256;
B = color * 208/256;
im(:, :, 1) = R;
im(:, :, 2) = G;
im(:, :, 3) = B;
imshow(im);
默认情况下,image/imshow将浮点数组显示为范围为[0,1]的图像。如果希望图像显示为[0255]范围,则需要将该范围传递到这些函数中。第二种方法有效,因为imread返回本机数据类型,通常是uint8,因此修改后的图像保持为uint8而不是双精度,然后imshow默认情况下将uint8数组显示为范围为[0255]的图像。不需要变量
color
,也可以写入im(:,:,1)=228;im(:,:,2)=198;im(:,:,3)=208
(不是解决问题,只是简化代码或答案中的代码)默认情况下,image/imshow将浮点数组显示为范围为[0,1]的图像。如果希望图像显示为[0255]范围,则需要将该范围传递到这些函数中。第二种方法有效,因为imread返回本机数据类型,通常是uint8,因此修改后的图像保持为uint8而不是双精度,然后imshow默认情况下将uint8数组显示为范围为[0255]的图像。不需要变量color
,也可以写入im(:,:,1)=228;im(:,:,2)=198;im(:,:,3)=208代码>(不是解决问题,只是简化代码或答案中的代码)