3

图像处理算法通常需要单个图像位置邻域内的像素值。然而,边界点的邻域是不完整的,需要通过各种方法进行特殊处理,例如镜面反射、周期性等。

对于线性运算,一种有效的方法是将算法变成内核并进行 2D 卷积。卷积例程通常具有内置的边界处理方法。

对于任意(非线性)算法,一种可能性是首先填充图像,一次收集所有邻域(例如,使用pad + neighbor),然后以矢量化方式进行操作。但是,正如文档所建议的那样,这可能会占用大量内存。

循环遍历像素并逐个处理边界是另一种方式。但这在 Python 中可能会很慢(尽管在 C/C++ 中可行),并且提供所有这些镜像/周期性的东西似乎很麻烦......

在 Python 中实现自己的算法时,如何有效地(也许是 Pythonic)做到这一点?

是否有一些函数可以返回指定像素的邻域,并使用指定的边界处理方法?

4

2 回答 2

2

在图像处理期间处理边界条件的最pythonic和最有效的方法是使用现有的库。除了 PIL 和 ImageMagick,我还推荐OpenCV

Python 本身不提供任何图像处理功能,因此有关特定像素邻域的任何问题都是特定于库的。选择一个您喜欢的库并使用它 - 如果您无法弄清楚该库如何处理边界条件,请回来再次询问。

于 2013-10-14T07:12:30.357 回答
1

PIL是处理图像处理的最著名的库之一。您可能还想看看ImageMagick,我认为它内置了许多很酷的图像转换功能。

于 2013-10-14T07:00:32.250 回答