Ios 对于大于3x3的内核,如何使用GPUIMageColution3x3?

Ios 对于大于3x3的内核,如何使用GPUIMageColution3x3?,ios,gpuimage,Ios,Gpuimage,布拉德·拉森 首先,非常感谢您对GPUImage所做的大量工作,它已经开始使用,并且看起来非常可靠和有用 我的问题是,如何使用GPUImage卷积3x3处理更大的内核。我的印象是,任何卷积都可以通过内核3x3来表示,但如何实现它呢?我特别指的是gabor核。我们将尝试使用卷积,而不是创建新的过滤器类 谢谢。对于更大的卷积(5x5等),您需要创建一个执行卷积的新过滤器类型。框架中提供了基本的3x3卷积,因为它快速且易于指定。在大多数iOS设备上,您几乎可以免费获得九种纹理读取 当你开始超越这一点,

布拉德·拉森

首先,非常感谢您对GPUImage所做的大量工作,它已经开始使用,并且看起来非常可靠和有用

我的问题是,如何使用GPUImage卷积3x3处理更大的内核。我的印象是,任何卷积都可以通过内核3x3来表示,但如何实现它呢?我特别指的是gabor核。我们将尝试使用卷积,而不是创建新的过滤器类

谢谢。

对于更大的卷积(5x5等),您需要创建一个执行卷积的新过滤器类型。框架中提供了基本的3x3卷积,因为它快速且易于指定。在大多数iOS设备上,您几乎可以免费获得九种纹理读取

当你开始超越这一点,事情就会变得昂贵得多。5x5卷积需要25次纹理读取,以此类推。这会导致处理速度非常慢

因此,像高斯模糊这样的操作是通过使用可分离内核在框架中完成的。首先,图像水平模糊,然后水平模糊结果垂直模糊。这大大减少了纹理读取和计算的数量

我相信Gabor滤波器可以用一个可分离的核(或一系列可分离的核)来表示,就像我们尝试的那样。您可以将其中的工作转换为具有给定半径的片段着色器,以便以比大面积卷积更有效的方式实现Gabor过滤器。

对于更大的卷积(5x5等),您需要创建执行该卷积的新过滤器类型。框架中提供了基本的3x3卷积,因为它快速且易于指定。在大多数iOS设备上,您几乎可以免费获得九种纹理读取

当你开始超越这一点,事情就会变得昂贵得多。5x5卷积需要25次纹理读取,以此类推。这会导致处理速度非常慢

因此,像高斯模糊这样的操作是通过使用可分离内核在框架中完成的。首先,图像水平模糊,然后水平模糊结果垂直模糊。这大大减少了纹理读取和计算的数量


我相信Gabor滤波器可以用一个可分离的核(或一系列可分离的核)来表示,就像我们尝试的那样。您可以将此处的工作转换为具有给定半径的片段着色器,以比大面积卷积更有效的方式实现Gabor过滤器。

谢谢您的回答。在我的例子中,内核是21x21(效果最好),但图像通常非常小,平均不超过40x40像素。我需要在这个配置中为每一块40x40像素做36-72次gabor。使用opencv filter2D进行此操作不会占用大量时间,但肯定离实时性很远,这是非常理想的。谢谢您的回答。在我的例子中,内核是21x21(效果最好),但图像通常非常小,平均不超过40x40像素。我需要在这个配置中为每一块40x40像素做36-72次gabor。使用opencv filter2D进行此操作不会占用大量时间,但肯定离实时性很远,这是非常理想的。