【问题标题】:Adjacency matrix from gradient image梯度图像的邻接矩阵
【发布时间】:2015-11-19 14:43:36
【问题描述】:

关于从图像梯度计算邻接矩阵,我在 python 中找到了一些东西。 large-adjacency-matrix-from-image-in-python

我想根据 4 或 8 个相邻像素计算邻接矩阵。我还找到了http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3408910/

如果有 4 或 8 个邻居,我该如何做到这一点?我想在 C++ 中做到这一点。我已经有渐变图像可以使用了。

【问题讨论】:

    标签: c++ graph-theory adjacency-matrix


    【解决方案1】:

    为简单起见,假设渐变图像是大小为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 条目将更改为MM 代表sufficiently large 数字(infinite,因为各个单元格不是邻居,但这需要实现采取特殊规定)。

    A 将是稀疏的并且具有规则的结构,为了提高效率,您可能应该使用一个类来进行稀疏矩阵处理。 This SO question 提供一些建议。

    【讨论】:

    • 到处,你写 mod 的地方,你的意思是 | (管道)即或的逻辑符号?
    • @Mandar 否,mod 表示取模函数(非负 arg1 除以正整数 arg2 的余数)。
    • :( 我看不懂你的代码块 :( 很抱歉,请详细说明。
    • adj 矩阵由单个像素的序数索引。原则上任何一种计数都是等效的,让我们逐行扫描列。因此像素(1,1) 得到索引1(1,m) 索引m(2,1) 映射到m+1 等,直到(n,m)n*m 索引。在我回答的“代码块”中,我只是试图简洁地描述设置为 1 的 adj 矩阵元素。示例 1:让n=100, m=200; (3,4), (3,5)` 是相邻像素;它们对应的索引是2*200+4 = 404, 2*200+5 = 405(它们在 2 行 200 像素的完整行之后被计算为第 4 和第 5 像素)。 ...
    • ... 邻接矩阵的元素(404, 405) 因此必须携带1。例2:设n=100, m=200; (4,4), (3,4)`也是邻居;它们对应的索引是3*200+4 = 604, 2*200+4 = 404。邻接矩阵的元素(604, 404)必须设置为1。示例 3:a_i(i-m) = 1; i &gt; m 表示“对于每个索引 i &gt; m(即标记不在最顶部扫描线中的像素),将 adj 矩阵的条目 (i, i-m) 设置为 1(将此与示例 2 进行比较);在代码中:if (i &gt; m) { adj[i][i-m] = 1; }.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多