Java 伪码非最大抑制
我必须在一个有3x3个邻域的八度音阶中找到一个最大值。这意味着我有四层在彼此之上,在这四层之间我必须找到一个最大值。为了便于说明,这里有一个图像。这不是我所做的,但它代表了我的问题所在 现在,我发现这篇论文的最大惊喜是:。这里有一个快速的方法来解释如何在图像中找到最大值。这只是2D的情况,但在3D空间中移动它应该不会有问题。我现在的问题实际上是对伪代码的理解。我有伪代码: 问题是红色标记的部分。这里有for循环,但我不知道如何将“-[I,I+n]x[j,j+n]”应用于循环。这就是目前的解决方案:Java 伪码非最大抑制,java,algorithm,image-processing,pseudocode,Java,Algorithm,Image Processing,Pseudocode,我必须在一个有3x3个邻域的八度音阶中找到一个最大值。这意味着我有四层在彼此之上,在这四层之间我必须找到一个最大值。为了便于说明,这里有一个图像。这不是我所做的,但它代表了我的问题所在 现在,我发现这篇论文的最大惊喜是:。这里有一个快速的方法来解释如何在图像中找到最大值。这只是2D的情况,但在3D空间中移动它应该不会有问题。我现在的问题实际上是对伪代码的理解。我有伪代码: 问题是红色标记的部分。这里有for循环,但我不知道如何将“-[I,I+n]x[j,j+n]”应用于循环。这就是目前的解决
//find local maxima after paper implementation not finished yet
private Vector<Integer> FindLocalMaximum(Image image)
{
Vector<Integer> list = new Vector<Integer>();
int n = 1;
int step = 2*n + 1;
for(int i = n; i < image.GetWidth()-n; i =step)
for(int j = n; j < image.GetHeight()-n; j =step)
{
int mi = i;
int mj = j;
for(int i2 = i; i2 < i + n; i2++ )
for(int j2 = j; j2 < j + n; j2++ )
if(image.GetPixel(i2, j2) > image.GetPixel(mi, mj))
{
mi = i2;
mj = j2;
}
boolean found = true;
failed:
for(int i2 = mi - n; i2 < mi + n; i2++ )
for(int j2 = mj - n; j2 < mj + n; j2++ )
if(image.GetPixel(i2, j2) > image.GetPixel(mi, mj))
{
found = false;
break failed;
}
if(found)
{
int pos = mj * image.GetWidth() + mi;
list.add(pos);
}
}
return list;
}
//在纸面实现尚未完成后查找局部最大值
私有向量FindLocalMaximum(图像)
{
向量列表=新向量();
int n=1;
整数步长=2*n+1;
for(int i=n;iimage.GetPixel(mi,mj))
{
mi=i2;
mj=j2;
}
布尔值=真;
失败:
for(inti2=mi-n;i2image.GetPixel(mi,mj))
{
发现=错误;
破裂失败;
}
如果(找到)
{
int pos=mj*image.GetWidth()+mi;
列表。添加(pos);
}
}
退货清单;
}
因此,它不起作用是多么令人惊讶。有人知道我必须在红色标记的部分做什么。我将给你一个伪代码示例:
listA = [1, 2, 3]
listB = [a, b, c]
listA x listB = [(1, a), (1, b), (1, c), ...]
# excluded
listAe = [1, 3]
listBe = [a, b]
listAe x listBe = [(1, a), (1, b), ...]
# result
listA x listB - listAe x listBe = [(1, c), (2, a), (2, b), (2, c), (3, c)]
现在您应该只迭代结果对。好的,明天我会考虑。看来我的解决方案有点头脑混乱。看起来我必须从集合论中学习一些程序,大多数集合是不同的。大多数set方法都不是很快,但找不到更优雅的方法。你用过吗?我通常用Scala来解决这些问题。它与Java兼容,在同一个VM上运行,而且效率更高。