gpt4 book ai didi

c - 多维数组边缘/边界条件

转载 作者:行者123 更新时间:2023-11-30 16:04:32 26 4
gpt4 key购买 nike

我正在迭代一个 3 维数组(每个像素有 3 个值的图像),以将 3x3 过滤器应用于每个像素,如下所示:

//For each value on the image    
for (i=0;i<3*width*height;i++){
//For each filter value
for (j=0;j<9;j++){
if (notOutsideEdgesCondition){
*(**(outArray)+i)+= *(**(pixelArray)+i-1+(j%3)) * (*(filter+j));
}
}
}

我使用指针算术,因为如果我使用数组表示法,我将有 4 个循环,并且我试图拥有尽可能少的循环数。我的问题是我的notOutsideEdgesCondition已经完全失控了,因为我必须考虑 8 个边界案例。我有以下处理条件

  • 左栏:((i%width)==0) &&
    (j%3==0)
  • 右栏:((i-1)%width ==0) && (i>1) &&
    (j%3==2)
  • 上排:(i<width) &&
    (j<2)
  • 下排: (i>(width*height-width)) && (j>5)

并且仍然需要考虑 4 个极端情况,它们的表达式会更长。此时我停下来问自己这是否是最好的方法,因为如果我有一个 5 行长的条件评估,它不仅调试起来非常痛苦,而且会减慢内部循环的速度。这就是为什么我来找你询问是否有已知的算法来处理这种情况,或者是否有更好的方法来解决我的问题。非常感谢。

最佳答案

是的,还有更好的方法。编写一个快速循环来处理保证不存在边界问题的情况。这将由从第二个到倒数第二列和倒数第二个到倒数第二行的区域组成。然后,您可以编写四个例程来处理每一侧(第 0 行、第 0 列、第 N 行和第 N 列),并且可以手动编写最后四个点的代码。

也就是说,还有很多更快的方法来进行您正在进行的寻址计算。

关于c - 多维数组边缘/边界条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com