【发布时间】:2020-06-14 16:14:15
【问题描述】:
我正在遍历矩阵元素的邻居,以便找到最小的元素,如下所示,同时还保存其坐标:
int minimum_r = curr_r;
int minimum_c = curr_c;
uint8_t tmp_value = 255;
for (int i = curr_r - 1; i <= curr_r + 1; i++) {
for (int j = curr_c - 1; j <= curr_c + 1; j++) {
uint8_t value = src[i * cols + j];
if (value < tmp_value) {
tmp_value = value;
minimum_r = i;
minimum_c = j;
}
}
}
我注意到的问题是,如果有多个具有相同value 的最小邻居,则将选择第一个要检查的邻居。我记得在某处读到过这个“周期偏差”问题,但我不记得正确的术语了。
sn-p 来自一种计算梯度下降的算法,我想也许我可以通过找到“亚像素”梯度来缓解这个问题。我在这里错过了一个更简单的解决方案吗?
欢迎提出任何建议。
编辑:
说清楚,我的主要问题是: 这个编程问题通常是如何提到的,如果有的话,以便我可以在网上查找它(我记得以前读过它,并且以特定的方式命名)。
【问题讨论】:
-
请添加一个矩阵示例,显示 a) 你得到的结果和 b) 你期望的结果。看起来它会选择第一个,但当你写“最后一个”时,你的意思可能不同
-
"最后一个被选中的" - 你确定吗?对我来说,这似乎是第一个。
-
看起来好像不是所有的邻居都被检查了——你是不是想使用
i <= curr_r + 1 -
@user445082 请将问题编辑为 1) 更正第一个/最后一个问题和 2) 解释您的问题是什么 - 目前还不清楚。
-
@user445082 所以问题是算法 总是 选择第一个 - 是吗?那么你想要什么呢?最后一个?左边那个?一个随机的?你需要澄清你在寻找什么!