Матрица смежности от градиентного изображения

Что касается вычисления матрицы смежности по градиенту изображения, я нашел кое-что в python.
большая смежность-матрица из-изображений-в-питона

Я хочу рассчитать матрицу смежности на основе 4 или 8 соседних пикселей. Я также нашел http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3408910/

Как я могу сделать это с 4 или 8 соседями? Я хочу сделать это на C ++. У меня уже есть градиентное изображение для использования.

0

Решение

Для простоты предположим, что градиентное изображение представляет собой растровое изображение квадратного пикселя. n x n, Присвойте порядковый номер каждому пикселю путем подсчета основных рядов, начиная с северо-западного угла.

Определите (n^2 x n^2) матрица смежности A = (a_ij)_i,j=1..n^2 следующее:

a_i(i-n) = 1; i > n             // northern neighbour
a_i(i+1) = 1; (i-1) mod n < n-1 // eastern neighbour
a_i(i-1) = 1; (i-1) mod n > 0   // western neighbour
a_i(i+n) = 1; i <= n^2 - n      // southern neighbour
a_ij     = 0; else

Для 8 соседей на пиксель добавить

a_i(i-n+1) = 1; i > n and (i-n-1) mod n < n-1          // northeastern neighbour
a_i(i-n-1) = 1; i > n and (i-n-1) mod n > 0            // northwestern neighbour
a_i(i+n+1) = 1; i <= n^2 - n and (i+n-1) mod n < n-1   // southeastern neighbour
a_i(i+n-1) = 1; i <= n^2 - n and (i+n-1) mod n > 0     // southwestern neighbour

Вместо 1 Вы можете назначить веса, рассчитанные по градиенту между соседними пикселями. Обратите внимание, что 0 записи будут изменены на M, M представляя sufficiently large число ( infinite, поскольку соответствующие ячейки не являются соседями, но это требует реализации принять специальные положения).

A будет разреженным и будет иметь регулярную структуру, для эффективности вам, вероятно, следует использовать класс для обработки разреженных матриц. Это ТАК вопрос предоставляет некоторые предложения.

0

Другие решения

Других решений пока нет …