【发布时间】:2012-09-27 23:20:27
【问题描述】:
在 Matlab 中,
如果我这样做:
output = false(5, 5);
imshow(output);
它会显示一个黑色正方形而不是白色二进制正方形图像。这有什么理由吗?如何输出一个白色的二进制方块?
【问题讨论】:
在 Matlab 中,
如果我这样做:
output = false(5, 5);
imshow(output);
它会显示一个黑色正方形而不是白色二进制正方形图像。这有什么理由吗?如何输出一个白色的二进制方块?
【问题讨论】:
原因是false映射到0,true映射到1。
此外,在显示图像时,数字越大,强度越高。白色比黑色更强烈。
另一种思考方式是,通常您有 256 个值 - 0-255。 0 完全是黑色,255 完全是白色。现在,假设您对两种颜色进行了量化。现在很明显0 应该是黑色的。
为了显示白色方块,请使用
output = true(5,5)
【讨论】:
你可以使用补全
imshow(imcomplement(false(5, 5)))
或修改默认颜色映射(引用 imshow 的文档)
imshow(X,map)
使用颜色映射图显示索引图像 X。颜色映射矩阵可以有任意数量的行,但它必须正好有 3 列。每一行都被解释为一种颜色,第一个元素指定红光的强度,第二个是绿色,第三个是蓝色。颜色强度可以在 0.0 到 1.0 的区间内指定。
【讨论】:
您还可以更改图形的 colormap 以自定义 MATLAB 如何将值映射到颜色:
BW = [false,true;true,false];
imshow(BW)
set(gcf, 'Colormap',[1,1,1;0,0,0])
【讨论】: