关于从图像梯度计算邻接矩阵,我在python中找到了一些东西。 large-adjacency-matrix-from-image-in-python
我想根据 4 或 8 个相邻像素计算邻接矩阵。我还找到了http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3408910/
我如何与 4 或 8 个邻居一起做这件事?我想用 C++ 来做这个。我已经有渐变图像可供使用。
最佳答案
为简单起见,假设渐变图像是大小为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
代表一个足够大
的数字(无限
,因为各自的小区没有邻居,但这需要实现采取特殊规定)。
A
将是稀疏的并且具有规则的结构,为了提高效率,您可能应该使用一个类来处理稀疏矩阵。 This SO question提供了一些建议。
关于c++ - 来自梯度图像的邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33806984/