code: function conv2(image, kernel) {
      var out = new Float64Array( height * width  )
      var acc = 0
      , row, col, i, j, k
      for ( row = 0; row < height; row++ ) {
        for ( col = 0; col < width; col++ ) {
          for ( i = -1; i <= 1; i++ ) {
            for ( j = -1; j <= 1; j++ ) {
              if( row+i >= 0 && col+j >= 0 &&
                  row+i < height && col+j < width) {
                k = image[ (row + i) * width + (col + j)]
                acc += k * kernel[ (1 + i) * 3 + (1 + j)]
              }
            }
          }
          out[ row * width + col] = acc
          acc = 0
        }
      }
      return out
    }
docs: /*
  iterates over image, then over kernel and
  multiplies the flipped kernel coeffs
  with appropriate image values, sums them
  then adds into new array entry.