image

matchImages

Descripción

Compara una imagen de consulta con las imágenes de una tabla para encontrar coincidencias. Esta acción puede utilizar dos métodos principales: la coincidencia de plantillas, que busca ocurrencias exactas de la imagen de consulta, o la coincidencia de descriptores, que encuentra objetos similares basándose en puntos clave y descriptores como ORB o BRISK. Es fundamental en tareas de búsqueda de objetos, reconocimiento de escenas y análisis de contenido visual a gran escala.

image.matchImages / addColumns={'CHANNELCOUNT', 'CHANNELTYPE', 'DEPTH', 'HEIGHT', 'WIDTH'} | {extendedBaseAddColumnsParms}, casOut={<span class='xisCas-userSuppliedSyntaxValue2'>results</span>, <span class='xisCas-userSuppliedSyntaxValue2'>rc</span>}, copyVars={'<span class='xisCas-userSuppliedSyntaxValue2'>variable-name-1</span>', '<span class='xisCas-userSuppliedSyntaxValue2'>variable-name-2</span>', ...}, decode=TRUE | FALSE, highlight=TRUE | FALSE, methodOptions={method='DESCRIPTORMATCH' | 'TEMPLATEMATCH', <span class='xisCas-userSuppliedSyntaxValue2'>method-specific-parameters</span>}, queryImage={<span class='xisCas-userSuppliedSyntaxValue2'>queryImageParameterList</span>}, queryImageCaslib='<span class='xisCas-userSuppliedSyntaxValue2'>string</span>', table={<span class='xisCas-userSuppliedSyntaxValue2'>castable</span>}, threshold=<span class='xisCas-userSuppliedSyntaxValue2'>double</span>;
Parámetros
ParámetroDescripción
addColumns Especifica columnas base generales aplicables a todos los formatos de imagen.
casOut Especifica la configuración de la tabla de salida donde se almacenarán los resultados de la coincidencia.
copyVars Especifica las variables que se copiarán de la tabla de entrada a la tabla de salida.
decode Si se establece en TRUE, decodifica las imágenes antes de escribirlas en la tabla de salida.
highlight Si se establece en TRUE, se dibujan rectángulos alrededor de las coincidencias detectadas para resaltarlas.
methodOptions Especifica el método utilizado para la coincidencia: ya sea por plantilla (TEMPLATEMATCH) o mediante descriptores de puntos clave (DESCRIPTORMATCH).
queryImage Especifica la ruta del directorio de la imagen de consulta. La ruta debe ser relativa a la caslib especificada.
queryImageCaslib Especifica la caslib de tipo ruta donde se encuentra la imagen de consulta.
table Especifica la tabla de entrada que contiene los datos de imagen contra los que se realizará la búsqueda.
threshold Especifica el valor umbral para eliminar coincidencias de baja confianza.
descType (Dentro de methodOptions) Especifica el tipo de descriptor que se calculará en los puntos clave (por ejemplo, BRISK, ORB).
thresholdRatio (Dentro de methodOptions) Especifica la relación de umbral para eliminar coincidencias débiles en pares de descriptores.
Preparación de Datos: Carga de Imágenes en CAS

Antes de poder buscar coincidencias, es necesario cargar tanto la imagen de consulta como el conjunto de imágenes de referencia en el entorno CAS. La acción `loadImages` se utiliza para cargar una colección de imágenes desde una ruta de sistema de archivos accesible por el servidor CAS a una tabla CAS en memoria. Esta tabla servirá como el 'corpus' en el que se buscarán las coincidencias.

¡Copiado!
1PROC CAS;
2image.loadImages /
3 path='path/to/your/image_folder'
4 casout={name='IMAGES_TO_SEARCH', caslib='CASUSER', replace=true};
5RUN;

Ejemplos

Este ejemplo realiza una búsqueda básica utilizando el método de coincidencia de plantillas (`TEMPLATEMATCH`). Busca la imagen `logo.png` dentro de cada imagen en la tabla `IMAGES_TO_SEARCH`. Este método es rápido e ideal para encontrar ocurrencias exactas o casi exactas de la imagen de consulta.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3image.matchImages / TABLE={name='IMAGES_TO_SEARCH', caslib='CASUSER'} queryImage={path='logo.png', caslib='CASUSER'} casOut={name='template_match_results', caslib='CASUSER', replace=true} methodOptions={method='TEMPLATEMATCH'};
4 
5RUN;
6 
Resultado :
Se crea una tabla de salida `template_match_results` que contiene una fila por cada coincidencia encontrada. Cada fila incluye las coordenadas (x, y) de la esquina superior izquierda de la coincidencia y una puntuación de confianza.

Este ejemplo avanzado utiliza el método de coincidencia de descriptores (`DESCRIPTORMATCH`) con el algoritmo BRISK para identificar objetos, incluso si están rotados o escalados. Se establece `thresholdRatio` en 0.7 para filtrar coincidencias ambiguas y `threshold` en 0.4 para eliminar coincidencias de baja confianza global. Además, la opción `highlight=true` instruye a la acción para que dibuje un rectángulo en la imagen de salida alrededor de cada coincidencia detectada, facilitando la visualización de los resultados.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3image.matchImages / TABLE={name='IMAGES_TO_SEARCH', caslib='CASUSER'} queryImage={path='object_to_find.png', caslib='CASUSER'} casOut={name='descriptor_match_results', caslib='CASUSER', replace=true} methodOptions={method='DESCRIPTORMATCH', descType='BRISK', thresholdRatio=0.7} threshold=0.4 highlight=true;
4 
5RUN;
6 
Resultado :
La tabla de salida `descriptor_match_results` se genera. Contendrá las imágenes procesadas con las coincidencias resaltadas por un rectángulo. Las columnas de la tabla proporcionarán detalles sobre la puntuación de la coincidencia y las coordenadas del cuadro delimitador para cada objeto encontrado.

FAQ

¿Cuál es el propósito de la acción `matchImages`?
¿Qué métodos de coincidencia se pueden especificar en `methodOptions`?
¿Cómo se especifica la imagen de referencia para la búsqueda?
¿Para qué sirve el parámetro `threshold`?
¿Qué hace el parámetro booleano `highlight`?