Solved

Matrices -> Building weighted kernels

Posted on 2011-02-16
3
886 Views
Last Modified: 2012-05-11
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; //

Open in new window

0
Comment
Question by:rossryan
  • 2
3 Comments
 
LVL 31

Accepted Solution

by:
GwynforWeb earned 500 total points
ID: 34915861
Without knowing the full details of what the kernels are wanted to do I suggest the following

for  N
    new Matrix(new double[][]{{ 1, 0, -1},
                                            { 1, 0, -1},
                                            { 0, 0,  0}}).times(0.25); // North

for NW
    new Matrix(new double[][]{{ 0, -1, 0},
                                            { 1, 0, -1},
                                            { 0, 1,  0}}).times(0.25); // North West



The rest follow from symmetry
0
 
LVL 31

Expert Comment

by:GwynforWeb
ID: 34916035
....  I can clearly see you are detecting directional gradients/edges but I am not sure what convention you are adopting for differentiating  NE form SW etc.  I have guessed and am probably right, but not sure.
0
 

Author Comment

by:rossryan
ID: 34921208
Hmm. The TA is of the opinion that rotating the matrices by 90 degree increments should be enough.

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
This video teaches viewers about errors in exception handling.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now