diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java
index e2ad12e51c1f8badd6b3e19f8d936637ab1b4f3f..561c53e09d10122dc4909fd5b049119756e4b766 100644
--- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java
+++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java
@@ -3,12 +3,12 @@ package uy.edu.fing.chesstrack;
 
 import org.opencv.android.BaseLoaderCallback;
 import org.opencv.android.CameraBridgeViewBase;
-import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
 import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener;
 import org.opencv.android.LoaderCallbackInterface;
 import org.opencv.android.OpenCVLoader;
 import org.opencv.core.Mat;
 
+import uy.edu.fing.chesstrack.modulovision.Adquisicion;
 import android.app.Activity;
 import android.os.Bundle;
 import android.util.Log;
@@ -21,6 +21,8 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 
 	private CameraBridgeViewBase mOpenCvCameraView;
 
+	private Adquisicion adq;
+
 	private final BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
 		@Override
 		public void onManagerConnected(int status) {
@@ -55,6 +57,7 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 		mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.chess_track_layout);
 		mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
 		mOpenCvCameraView.setCvCameraViewListener(this);
+		adq = new Adquisicion();
 	}
 
 	@Override
@@ -82,14 +85,12 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 	public void onCameraViewStopped() {
 	}
 
-	public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
-		return inputFrame.rgba();
-	}
+
 
 	@Override
 	public Mat onCameraFrame(Mat inputFrame) {
 		// TODO Auto-generated method stub
-		return null;
+		return adq.processFrame(inputFrame);
 	}
 
 }
diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java
index 4a6fee200f58c87212c33a69125b46ebb25b86e5..18a05d49ad44a52d025f53d3046401b084b9ff04 100644
--- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java
+++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java
@@ -1,6 +1,70 @@
 package uy.edu.fing.chesstrack.modulovision;
 
 
-public class Adquisicion {
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opencv.core.Mat;
+
+import uy.edu.fing.chesstrack.modulovision.imgproc.EcualizarImagen;
+import uy.edu.fing.chesstrack.modulovision.imgproc.ImgProcInterface;
+import android.util.Log;
+
+
+
+public class Adquisicion   {
+	List<ImgProcInterface> listProc;
+
+	private static final String TAG = "CHESSTRACK::Adquisicion";
+
+
+	public Adquisicion() {
+		super();
+		Log.i(TAG, "Cargado....");
+		listProc = new ArrayList<ImgProcInterface>();
+		listProc.add( new EcualizarImagen());
+	}
+
+	/**
+	 * PRocesa el frame pasado por parametro
+	 * @param inputPicture
+	 * @return
+	 * ver http://dsp.stackexchange.com/questions/2805/how-does-opencv-find-chessboard-corners
+	 * http://www.cvg.ethz.ch/teaching/2012fall/cvl/Tutorial-OpenCV.pdf
+	 */
+	public synchronized Mat processFrame(Mat inputPicture) {
+		Log.i(TAG, "processFrame inicia");
+		Mat salida = inputPicture;
+		//
+		//		//		Core.line(salida, new Point(0, 5), new Point(salida.cols()/2,salida.rows()/2), new Scalar(0, 255, 0, 255), 3);
+		//
+		//		//		Core.circle(salida,  new Point(salida.cols()/2,salida.rows()/2), 120, new Scalar(0,0 , 255, 255));
+		//
+		//		MatOfPoint2f pointBuf;
+		//		boolean found = Calib3d.findChessboardCorners( salida, salida.size(), pointBuf,
+		//				Calib3d.CALIB_CB_ADAPTIVE_THRESH |Calib3d.CALIB_CB_FAST_CHECK | Calib3d.CALIB_CB_NORMALIZE_IMAGE);
+		//		if (found){
+		//			Mat viewGray;
+		//			Imgproc.cvtColor(salida, viewGray, Imgproc.COLOR_BGR2GRAY);
+		//			cornerSubPix( viewGray, pointBuf, new Size(11,11),
+		//					new Size(-1,-1), TermCriteria( TermCriteria.TERMCRIT_EPS+TermCriteria.TERMCRIT_ITER, 30, 0.1 ));
+		//
+		//
+		//
+		//			MatOfPoint2f corners = new MatOfPoint2f();
+		//			Imgproc.cornerSubPix(image, corners , winSize, zeroZone, criteria);
+		//			Calib3d.drawChessboardCorners(salida, new Size(5, 5), corners, patternWasFound);
+		//		}
+
+		Mat prevImg = inputPicture;
+
+		for (ImgProcInterface proc: listProc){
+			prevImg = proc.procesarImagen(prevImg);
+		}
+
+
+		return prevImg;
+
+	}
 }
diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/EcualizarImagen.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/EcualizarImagen.java
new file mode 100644
index 0000000000000000000000000000000000000000..43a56d6418ddfef5011c730fb92770c3d5a511bc
--- /dev/null
+++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/EcualizarImagen.java
@@ -0,0 +1,19 @@
+package uy.edu.fing.chesstrack.modulovision.imgproc;
+
+import org.opencv.core.Mat;
+import org.opencv.imgproc.Imgproc;
+
+public class EcualizarImagen implements ImgProcInterface {
+
+	@Override
+	public Mat procesarImagen(Mat inputFrame) {
+		// TODO Auto-generated method stub
+		//cvEqualizeHist(src,dest)
+		Mat viewGray = new Mat();
+		Imgproc.cvtColor(inputFrame, viewGray, Imgproc.COLOR_BGR2GRAY);
+		Imgproc.equalizeHist(viewGray,viewGray);
+		//Imgproc.equalizeHist(inputFrame,inputFrame);
+		return viewGray;
+	}
+
+}
diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/ImgProcInterface.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/ImgProcInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..8d212fe6b6acb326a37eb9b2320b0ff23f39e03b
--- /dev/null
+++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/ImgProcInterface.java
@@ -0,0 +1,12 @@
+package uy.edu.fing.chesstrack.modulovision.imgproc;
+
+import org.opencv.core.Mat;
+
+/*
+ * Las clases para procesar las imagenes deben de implementar
+ * esta interface y recibiran una imagen que puede haber sido
+ * por otra clase en un paso previo
+ */
+public interface ImgProcInterface {
+	abstract Mat procesarImagen(Mat inputFrame);
+}