Замена пикселей на пользовательские изображения в Mathematica? - PullRequest
3 голосов
/ 16 марта 2012

Как я могу заменить пиксели бинаризованного изображения пользовательским изображением в Mathematica? Я подумал, что, когда у меня будет матрица M из 0 или 1 записей в зависимости от того, какой пиксель будет белым или черным (что я могу получить, используя Binarize и немного манипулируя выводом), я могу использовать Graphics [], чтобы разместить пользовательское квадратная граница в сетке, где есть 1, и плоский фон, когда есть 0, но я не совсем уверен, как это сделать. Заранее спасибо:)

Ответы [ 2 ]

4 голосов
/ 16 марта 2012

Вот один из способов:

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

Mathematica graphics

Мне нравится использовать для этого различные версии MapIndexed. Вместо Disk или Circle вы можете использовать любой другой графический объект. Просто создайте функцию, которая будет принимать позицию в качестве аргумента и будет производить этот объект.

3 голосов
/ 16 марта 2012

Если 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

...