Конвертировать 2D массив в двоичное изображение с черными и белыми квадратами заданной пользователем двоичной длины - PullRequest
0 голосов
/ 23 февраля 2020

Первый столбец A состоит из исходного узла, а второй столбец состоит из целевого узла. Я хочу преобразовать список в формат изображения размером N by N, аналогичный указанному в ссылке (http://www.dontveter.com/basisofai/char.html), с черными и белыми квадратами. Пользователь вводит размер изображения, N. Я попробовал следующий код, но все, что я получаю, - это несколько характеристик белого и много черного. Один из способов преодоления этой проблемы, который, на мой взгляд, заключается в расширении двоичного представления в переменной adjMat до битов длины N. Но я не знаю как. Любой другой способ решить эту проблему будет огромной помощью. Спасибо. очистить все

 A=[1,3;1,4;1,8;1,9;1,16;1,23;1,28;2,4;2,5;2,22;2,18;2,7;3,4;3,6;3,8;3,10;3,14;4,11;4,13;4,18;4,12;5,11;5,20;5,15;5,17;6,8;6,13;6,24;6,25;7,9;7,10;7,12;8,15;8,19;9,11];
 edgelist = unique(A, 'rows');
N = 50;   % determines how big the image matrix should be.
 %so that we can allocate a N x N sparse matrix
newA = sparse(edgelist(:,1), edgelist(:,2), 1, N, N);
%uses the first column and second column of the edge list to populate 
%the entries in the sparse matrix, we set them to one and ensure that 
%the size of the matrix is N x N

adjMat = full(newA);
I = mat2gray(adjMat);
imshow(I)

Код выдает следующий результат (здесь я выделил цветовую кодировку, используя imagesc для наглядности). Как я могу получить матрицу размера N на N, и длина каждого столбца двоичного представления равна N, а для строки - N, в противном случае черные и белые пиксели будут сгруппированы в одном углу и не будут распределяться по размеру матрица. img

...