2012-10-25 26 views
-4

我已经把头靠在墙上撞了很长时间了。 我习惯于使用Matlab的conv2函数,它自己完成卷积。2维卷积 - 如何在Java中实现?

但是,我只是未能在Java中正确实现它。我会提供一个代码片段,但它的一切都搞砸了。我会尽量弄清楚并发布(实际上这里是凌晨4点30分,我仍然在这方面苦苦挣扎)。

任何人都可以请发表工作代码的方法,做2d在Java中相同大小的2维数组之间的卷积?

谢谢!

+1

重,'“任何人都可以请张贴工作代码的方法,做Java中的两个相同尺寸的2维数组的二维卷积?”':截至目前写的,这不是一个真正的问题,而是乞求不适合本网站的代码。请在问题结束前通过显示您的代码并询问具体的可回答问题来改变这一点。 –

+1

严重的是,粗略的谷歌搜索产生确切的功能。 – Mikhail

回答

2

有点谷歌搜索从未伤害过。 This code可能会帮助你。特别是,

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; 
    } 
+0

我做了,找不到任何值得使用的东西。会尝试这个细分市场。谢谢! – Zephyer