Hay dos imágenes ¿Hay algún algoritmo que pueda decirnos si una imagen se recorta de la otra?

Este es un problema de visión por computadora, especialmente si desea trabajar con imágenes comprimidas con pérdida como JPEG. No creo que haya una solución completa todavía. Varios motores de búsqueda ofrecen búsqueda inversa de imágenes. Un amigo mío está tratando de desarrollar un método algo más poderoso. Ver https://pippy360.github.io/demov3/

Editar : en la versión más simple posible de este problema, donde el recorte se realiza sin escala ni rotación, es posible utilizar una técnica muy básica llamada coincidencia de plantilla. La imagen recortada debe recortarse desde el medio (o, en el peor de los casos, el borde) de la otra, pero la imagen más grande debe contener completamente la imagen recortada. La imagen más pequeña se convierte en la plantilla. El método simplemente intenta hacer coincidir la plantilla en cada posición posible dentro de la imagen más grande. Devuelve el punto de mejor partido. OpenCV lo admite, y es bastante rápido.

Si una imagen es una versión recortada de una imagen más grande, significa que la imagen más pequeña, [math] I_S [/ math], está presente en la imagen más grande, [math] I_L [/ math], comenzando en alguna posición [math ] (y_0, x_0) [/ math]. Esto significa que

[matemáticas] \ sum_ {r = 0} ^ {filas-1} \ sum_ {c = 0} ^ {cols-1} | I_S (r, c) – I_L (y_0 + r, x_0 + c) | = 0 [/ matemáticas]

Si las imágenes se almacenan en un formato sin pérdida. De lo contrario, necesita un criterio más tolerante.

Puede escribir un doble bucle for para encontrar la posición [math] (y_0, x_0) [/ math]

Esencialmente, está correlacionando las dos imágenes para que sea posible hacerlo de manera más eficiente en el dominio espectral.