From fdb9c47557e5fcb2b3d501b57daa2f72507ad4f5 Mon Sep 17 00:00:00 2001 From: Aylen Ricca <aricca@fing.edu.uy> Date: Fri, 25 Jul 2014 01:58:20 -0300 Subject: [PATCH] fixed estados & thresholds --- .../chesstrack/modulomodelador/Modelador.java | 11 ++++++++- .../modulovision/DetectorOclusion.java | 24 +++++++++++++++---- .../fing/chesstrack/modulovision/Manager.java | 11 +++++---- 3 files changed, 35 insertions(+), 11 deletions(-) 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 993ed92..fb1da06 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulomodelador/Modelador.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulomodelador/Modelador.java @@ -16,7 +16,7 @@ public class Modelador { private static final String TAG = "CHESSTRACK::Modelador"; private final int CANT_FILAS = 8; private final int CANT_SCAQUE = CANT_FILAS * CANT_FILAS; - private final int MIN_CANT_PIX_WHITE = 50; + private final int MIN_CANT_PIX_WHITE = 30; private Mat tablero; // se cuentan de arrib a abajo y de izquierda a derecha private final Mat[][] escaques; @@ -140,6 +140,7 @@ public class Modelador { Mat mIntermediateMat = new Mat(); int pos_x = 0; int pos_y = 0; + Log.i(TAG, "cant_pix_INI"); 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); @@ -153,6 +154,10 @@ public class Modelador { Core.convertScaleAbs(mIntermediateMat, mIntermediateMat, 10, 0); Imgproc.threshold(mIntermediateMat, mIntermediateMat, 70, 255, Imgproc.THRESH_BINARY); + + Imgproc.erode(mIntermediateMat, mIntermediateMat, Imgproc.getStructuringElement(Imgproc.MORPH_RECT,new Size(1, 1))); + Imgproc.dilate(mIntermediateMat, mIntermediateMat, Imgproc.getStructuringElement(Imgproc.MORPH_RECT,new Size(1, 1))); + int cant_pix = mIntermediateMat.cols() * mIntermediateMat.rows(); int cant_pix_white = Core.countNonZero(mIntermediateMat); @@ -167,6 +172,9 @@ public class Modelador { } break; case 2: + if (cant_pix_white > (MIN_CANT_PIX_WHITE)) { + Log.i(TAG, "NUEVA FICHA" + (i+1) + "-" + (j+1)); + } Imgproc.cvtColor(mIntermediateMat, subm, Imgproc.COLOR_GRAY2RGBA, 4); break; default: @@ -176,6 +184,7 @@ public class Modelador { } } } + Log.i(TAG, "cant_pix_FIN"); return tmp; } diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/DetectorOclusion.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/DetectorOclusion.java index 3caca7e..daa47d2 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/DetectorOclusion.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/DetectorOclusion.java @@ -16,6 +16,7 @@ public class DetectorOclusion { private static final int OCLUSION = 0; private static final int ESTABLE = 1; private static final int TRANSICION = 2; + private static final int ENVIAR_TABLERO = 3; private static final int START = -1; private Mat _fgMaskMOG2; @@ -38,6 +39,14 @@ public class DetectorOclusion { Log.i(TAG, "constructor FIN"); } + public Mat get_resultado() { + return _resultado; + } + + public void set_resultado(Mat _resultado) { + this._resultado = _resultado; + } + public boolean hayNuevoTableroValido(Mat inputFrame) { Log.i(TAG, "Procesar!"); @@ -59,30 +68,35 @@ public class DetectorOclusion { _estadoANTERIOR = _estadoACTUAL; if (suma.val[0] > 1250000) { - Log.i(TAG, "MANO !!!"); + Log.i(TAG, "VEO MANO !!!"); _estadoACTUAL = OCLUSION; /*Core.putText(_fgMaskMOG2, "MANO !!!", new Point(20, 20), Core.FONT_HERSHEY_SIMPLEX, 0.8, new Scalar(255, 255, 0));*/ } else { - Log.i(TAG, "ESTABLE !!!"); if (_estadoANTERIOR == OCLUSION) { /*Core.putText(_fgMaskMOG2, "TRANSI !!!", new Point(20, 20), Core.FONT_HERSHEY_SIMPLEX, 0.8, new Scalar(255, 255, 0));*/ + Log.i(TAG, "VEO TRANSICION !!!"); _estadoACTUAL = TRANSICION; } if (_estadoANTERIOR == TRANSICION) { /*Core.putText(_fgMaskMOG2, "ESTABLE !!!", new Point(20, 20), Core.FONT_HERSHEY_SIMPLEX, 0.8, new Scalar(255, 255, 0));*/ - _estadoACTUAL = ESTABLE; + _estadoACTUAL = ENVIAR_TABLERO; _pMOG2 = new BackgroundSubtractorMOG2(); // MOG2 approach + Log.i(TAG, "VEO ENVIAR !!!"); + } + if (_estadoANTERIOR == ENVIAR_TABLERO){ + _estadoACTUAL = ESTABLE; + Log.i(TAG, "VEO ESTABLE !!!"); } } Log.i(TAG, "END"); - //Imgproc.cvtColor(_fgMaskMOG2, _resultado, Imgproc.COLOR_GRAY2RGBA, 4); - return (_estadoACTUAL == ESTABLE); + Imgproc.cvtColor(_fgMaskMOG2, _resultado, Imgproc.COLOR_GRAY2RGBA, 4); + return (_estadoACTUAL == ENVIAR_TABLERO); } } diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java index c0a8d11..40e50b3 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java @@ -21,7 +21,7 @@ public class Manager { + "--------------------------------------------------------------------------\n" + " .:: CHESSTRACK ::. seguimiento de una partida de Ajedrez\n" + "\n" - + " TImag 2014\n" + + " TImag 2014\n" + " Nicolas Furquez - Aylen Ricca\n" + "--------------------------------------------------------------------------\n"; @@ -110,8 +110,8 @@ public class Manager { break; case JUGANDO: Log.i(TAG, "Jugando"); - if (_detectorOclusion.hayNuevoTableroValido(region)) { - Log.i(TAG, "Tablero Valido\n"); + //if (_detectorOclusion.hayNuevoTableroValido(region)) { + Log.i(TAG, "Tablero Valido"); // llamar al modelador Mat aux = _modelador.getMatrizFichas(region); Log.i(TAG, "MATRIZ=" + aux.dump()); @@ -119,13 +119,14 @@ public class Manager { if (_salida == OK) { _client.SendData("Nuevo Tablero Valido!\n"); - _client.SendData(aux.dump().concat("\n")); + _client.SendData(" ".concat(aux.dump().concat("\n"))); } - } + //} break; } if (_debug) { + Log.i(TAG, "DEBUG"); Mat tmp = Mat.zeros(inputFrame.size(), CvType.CV_8UC4); Mat matTMP = tmp.submat(Calibracion.getRectROI()); region.copyTo(matTMP); -- GitLab