在Mathematica中用自定义图像替换像素?

3

如何在Mathematica中用自定义图像替换二值化图像的像素? 我想到了一旦我有一个矩阵M,其中0或1取决于像素是白色还是黑色(我可以通过使用Binarize并稍微操作输出来获得),我可以使用Graphics []在网格中放置具有正方形边界的自定义图像,无论何时都有1和平坦的背景当有0,但我不确定如何做到这一点。 提前谢谢:)

2个回答

4
这里有一种方法:
mat = RandomInteger[1, {10, 10}];
Graphics[MapIndexed[If[#1 == 1, Disk, Circle][#2, 0.4] &, mat, {2}]]

Mathematica graphics

我喜欢使用各种版本的MapIndexed。您可以使用任何其他图形对象而不是DiskCircle。只需创建一个以位置为其参数并生成该对象的函数即可。


3

如果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}]

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接