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

Posted

技术标签:

【中文标题】UBLAS 矩阵查找单元格的周围值?【英文标题】:UBLAS Matrix Finding Surrounding Values of a Cell? 【发布时间】:2009-11-03 13:39:20 【问题描述】:

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

因为我基本上映射了 HDF 文件中的点,以及它们对应的像素值。我们基本上有很多空像素。里面都是0。

现在我需要做的是取周围细胞的平均值,以平均出缺失细胞的像素值。

现在我可以强制执行此操作,但它会很快变得丑陋。有什么优雅的解决方案吗?

【问题讨论】:

【参考方案1】:

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

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

像这样:

对于 (i = 0; i

这是做什么的:

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

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

很酷的一点是,如果您使用普通的补码算法,您不必担心前两次传递中的任何溢出;他们在最后两次传球中抵消了。

【讨论】:

【参考方案2】:

这里的主要问题是利用所有可用的内核和缓存效率。 您可能对检查卷积的快速实现感兴趣。 但是,由于您使用 Boost 执行此操作,您可以在 this Boost example 中查看这是如何完成的 我相信你只需要为你的专业任务改变卷积核。

【讨论】:

以上是关于UBLAS 矩阵查找单元格的周围值?的主要内容,如果未能解决你的问题,请参考以下文章

在2D数组java中查找重复的单元格

矩阵中严格递增的单元格数

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?

EXCEl技巧集锦

创建指向另一个 Excel 工作表单元格的链接,并查找最后一个单元格值

删除引导表中一个单元格的边框