Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   Related Pages   Examples  

IntKernel.cpp

00001 /* Copyright (c) 2001 C. Grigorescu */
00002 
00003 #include "imlib_io.h"
00004 #include "IntKernel.h"
00005 
00006 static int L_1[9] = { 0, -1,  0, -1,  4, -1,  0, -1,  0};
00007 static int L_2[9] = {-1, -1, -1, -1,  8, -1, -1, -1, -1};
00008 static int S_H[9] = {-1, -2, -1,  0,  0,  0,  1,  2,  1};
00009 static int S_V[9] = {-1,  0,  1, -2,  0,  2, -1,  0,  1};
00010 static int P_H[9] = {-1, -1, -1,  0,  0,  0,  1,  1,  1};
00011 static int P_V[9] = { 1,  0, -1,  1,  0, -1,  1,  0, -1};
00012 static int K_1[9] = { 5,  5,  5, -3,  0, -3, -3, -3, -3};
00013 static int K_2[9] = {-3,  5,  5, -3,  0,  5, -3, -3, -3};
00014 static int K_3[9] = {-3, -3,  5, -3,  0,  5, -3, -3,  5};
00015 static int K_4[9] = {-3, -3, -3, -3,  0,  5, -3,  5,  5};
00016 static int K_5[9] = {-3, -3, -3, -3,  0, -3,  5,  5,  5};
00017 static int K_6[9] = {-3, -3, -3,  5,  0, -3,  5,  5, -3};
00018 static int K_7[9] = { 5, -3, -3,  5,  0, -3,  5, -3, -3};
00019 static int K_8[9] = { 5,  5, -3,  5,  0, -3, -3, -3, -3};
00020 
00021 
00022 IntKernel::IntKernel(INT_KERNEL_TYPE _kernel_type=LAPLACIAN_1, char *name="") :
00023  Kernel< int >(name) 
00024 {
00025   kernel_type = _kernel_type;
00026   switch(kernel_type) {
00027    case LAPLACIAN_1:
00028      setPixels(3,3,L_1);
00029      break;
00030    case LAPLACIAN_2:
00031      setPixels(3,3,L_2);
00032      break;
00033   case SOBEL_H:
00034     setPixels(3,3,S_H);
00035     break;
00036   case SOBEL_V:
00037     setPixels(3,3,S_V);
00038     break;
00039   case PREWITT_H:
00040     setPixels(3,3,P_H);
00041     break;
00042   case PREWITT_V:
00043     setPixels(3,3,P_V);
00044     break;
00045   case KIRSCH_1:
00046     setPixels(3,3,K_1);
00047     break;
00048   case KIRSCH_2:
00049     setPixels(3,3,K_2);
00050     break;
00051   case KIRSCH_3:
00052     setPixels(3,3,K_3);
00053     break;
00054   case KIRSCH_4:
00055     setPixels(3,3,K_4);
00056     break;
00057   case KIRSCH_5:
00058     setPixels(3,3,K_5);
00059     break;
00060   case KIRSCH_6:
00061     setPixels(3,3,K_6);
00062     break;
00063   case KIRSCH_7:
00064     setPixels(3,3,K_7);
00065     break;
00066   case KIRSCH_8:
00067     setPixels(3,3,K_8);
00068     break;
00069   default: 
00070     kernel_type = KERNEL_INT_UNKNOWN;
00071    }     
00072 }  
00073 
00074 IntKernel &IntKernel::operator^(IntKernel &kernel)
00075 {
00076   for (int i=0;i<getSize();i++)
00077     pixels[0][i] = -pixels[0][i];
00078   return (*this);
00079 }
00080 
00081 
00082