【问题标题】:Matlab - Concatenation of overlapping blocks with weighted averageMatlab - 使用加权平均连接重叠块
【发布时间】:2014-06-14 09:39:20
【问题描述】:

我正在寻找一种将重叠块组合成一个图像的快速方法。假设完整图像的大小和完整图像中每个块的坐标是已知的。还假设这些块在水平和垂直方向上都是规则间隔的。

catch - 在重叠区域中,输出图像中的一个像素应该根据重叠块中相应像素的加权平均值得到一个值。权重应该与到块中心的距离成正比。

因此,例如,在块B1B2 之间的重叠区域中获取像素位置p(相对于完整图像坐标)。假设重叠区域仅由大小为h 的水平移位引起。如果B1(p)B2(p) 是出现在块B1B2d1 中的那个位置的值,d2p 到块@987654332 中心的各自距离@ 和B2 然后在输出图像O 中,位置p 将得到O(p) = (h-d1)/h*B1(p) + (h-d2)/h*B2(p)

请注意,通常在任何区域中最多可以有 4 个重叠块。

我正在寻找在 Matlab 中执行此操作的最佳方法。希望对于距离函数的任何选择。

blockproc 等可以帮助将图像分割成块,但允许非常基本的结果组合。 imfuse 接近我的需要,但仅提供简单的非加权 alpha 混合。 bwdist 似乎很有用,但我还没有想出最有效的使用方法是什么。

【问题讨论】:

  • 你在实现BM3D算法吗?
  • @Drazick,不。只是想合并一些图像处理的结果,这些处理无法在整个图像上完成,因此以块的形式完成。
  • 这听起来像是 BM3D 中的合并步骤,这意味着您可以查找它的参考实现并照此执行。
  • @Drazick,我同意,累积权重和值缓冲区然后使用它们之间的商的概念符合我的需要。但是,我还没有为此找到一个 Matlab(非墨西哥)实现。我承认我的问题不在于概念,而在于是否有一种“快速而优雅”的方式来处理所有烦人的边缘情况、大小均匀的块(没有中心)等。

标签: matlab image-processing matrix


【解决方案1】:

您应该使用命令im2col
一旦您将向量中的所有补丁都对齐在一个矩阵中,您就可以处理列(每个补丁过滤)和行(补丁之间的过滤)。

这将比 im2col 的经典用法更棘手,但它应该可以工作。

【讨论】:

  • 感谢您的回答。我不得不在这里不同意并说blockproc 带有可选的边框参数更合适。 im2col 生成所有可能的块,这对我的需求来说根本不切实际。更重要的是,这无助于使用加权平均值融合结果(或者至少,我不明白它是如何做到的)。
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多