diff --git a/ProyectoAndroid/ChessTrack/bin/AndroidManifest.xml b/ProyectoAndroid/ChessTrack/bin/AndroidManifest.xml
deleted file mode 100644
index ec4ede675a0383c7122aaaf4a7ddd40d99822091..0000000000000000000000000000000000000000
--- a/ProyectoAndroid/ChessTrack/bin/AndroidManifest.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="uy.edu.fing.chesstrack"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-   
-
-<!--     <application -->
-<!--         android:allowBackup="true" -->
-<!--         android:icon="@drawable/ic_launcher" -->
-<!--         android:label="@string/app_name" -->
-<!--         android:theme="@style/AppTheme" > -->
-<!--     </application> -->
- 
- 
- 
-    <application
-         android:allowBackup="true"
-        android:label="@string/app_name"
-        android:icon="@drawable/ic_launcher"
-        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
-
-        <activity android:name="ChessTrackActivity"
-                  android:label="@string/app_name"
-                  android:screenOrientation="landscape"
-                  android:configChanges="keyboardHidden|orientation">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-
-  
-       
-    <supports-screens android:resizeable="true"
-                      android:smallScreens="true"
-                      android:normalScreens="true"
-                      android:largeScreens="true"
-                      android:anyDensity="true" />
-   
-     
-     <uses-sdk
-        android:minSdkVersion="9"
-        android:targetSdkVersion="10" />
-    
-     <uses-permission android:name="android.permission.CAMERA"/>
-
-    <uses-feature android:name="android.hardware.camera" android:required="false"/>
-    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
-    <uses-feature android:name="android.hardware.camera.front" android:required="false"/>
-    <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
-</manifest>
diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java
index 13aa38ac6dcc49b504d4189a7ac14e52df2f70ac..940c5f4a1fad9bb4bd30764f2c359bcebaaf906b 100644
--- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java
+++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java
@@ -1,6 +1,5 @@
 package uy.edu.fing.chesstrack;
 
-
 import org.opencv.android.BaseLoaderCallback;
 import org.opencv.android.CameraBridgeViewBase;
 import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener;
@@ -8,6 +7,7 @@ import org.opencv.android.JavaCameraView;
 import org.opencv.android.LoaderCallbackInterface;
 import org.opencv.android.OpenCVLoader;
 import org.opencv.core.Mat;
+
 import uy.edu.fing.chesstrack.communication.Client;
 import uy.edu.fing.chesstrack.modulomodelador.Modelador;
 import uy.edu.fing.chesstrack.modulovision.Adquisicion;
@@ -27,11 +27,12 @@ import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.EditText;
 
-public class ChessTrackActivity extends Activity implements CvCameraViewListener {
+public class ChessTrackActivity extends Activity implements
+CvCameraViewListener {
 
 	private static final String TAG = "CHESSTRACK::Activity";
-	private static final String IPV4_REGEX ="^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$";
-	private static final String PORT_REGEX ="^(\\d{4,5})$";
+	private static final String IPV4_REGEX = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$";
+	private static final String PORT_REGEX = "^(\\d{4,5})$";
 	private static final String welcomeMSG = ""
 			+ "--------------------------------------------------------------------------\n"
 			+ "  .:: CHESSTRACK ::. seguimiento de una partida de Ajedrez\n"
@@ -40,41 +41,42 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 			+ "--------------------------------------------------------------------------\n";
 
 	private CameraBridgeViewBase mOpenCvCameraView;
-	//private JavaCameraView mOpenCvCameraView;
+	// private JavaCameraView mOpenCvCameraView;
 
 	private Adquisicion adq;
 	private Calibracion calibrar;
 	private Button btnCalibrar;
 	private Client ClientCommunication;
 	private MenuItem mItemCalibrar;
-	//TODO es chancho pero ver luego
+	private MenuItem mItemServer;
+	// TODO es chancho pero ver luego
 	private Mat frame;
 	private boolean isUsed;
-	private  boolean isCalibrada ;
+	private boolean isCalibrada;
 
-	private final BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
+	private final BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(
+			this) {
 		@Override
 		public void onManagerConnected(int status) {
 			switch (status) {
-			case LoaderCallbackInterface.SUCCESS:
-			{
+			case LoaderCallbackInterface.SUCCESS: {
 				Log.i(TAG, "OpenCV loaded successfully");
 				mOpenCvCameraView.enableView();
-			} break;
-			default:
-			{
+			}
+			break;
+			default: {
 				super.onManagerConnected(status);
-			} break;
+			}
+			break;
 			}
 		}
 	};
 
-
 	@Override
-	public void onResume()
-	{
+	public void onResume() {
 		super.onResume();
-		OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);
+		OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this,
+				mLoaderCallback);
 	}
 
 	@Override
@@ -90,16 +92,16 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 		Modelador.getInstance();
 		try {
 			isUsed = false;
-			isCalibrada =false;
+			isCalibrada = false;
 
 		} catch (Exception e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
-		getServerIp();
+		//		getServerIp();
 	}
 
-	public void getServerIp(){
+	public void getServerIp() {
 		AlertDialog.Builder alert = new AlertDialog.Builder(this);
 		alert.setTitle("Communication Setup");
 		alert.setMessage("Set server ip");
@@ -108,32 +110,32 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 		alert.setView(input);
 
 		alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+			@Override
 			public void onClick(DialogInterface dialog, int whichButton) {
 				Editable value = input.getText();
 				if (value == null || value.toString().equals("") || !value.toString().matches(IPV4_REGEX)) {
-					Log.i(TAG,"INPUT= not valid IP" + value.toString());
+					Log.i(TAG, "INPUT= not valid IP" + value.toString());
 					getServerIp();
 				} else {
-					Log.i(TAG,"INPUT=" + value.toString());
-					
-					Log.i(TAG,"IP=" + value.toString());
+					Log.i(TAG, "INPUT=" + value.toString());
+
+					Log.i(TAG, "IP=" + value.toString());
 					getServerPort(value.toString());
 				}
-		  	}
+			}
 		});
 
 		/*
-		alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
-			public void onClick(DialogInterface dialog, int whichButton) {
-			    // no server communication -- FIXME do not send info to client 
-			}
-		});
-		*/
+		 * alert.setNegativeButton("Cancel", new
+		 * DialogInterface.OnClickListener() { public void
+		 * onClick(DialogInterface dialog, int whichButton) { // no server
+		 * communication -- FIXME do not send info to client } });
+		 */
 
 		alert.show();
 	}
