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

时间:2012-03-16 12:30:12

标签: image image-processing wolfram-mathematica

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

2 个答案:

答案 0 :(得分:4)

这是一种方式:

mat = RandomInteger[1, {10, 10}];
Graphics[MapIndexed[If[#1 == 1, Disk, Circle][#2, 0.4] &, mat, {2}]]

Mathematica graphics

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

答案 1 :(得分: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}]

enter image description here

或者,如果你想让0为空白:

GraphicsGrid[M /. {0 -> "", 1 -> image1}]

enter image description here