C语言实现二维卷积函数
时间: 2023-05-12 07:06:39 浏览: 250
以下是一个简单的C语言实现的二维卷积函数:
```c
void convolve2D(int* input, int* output, int width, int height, int* kernel, int kernelSize) {
int kCenterX = kernelSize / 2;
int kCenterY = kernelSize / 2;
int rowIndex, colIndex, kRowIndex, kColIndex, i, j;
int sum;
for (rowIndex = 0; rowIndex < height; ++rowIndex) {
for (colIndex = 0; colIndex < width; ++colIndex) {
sum = 0;
for (kRowIndex = 0; kRowIndex < kernelSize; ++kRowIndex) {
for (kColIndex = 0; kColIndex < kernelSize; ++kColIndex) {
i = rowIndex + kRowIndex - kCenterY;
j = colIndex + kColIndex - kCenterX;
if (i >= 0 && i < height && j >= 0 && j < width) {
sum += input[i * width + j] * kernel[kRowIndex * kernelSize + kColIndex];
}
}
}
output[rowIndex * width + colIndex] = sum;
}
}
}
```
这个函数接受一个输入数组、一个输出数组、输入和输出数组的宽度和高度、一个卷积核数组以及卷积核的大小。它会对输入数组进行二维卷积运算,并将结果存储在输出数组中。
阅读全文