# Matrices -&gt; Building weighted kernels

Right, I'll admit I am no good with matrix math. No matter how many time I study it, it does not stay in my brain.

So, I am trying to build weighted kernels for some image processing. They are 3x3 kernels, and I need them for the various directions listed in the code section (8 different directions). I have one for West, just need to learn how to do the others.

This is for use with Processing and Jama, which is fun enough not having a proper IDE.

Thanks,
Ryan
``````Matrix kernel =
new Matrix(new double[][]{{ 1, 1, 0},
{ 0, 0, 0},
{-1,-1, 0}}).times(0.25); // West

Matrix[] computeCost(PImage image) {

//
// @todo Create kernels
// @note Use constants NW, N, NE, W, E, SW, S, and SE (see above)
//       If you don't use these properly, 'neighborCost' will not work correctly
//

//
// @todo Compute the cost for each RGB band
//

//
// the cost matrix is defined as the magnitude of the cost over the RGB bands
// and is negated and normalized with respect the maximum value
//

return cost;
}

//
// Different directions (do not edit these values)
//
static final int NW = 0; // These values are ordered top to bottom, left to right as in:
static final int N  = 1; //
static final int NE = 2; //  NW  N  NE
static final int W  = 3; //    \ | /
static final int E  = 4; // W -  ?  - E
static final int SW = 5; //    / | \
static final int S  = 6; //  SW  S  SE
static final int SE = 7; //``````