图像处理算法通常需要单个图像位置邻域内的像素值。然而,边界点的邻域是不完整的,需要通过各种方法进行特殊处理,例如镜面反射、周期性等。
对于线性运算,一种有效的方法是将算法变成内核并进行 2D 卷积。卷积例程通常具有内置的边界处理方法。
对于任意(非线性)算法,一种可能性是首先填充图像,一次收集所有邻域(例如,使用pad + neighbor),然后以矢量化方式进行操作。但是,正如文档所建议的那样,这可能会占用大量内存。
循环遍历像素并逐个处理边界是另一种方式。但这在 Python 中可能会很慢(尽管在 C/C++ 中可行),并且提供所有这些镜像/周期性的东西似乎很麻烦......
在 Python 中实现自己的算法时,如何有效地(也许是 Pythonic)做到这一点?
是否有一些函数可以返回指定像素的邻域,并使用指定的边界处理方法?