邻域操作

计算机视觉和图像处理中,邻域操作是图像数据上常用的一类计算,这意味着它是按照以下伪代码处理的。访问图像数据中的每一个点p,并做{N=图像数据中围绕点p的一个邻域或区域result(p)=f(N)}。这个一般程序可以适用于任意维度的图像数据。而且,应用该操作的图像数据不一定要用强度或颜色来定义,它可以是任何类型的信息,这些信息被组织成p中空间(可能还有时间)变量的函数。在图像上应用邻域操作的结果也是可以被解释为图像的东西,它具有与原始数据相同的维度。然而,每个图像点的值不一定与强度或颜色直接相关。相反,它是函数f的范围内的一个元,可以是任意类型的。通常,邻域N的大小是固定的,是一个以点p为中心的正方形(或立方体,取决于图像数据的维度),函数f也是固定的,但在某些情况下可能有参数可以随p的变化而变化,见下文。在最简单的情况下,邻域N可能只有一个点。这种类型的操作通常被称为点对点的操作。

邻域操作的例子

邻域运算最常见的例子是使用一个固定的函数f,而这个函数是线性的,也就是说,计算由一个线性移位不变的运算组成。在这种情况下,邻域运算对应于卷积运算。一个典型的例子是用低通滤波器进行卷积,其结果可以用每个图像点周围的图像数据的局部平均数来解释。其他的例子是计算图像数据的局部导数。使用一个固定但非线性的函数f也是相当常见的,这包括中值滤波和计算局部变异。Nagao-Matsuyama滤波器是一个复杂的局部相邻操作的例子,它使用方差作为一个像素组内均匀性的指标。其结果类似于与低通滤波器的卷积,并具有保留尖锐边缘的额外效果。还有一类邻域操作,其中函数f有额外的参数,可以随p变化。访问图像数据中的每一个点p,并做{N=图像数据中围绕点p的一个邻域或区域result(p)=f(N,parameters(p)}。这意味着结果不是移位不变的。例子是自适应维纳滤波器。

实施方面

上面给出的伪代码表明,邻域操作是以所有图像点的外循环方式实现的。然而,由于结果是独立的,图像点可以以任意的顺序被访问,甚至可以并行处理。此外,在线性移位不变量操作的情况下,每个点的f的计算意味着图像数据和滤波器系数之间的乘积相加。

邻域操作

那么,这种邻域操作的实现可以通过在所有图像点上的循环之外进行求和循环。与邻域操作有关的一个重要问题是如何处理这样一个事实:对于接近图像数据边缘或边界的点,邻域N或多或少变得不确定。已经提出了几种策略。只对相应邻域定义良好的点p计算结果。这意味着输出图像将比输入图像小一些。零填充。通过在原始图像外添加额外的点来充分扩展输入图像,这些点被设置为零。上述的图像点上的循环只访问原始图像点。边界扩展。通过在原始图像外添加额外的点来充分扩展输入图像,这些点被设置为最接近的图像点的图像值。上述图像点上的循环只访问原始图像点。镜像扩展。通过在图像边界对图像进行镜像,充分扩展图像。这种方法对图像边界的局部变化比边界扩展更不敏感。包裹。图像是平铺的,所以从一个边缘出去就会包裹到图像的另一边。这种方法假定图像基本上是均匀的,例如,一个没有大纹理的随机图像纹理。

0

点评

点赞

相关文章