关于边缘/边界附近的邻里操作可以安全地假设什么?

时间:2016-03-30 03:49:14

标签: image-processing computer-vision

当研究文章的作者没有说/提及/暗示他们如何处理靠近图像边界的邻近区域操作时,可以安全地假设什么?

我的问题似乎很幼稚,因为https://en.wikipedia.org/wiki/Neighborhood_operation上提到了一些选项。

我正在复制一篇期刊文章中报道的作品,其中current_point周围的300x300邻域用于计算。作者没有提到他们如何处理边境案件。

2 个答案:

答案 0 :(得分:1)

有几种方法可以处理边界:

1)裁剪:摆脱像素。通常在软件中实现,将这些外部值填充为0。例如:

                00000
123             01230
456    ---->    04560
789             07890
                00000

2)扩展:简单地"复制"离开边界区域的最近边缘像素。例如,

                11233
123             11233
456    ---->    44566
789             77899
                77899

或者,不管你的邻居/内核需要多远,都要继续。

3)换行:就像吃豆子一样。例如:

                97897
123             31231
456    ---->    64564
789             97897
                31231

在这种情况下,我任意选择对角包装(复制对角)。有些人喜欢插入角落。我认为如果您计划对数据进行傅里叶变换(或者如果它已经在频率空间中,与任何类型的光谱周期包装相同的想法),这种类型的边缘处理会特别有用,但我和# 39;我不确定,我从未在实践中使用它。

4)反思:这是我从未使用过的方法,但听说过。 例如:

123             2112332
456    ---->    5445665
789             8778998

我选择不在那里填充顶部/底部,因为它会很冗长。

使用其中一些方法也可以尝试使用非对角线。您可以根据需要扩展列以尝试查找可能需要的对角线,也可以插值以获取值。

答案 1 :(得分:0)

如果是边缘点,则完全取决于您正在执行的操作。您需要查看对图像执行的操作(特别是在边缘/边界处)。

最简单的方法是使用零填充。

hasChildren: "items"

我不知道你是如何实现它的(MATLAB / OpenCV)? 以下链接可能有助于MATLAB实现。 MATLAB Neighborhood Operations