2010-05-02 37 views
10

Así que quiero poder reconocer patrones en imágenes (como un número 4), he estado leyendo sobre algoritmos diferentes y me gustaría usar el algoritmo Nearest Neighbor, it parece simple y lo entiendo basado en este tutorial: http://people.revoledu.com/kardi/tutorial/KNN/KNN_Numerical-example.html El problema es que, aunque entiendo cómo usarlo para completar los conjuntos de datos faltantes, no entiendo cómo podría usarlo como una herramienta de reconocimiento de patrones para apuntar Reconocimiento de forma de imagen. ¿Podría alguien arrojar algo de luz sobre cómo este algoritmo podría funcionar para el reconocimiento de patrones? He visto tutoriales usando OpenCV, sin embargo, realmente no quiero usar esta biblioteca ya que tengo la capacidad de hacer el preprocesamiento yo mismo, y me parece tonto que implemente esta biblioteca solo por lo que debería ser un vecino más cercano. algoritmo.Usando el algoritmo vecino más próximo para reconocimiento de patrones de imagen

Respuesta

9

Usted simplemente (¿simplemente?) Tiene que definir una medida de "distancia" para sus datos.

Supongamos que ya ha segmentado su imagen grande en imágenes pequeñas, cada una correspondiente a un carácter de texto que desea clasificar. Supongamos que estamos tratando con imágenes monocromáticas digitales, por lo que cada imagen se representa como una matriz rectangular de valores (píxeles) en (por ejemplo) el rango entero 0-255 (brillo). También se supone (NN es un "algoritmo de clasificación supervisado") que tiene muchas imágenes bien clasificadas (su conjunto de entrenamiento).

Dada una nueva imagen pequeña, debe definir una distancia entre dos imágenes para que se elija la más cercana en el conjunto de entrenamiento, y se seleccione su "etiqueta" como el carácter de texto reconocido.

Un enfoque ingenuo sería tomar la diferencia de píxeles (suma de cuadrados, por ejemplo). Pero esta medida de distancia sería sensible a las traducciones (y rotaciones y escalas) y generalmente no queremos eso. Una alternativa sería calcular el módulo de la transformada de Fourier, que es invariante de traducción (pero esto no es suficiente). Desde aquí puede comenzar, y apreciar que el problema es difícil, y este tipo de clasificación requiere mucho trabajo para funcionar aceptablemente.

2

Utilicé el algoritmo K-Nearest-Neighbour para el reconocimiento de pose en un Pose-Recognition en tiempo real con videocámara. Le recomendaría usar Matlab para entrenamiento y prueba de conjuntos de datos, ya que tiene PRToolbox para este propósito y hay mucha ayuda y muestras. Lo más importante es que elija correctamente las características que permitirán representar cada clase de manera robusta. Una vez que tenga las características (este será un conjunto de valores como, color, área, posiciones ...) y las clases, necesita muestras para entrenar al clasificador (KNN, por ejemplo). Tan importante como el clasificador es cómo elige las muestras para el entrenamiento. Entonces tendrás que probar el clasificador.

Pruebe diferentes conjuntos de entrenamiento, diferentes características, diferentes clasificadores, porque quizás el KNN no sea el método más adecuado para su tipo de datos.

Espero que esto le resulte útil.

Cuestiones relacionadas