gpt4 book ai didi

c++ - UBLAS 矩阵查找单元格的周围值?

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

我正在寻找一种优雅的方式来实现它。基本上我有一个 m x n 矩阵。其中每个单元格代表像素值,行和列代表图像的像素行和像素列。

因为我基本上是从 HDF 文件映射点及其对应的像素值。我们基本上有很多空像素。其中填充0。

现在我需要做的是取周围单元格的平均值,以求出缺失单元格的像素值的平均值。

现在我可以暴力破解它,但它很快就会变得丑陋。有什么优雅的解决方案吗?

最佳答案

这个过滤问题有一个众所周知的优化。

  • 在一个方向(比如水平方向)整合细胞
  • 在另一个方向(比如垂直方向)整合细胞
  • 计算每个单元格与其左侧第 N 个相邻单元格之间的差异。
  • 取每个单元格与它的第 N 个较低邻居之间的差异

像这样:

    for (i = 0; i < h; ++i)    for (j = 0; j < w-1; ++j)       A[i][j+1] += A[i][j];    for (i = 0; i < h-1; ++i)    for (j = 0; j < w; ++j)       A[i+1][j] += A[i][j]    for (i = 0; i < h; ++i)    for (j = 0; j < w-N; ++j)       A[i][j] -= A[i][j+N];    for (i = 0; i < h-N; ++i)    for (j = 0; j < w; ++j)       A[i][j] -= A[i-N][j];

它的作用是:

  • 第一遍使每个单元格成为该行左侧所有单元格的总和,包括它自己。
  • 在第 2 遍之后,每个单元格是其自身上方和左侧的矩形中所有单元格的总和(包括它自己的行和列)
  • 在第 3 遍之后,每个单元格都是其自身上方和右侧的矩形之和,N 列宽。
  • 在第 4 遍之后,每个单元格都是其自身下方和右侧的 NxN 矩形的总和。

这需要每个单元格执行 4 次操作来计算总和,而蛮力计算需要 8 次(假设您正在执行 3x3 平均滤波器)。

很酷的是,如果你使用普通的二进制补码算法,你不必担心前两遍的任何溢出;他们在最后两次通过中抵消了。

关于c++ - UBLAS 矩阵查找单元格的周围值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1667386/

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