我已经用头撞墙了好一阵子了。我习惯于使用 Matlab 的conv2
函数,它自己进行卷积。
但是,我只是无法在 Java 中正确实现它。我会提供一个代码片段,但它都搞砸了。我会尽量弄清楚并发布(实际上是凌晨 4:30,我仍在为此苦苦挣扎..)。
任何人都可以发布一个工作代码方法,在Java中两个相同大小的二维数组之间进行二维卷积吗?
提前谢谢!
我已经用头撞墙了好一阵子了。我习惯于使用 Matlab 的conv2
函数,它自己进行卷积。
但是,我只是无法在 Java 中正确实现它。我会提供一个代码片段,但它都搞砸了。我会尽量弄清楚并发布(实际上是凌晨 4:30,我仍在为此苦苦挣扎..)。
任何人都可以发布一个工作代码方法,在Java中两个相同大小的二维数组之间进行二维卷积吗?
提前谢谢!
一点谷歌搜索永远不会受到伤害。 此代码可能会对您有所帮助。尤其是,
public static double[][] convolution2D(double[][] input,
int width, int height,
double[][] kernel,
int kernelWidth,
int kernelHeight) {
int smallWidth = width - kernelWidth + 1;
int smallHeight = height - kernelHeight + 1;
double[][] output = new double[smallWidth][smallHeight];
for (int i = 0; i < smallWidth; ++i) {
for (int j = 0; j < smallHeight; ++j) {
output[i][j] = 0;
}
}
for (int i = 0; i < smallWidth; ++i) {
for (int j = 0; j < smallHeight; ++j) {
output[i][j] = singlePixelConvolution(input, i, j, kernel,
kernelWidth, kernelHeight);
}
}
return output;
}