为什么我无法在imshow中控制颜色组件的强度?

Rom*_*man 2 rgb matlab image colors

我有以下代码:

red = [1 255 0; 0 0 0; 0 0 0];
green = [0 0 0; 0 0 0; 0 0 0];
blue = [0 0 0; 0 0 0; 0 0 0];
figure,imshow(cat(3,red,green,blue))
Run Code Online (Sandbox Code Playgroud)

根据我的"直观"理解,图像的第一个像素的颜色应该具有以下rgb组件:(1,0,0),而第二个像素应该具有以下组件:(255,0,0)(当我说"第一"和"第二"是指文本顺序:从左到右,从上到下).

换句话说,第一个像素应该几乎绝对是黑色,而第二个像素应该是红色.但是,两个像素看起来都很红.我在这里错过了什么?

Edr*_*ric 5

我不是专家,但我认为这是因为你传球双打imshow.你可以试试

imshow(uint8(cat(3, red, green, blue)))
Run Code Online (Sandbox Code Playgroud)

  • 为了补充这个答案:当图像存储在uint中时,颜色范围是0(无颜色)到255(全彩色).在双精度范围内,范围是0(无颜色)到1(全彩色).因此,如果你想让你的图像保持双打:只需将所有内容除以255.`imshow(cat(3,red,green,blue)/ 255)` (2认同)