【发布时间】:2014-06-14 09:39:20
【问题描述】:
我正在寻找一种将重叠块组合成一个图像的快速方法。假设完整图像的大小和完整图像中每个块的坐标是已知的。还假设这些块在水平和垂直方向上都是规则间隔的。
catch - 在重叠区域中,输出图像中的一个像素应该根据重叠块中相应像素的加权平均值得到一个值。权重应该与到块中心的距离成正比。
因此,例如,在块B1 和B2 之间的重叠区域中获取像素位置p(相对于完整图像坐标)。假设重叠区域仅由大小为h 的水平移位引起。如果B1(p) 和B2(p) 是出现在块B1、B2 和d1 中的那个位置的值,d2 是p 到块@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