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.
| Parámetro | Descripció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. |
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.
| 1 | PROC CAS; |
| 2 | image.loadImages / |
| 3 | path='path/to/your/image_folder' |
| 4 | casout={name='IMAGES_TO_SEARCH', caslib='CASUSER', replace=true}; |
| 5 | RUN; |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.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 | |
| 5 | RUN; |
| 6 |
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.
| 1 | |
| 2 | PROC CAS; |
| 3 | image.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 | |
| 5 | RUN; |
| 6 |