 
 @inlinable
 @inline(__always)
-public func ImageConvolution<Model>(_ image: Image<ColorPixel<Model>>, _ filter: [Double], _ filter_size: (Int, Int)) -> Image<ColorPixel<Model>> {
-    return Image(texture: TextureConvolution(Texture(image: image), filter, filter_size), resolution: image.resolution, colorSpace: image.colorSpace)
-}
-@inlinable
-@inline(__always)
-public func ImageConvolution<Model>(_ image: Image<FloatColorPixel<Model>>, _ filter: [Float], _ filter_size: (Int, Int)) -> Image<FloatColorPixel<Model>> {
-    return Image(texture: TextureConvolution(Texture(image: image), filter, filter_size), resolution: image.resolution, colorSpace: image.colorSpace)
+public func ImageConvolution<Model>(_ image: Image<ColorPixel<Model>>, _ filter: [Double], _ filter_width: Int, _ filter_height: Int) -> Image<ColorPixel<Model>> {
+    return Image(texture: TextureConvolution(Texture(image: image), filter, filter_width, filter_height), resolution: image.resolution, colorSpace: image.colorSpace)
+}
+@inlinable
+@inline(__always)
+public func ImageConvolution<Model>(_ image: Image<FloatColorPixel<Model>>, _ filter: [Float], _ filter_width: Int, _ filter_height: Int) -> Image<FloatColorPixel<Model>> {
+    return Image(texture: TextureConvolution(Texture(image: image), filter, filter_width, filter_height), resolution: image.resolution, colorSpace: image.colorSpace)
 }
 @inlinable
 @inline(__always)


@inlinable
@inline(__always)
public func TextureConvolution<Model>(_ texture: Texture<ColorPixel<Model>>, _ filter: [Double], _ filter_size: (Int, Int)) -> Texture<ColorPixel<Model>> {
    return _TextureConvolution(texture, filter, filter_size)
}
@inlinable
@inline(__always)
public func TextureConvolution<Model>(_ texture: Texture<FloatColorPixel<Model>>, _ filter: [Float], _ filter_size: (Int, Int)) -> Texture<FloatColorPixel<Model>> {
    return _TextureConvolution(texture, filter, filter_size)
}
@inlinable
@inline(__always)

            
            for _ in 0..<numberOfComponents {
                
                DiscreteConvolve2D((width, height), source, numberOfComponents, (filter_width, filter_height), filter, 1, output, numberOfComponents)
                
                source += 1
                output += 1