-	
-	public void getServerPort(final String ip){
+
+	public void getServerPort(final String ip) {
 		AlertDialog.Builder alert = new AlertDialog.Builder(this);
 		alert.setTitle("Communication Setup");
 		alert.setMessage("Set server port");
@@ -142,30 +144,34 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 		alert.setView(input);
 
 		alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+			@Override
 			public void onClick(DialogInterface dialog, int whichButton) {
 				Editable value = input.getText();
-				Log.i(TAG,"INPUT=" + value.toString());
-				if (value == null || value.toString().equals("") || !value.toString().matches(PORT_REGEX)) {
-					Log.i(TAG,"INPUT= not valid PORT" + value.toString());
+				Log.i(TAG, "INPUT=" + value.toString());
+				if (value == null || value.toString().equals("")
+						|| !value.toString().matches(PORT_REGEX)) {
+					Log.i(TAG, "INPUT= not valid PORT" + value.toString());
 					getServerPort(ip);
 				} else {
-					Log.i(TAG,"INPUT=" + value.toString());
+					Log.i(TAG, "INPUT=" + value.toString());
 
 					int port = Integer.parseInt(value.toString());
-					Log.i(TAG,"PORT=" + port);
-					//ClientCommunication = Client.getInstance();
-					//ClientCommunication.EstablishConnection(ip, port);
-					//ClientCommunication.SendData(welcomeMSG);
+					Log.i(TAG, "PORT=" + port);
+					// ClientCommunication = Client.getInstance();
+					// ClientCommunication.EstablishConnection(ip, port);
+					// ClientCommunication.SendData(welcomeMSG);
 				}
-		  	}
+			}
 		});
-		
+
 		alert.show();
 	}
+
 	@Override
 	public boolean onCreateOptionsMenu(Menu menu) {
 		Log.i(TAG, "called onCreateOptionsMenu");
-		mItemCalibrar = menu.add("Show/hide tile numbers");
+		mItemCalibrar = menu.add("Calibrar..");
+		mItemServer = menu.add("Conectar Server");
 
 		return true;
 	}
@@ -175,11 +181,13 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 		Log.i(TAG, "Menu Item selected " + item);
 		if (item == mItemCalibrar) {
 			isUsed = true;
-			if(frame!=null){
-				if (Calibracion.getInstance().calibrar(frame)){
+			if (frame != null) {
+				if (Calibracion.getInstance().calibrar(frame)) {
 
-					ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50);
-					toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms
+					ToneGenerator toneG = new ToneGenerator(
+							AudioManager.STREAM_ALARM, 50);
+					toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD,
+							200); // 200 is duration in ms
 					try {
 						adq = new Adquisicion();
 					} catch (Exception e) {
@@ -187,20 +195,22 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 						e.printStackTrace();
 					}
 					isCalibrada = true;
-				}else{
-					ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50);
-					toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 700); // 200 is duration in ms
+				} else {
+					ToneGenerator toneG = new ToneGenerator(
+							AudioManager.STREAM_ALARM, 50);
+					toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD,
+							700); // 200 is duration in ms
 				}
 			}
 			isUsed = false;
+		}else if(item == mItemServer){
+			getServerIp();
 		}
 		return true;
 	}
 
-
 	@Override
