2012-11-28 57 views
0

我在维基百科上阅读并看到如果我们需要对图像执行空间过滤,我们必须有一个过滤器,例如3x3,这里我不明白的是我们如何选择过滤器的值?假设原始图像是灰度,所以其强度从0到255(8位)。
另一个问题是,如果图像是9x9,我们如何将滤镜应用到该图像的边界像素?如果我们选择填充图像以使滤镜可以与所有边界像素一起工作,那么新填充像素的值是多少?
非常感谢你生成用于空间过滤的过滤器

回答

1

过滤器的值取决于你想通过过滤来实现什么。有很多过滤器设计来执行特定的任务。例如,最简单的滤波器f = [ - 1 1 -1]类型通过在水平方向上对每个像素执行一阶差分(x-导数)而执行图像导出,而f'在垂直(y-导数)中执行相同的事情。值-1,1,-1是为此目的而选择的。 3 * 3过滤器也是如此。一般来说,值的选择来自有限脉冲响应(FIR)和无限脉冲响应(IIR)滤波器的2D(双向)设计。

您应该记住,对寄宿生过滤器操作的价值并不那么准确。边界像素的过滤操作是通过称为边界插值的过程来插值超出范围的像素。在OpenCV和类似的图像处理/计算机视觉库中有办法做到这一点。例如,如以下在opencv

各种边界类型,图像边界用'|'表示。

  • BORDER_REPLICATE:AAAAAA | ABCDEFGH | hhhhhhh形式
  • BORDER_REFLECT:FEDCBA | ABCDEFGH | hgfedcb
  • BORDER_REFLECT_101:gfedcb | ABCDEFGH | gfedcba
  • BORDER_WRAP:cdefgh | ABCDEFGH | ABCDEFG
  • BORDER_CONSTANT:IIIIII | abcdefgh | iiiiiii与某些指定'我'

因此根据您选择你填充寄宿生像素。