1

在 Matlab 中,

如果我做:

output = false(5, 5);
imshow(output);

它会显示一个黑色正方形而不是白色二进制正方形图像。这有什么理由吗?我怎样才能输出一个白色的二进制正方形?

4

3 回答 3

2

原因是false被映射到0,并且true被映射到1。此外,在显示图像时,数字越大,强度越高。白色比黑色更具有强度。

另一种思考方式是,通常你有 256 个值 - 0-2550完全是黑色的,255完全是白色的。现在,假设您对两种颜色进行了量化。现在很明显0应该是黑色的。

为了显示白色方块,使用

  output = true(5,5)
于 2012-10-07T14:02:42.690 回答
1

你可以使用补全

imshow(imcomplement(false(5, 5)))

或修改默认颜色映射(引用 imshow 的文档)

imshow(X,map) 

使用颜色映射图显示索引图像 X。颜色映射矩阵可以有任意数量的行,但它必须正好有 3 列。每一行都被解释为一种颜色,第一个元素指定红光的强度,第二个是绿色,第三个是蓝色。颜色强度可以在 0.0 到 1.0 的区间内指定。

于 2012-10-07T14:26:51.863 回答
1

您还可以更改图形的颜色图以自定义 MATLAB 如何将值映射到颜色:

BW = [false,true;true,false];
imshow(BW)
set(gcf, 'Colormap',[1,1,1;0,0,0])

截屏

于 2012-10-07T15:29:04.550 回答