[en] A system that attempts to find cracks in a RGB picture of a concrete beam, measure the cracks angles and widths; and classify crack patterns in 3 pathologies has been designed and implemented in the MATLAB programming language. The system is divided in three parts: Crack Detection, Crack Clustering and Crack Pattern Classification. The Crack Detection algorithm attempts to detect pixels depicting cracks in a region of interest (ROI) and measure the crack angles and widths. The input ROI is segmented several times: First with an artificial Neural Network (NN) that classifies image patches in "Crack" or "Not Crack", then with the Canny Edge detector and finally with the local Mean and Standard deviation of the intensities. Then all neighborhoods in the mask are passed through special modified line kernels called "orientation kernels" designed to detect cracks and measure their angles; in order to obtain the width measurement, a line of pixels perpendicular to the crack is extracted and with an approximation of the intensity gradient of that line the width is measured. This algorithm outputs a mask the same size as the input picture with the measured angles and widths. The Crack Clustering algorithm groups up all the crack image patches recognized from the Crack Detection to approximate clusters that match the quantity of cracks in the image. To achieve this a special distance metric has been designed to group up aligned crack image patches; then with an algorithm based on the connectivity among the crack patches the clusters are obtained. The Crack Pattern Classification takes the mask outputs from the Crack Detection step as input for a Neural Network (NN) designed to classify crack patterns in concrete beams in 3 classes: Flexion, Shear and Corrosion-Bond cracks. The width and angles masks are first transformed into a Feature matrix to reduce the degrees of freedom of the input for the NN. To achieve a desirable classification in cases when more than 1 pathology is present, every angle and width mask is separated in as many Features matrices as clusters found with the Clustering algorithm; then separately classified with the NN designed. Several photos depicting concrete surfaces are presented as examples to check the accuracy of the width and angle measurements from the Crack Detection step. Other photos showing concrete beams with crack patterns are used to check the classification prowess of the Crack Pattern Classification step. The most important conclusion of this work is the transference of empirical knowledge from rehabilitation of structures to a machine learning model in order to diagnose the damage on an element. This opens possibilities for new lines of research to make a larger system with wider utilities, more pathologies and elements to classify.

[es] Se ha diseñado un sistema que a partir de una foto a color de una superficie de hormigón realiza las siguientes tareas: Detectar fisuras, medir su ángulo y ancho, clasificar los patrones de fisuración asociados a tres patologías del hormigón; el cual ha sido implementado en el lenguaje de programación MATLAB. El sistema se divide en tres partes: Detección y medición de fisuras; algoritmo de análisis de grupos de fisuras y clasificación de patrones de fisuración. El algoritmo de detección de fisuras detecta los pixeles en donde hay fisuras dentro de una región de interés y mide el ancho y ángulos de dichas fisuras. La región de interés es segmentada varias veces: Primero con una red neuronal artificial que clasifica teselas de la imagen en dos categorías "Fisura" y "No fisura"; después se hace otra segmentación con un filtro Canny de detección de bordes y finalmente se segmenta con la media y desviaciones intensidades en teselas de la imagen. Entonces todas las localidades de la máscara de imagen obtenida con las segmentaciones anteriores se las pasa por varios filtros de detección de líneas diseñados para detectar y medir las fisuras. Este algoritmo resulta en dos máscaras de imagen con los anchos y ángulos de todas las fisuras encontradas en la región de interés. El algoritmo de análisis de grupos de teselas reconocidas como fisuras se hace para intentar reconocer y contar cuantas fisuras aparecen en la región de interés. Para lograr esto se diseñó una función de distancia para que teselas de fisura alineadas se junten; después con un algoritmo basado en la conectividad entre estas teselas o vectores fisura se obtienen los grupos de fisura. La clasificación de patrones de fisuración toma las máscaras de imagen del paso de detección de fisuras y lo toma como dato de entrada para una red neuronal diseñada para clasificar patrones de fisuración en tres categorías seleccionadas: Flexión, Cortante y Corrosión-Adherencia. Las máscaras de imagen de ancho y ángulo se transforman en una matriz de características para reducir los grados de libertad del problema, estandarizar un tamaño para la entrada al modelo de red neuronal. Para lograr clasificaciones correctas cuando más de 1 patología está presente en las vigas, cada máscara de imagen de ángulos y anchos de fisura se divide en cuantos cuantos grupos de teselas de fisuras haya en la imagen, y para cada uno se obtienen una matriz de características. Entonces se clasifican separadamente dichas matrices con la red neuronal artificial diseñada. Varias fotos con superficies de hormigón se presentan como ejemplos para evaluar la precisión de las mediciones de ancho y ángulo del paso de detección de fisuras. Otras fotos mostrando patrones de fisuración en vigas de hormigón se muestran para revisar las capacidades de diagnóstico del paso de clasificación de patrones de fisuración. La conclusión más importante de este trabajo es la transferencia del conocimiento empírico de la rehabilitación de estructuras hacia un modelo de inteligencia artificial para diagnosticar el daño en un elemento de la estructura. Esto abre un campo grande de líneas de investigación hacia el diseño e implementación de sistemas automatizados con más utilidades, más patologías y elementos para clasificar.