如何在Mathematica中用自定义图像替换二值化图像的像素? 我想到了一旦我有一个矩阵M,其中0或1取决于像素是白色还是黑色(我可以通过使用Binarize并稍微操作输出来获得),我可以使用Graphics []在网格中放置具有正方形边界的自定义图像,无论何时都有1和平坦的背景当有0,但我不确定如何做到这一点。 提前谢谢:)
如何在Mathematica中用自定义图像替换二值化图像的像素? 我想到了一旦我有一个矩阵M,其中0或1取决于像素是白色还是黑色(我可以通过使用Binarize并稍微操作输出来获得),我可以使用Graphics []在网格中放置具有正方形边界的自定义图像,无论何时都有1和平坦的背景当有0,但我不确定如何做到这一点。 提前谢谢:)
mat = RandomInteger[1, {10, 10}];
Graphics[MapIndexed[If[#1 == 1, Disk, Circle][#2, 0.4] &, mat, {2}]]
我喜欢使用各种版本的MapIndexed
。您可以使用任何其他图形对象而不是Disk
或Circle
。只需创建一个以位置为其参数并生成该对象的函数即可。
如果M
是包含0和1的矩阵,image0/image1
是您想要显示的图像:
image0 = Graphics[{Red, Disk[]}, ImageSize -> 10];
image1 = Graphics[{Blue, Rectangle[]}, ImageSize -> 10];
M = {{0, 1, 0}, {1, 1, 1}, {1, 0, 0}};
GraphicsGrid[M /. {0 -> image0, 1 -> image1}]
或者,如果你想让0变成空白:
GraphicsGrid[M /. {0 -> "", 1 -> image1}]