-	public void onPause()
-	{
+	public void onPause() {
 		super.onPause();
 		if (mOpenCvCameraView != null) {
 			mOpenCvCameraView.disableView();
@@ -229,18 +239,18 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener
 	@Override
 	public Mat onCameraFrame(Mat inputFrame) {
 		// TODO MANEJAR ESTADOS
-		if (!isUsed){
+		if (!isUsed) {
 			frame = inputFrame;
 		}
 
-		if(isCalibrada){
+		if (isCalibrada) {
 
 			Log.i(TAG, "calibrada");
 
 			inputFrame = adq.processFrame(inputFrame);
 			Modelador.getInstance().dividirTablero(inputFrame);
-			return Modelador.getInstance().dibujarEscaque();
-			//return inputFrame;
+			return Modelador.getInstance().dibujarEscaquesSobel();
+			// return inputFrame;
 		}
 
 		return inputFrame;
diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulomodelador/Modelador.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulomodelador/Modelador.java
index a4837777901b0fa282998a83f98067238ecd51c3..a7b920bae8b7f909bd57367ca75e6adac3828142 100644
--- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulomodelador/Modelador.java
+++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulomodelador/Modelador.java
@@ -6,6 +6,7 @@ import org.opencv.core.Mat;
 import org.opencv.core.Point;
 import org.opencv.core.Rect;
 import org.opencv.core.Scalar;
+import org.opencv.imgproc.Imgproc;
 
 import uy.edu.fing.chesstrack.modulovision.Calibracion;
 import android.util.Log;
@@ -35,6 +36,7 @@ public class Modelador {
 	}
 
 	public void dividirTablero(Mat inputFrame){
+
 		Rect roi = Calibracion.getInstance().getRectPOI();
 		Mat proccesFrame = inputFrame.submat(roi);
 		int largo = proccesFrame.rows();
@@ -73,4 +75,60 @@ public class Modelador {
 		return tmp;
 	}
 
+	public Mat dibujarEscaquesCanny(){
+		Mat tmp = Mat.zeros(Calibracion.getInstance().getImagenCalibrada().size(), CvType.CV_8UC4);
+		Mat subm ; //tmp.submat(new Rect(new Point(0,0) ,escaques[i][j].size()));
+		//escaques[i][j].copyTo(subm);
+		Mat mIntermediateMat = new Mat();
+		int pos_x = 0;
+		int pos_y = 0;
+		for (int i = 0; i < CANT_FILAS; i++){
+			for (int j = 0; j < CANT_FILAS; j++){
+				pos_x = (int) (escaques[i][j].size().width*i);
+				pos_y = (int) (escaques[i][j].size().height*j);
+				subm = tmp.submat(new Rect(new Point(pos_x,pos_y) ,escaques[i][j].size()));
+
+				Imgproc.Canny(escaques[i][j], mIntermediateMat, 80, 90);
+				Imgproc.cvtColor(mIntermediateMat, subm, Imgproc.COLOR_GRAY2RGBA,4);
+
+				//				escaques[i][j].copyTo(subm);
+				//				Core.putText(tmp, Integer.toString(i)+ "-" +Integer.toString(j), new Point(pos_x+1, pos_y+1),Core.FONT_HERSHEY_SIMPLEX, 0.3 , new Scalar(255,0,0));
+			}
+		}
+		return tmp;
+	}
+
+	public Mat dibujarEscaquesSobel(){
+		Mat tmp = Mat.zeros(Calibracion.getInstance().getImagenCalibrada().size(), CvType.CV_8UC4);
+		Mat subm ; //tmp.submat(new Rect(new Point(0,0) ,escaques[i][j].size()));
+		//escaques[i][j].copyTo(subm);
+		Mat mIntermediateMat = new Mat();
+		int pos_x = 0;
+		int pos_y = 0;
+		for (int i = 0; i < CANT_FILAS; i++){
+			for (int j = 0; j < CANT_FILAS; j++){
+				pos_x = (int) (escaques[i][j].size().width*i);
+				pos_y = (int) (escaques[i][j].size().height*j);
+				subm = tmp.submat(new Rect(new Point(pos_x,pos_y) ,escaques[i][j].size()));
+				Imgproc.cvtColor(escaques[i][j] ,mIntermediateMat,   Imgproc.COLOR_RGBA2GRAY,4);
+				Imgproc.Sobel(mIntermediateMat, mIntermediateMat, CvType.CV_8U, 1, 1);
+				Core.convertScaleAbs(mIntermediateMat, mIntermediateMat, 10, 0);
+				Imgproc.threshold(mIntermediateMat, mIntermediateMat, 70, 255, Imgproc.THRESH_BINARY);
+				int cant_pix = mIntermediateMat.cols()*mIntermediateMat.rows();
+				int cant_pix_white = Core.countNonZero(mIntermediateMat);
+				Log.i(TAG, "cant_pix=" + cant_pix);
+				Log.i(TAG, "cant_pix_white=" + cant_pix_white);
+
+				if (cant_pix_white > (50) ){
+					Imgproc.cvtColor(mIntermediateMat, subm, Imgproc.COLOR_GRAY2RGBA,4);
+				}else{
+					escaques[i][j].copyTo(subm);
+				}
+
+			}
+		}
+		return tmp;
+	}
+
+
 }