Tenía una mirada rápida en PHP ImageMagick y GD y tampoco se ha construido en forma de hacerlo. Un enfoque podría ser utilizar ImageMagick para dividir la imagen más grande en otras más pequeñas (del mismo tamaño que la más pequeña) y comenzar a compararlas con la más pequeña.
Sin embargo, supongo que será muy lento.
Puede hacer eso con imagemagick si utiliza una llamada al sistema en su código PHP. No sé si quieres probar esto, pero aquí es cómo se puede hacer:
<?php
//set a bigger time out limit because comparison takes a while
set_time_limit (275) ;
//the bigger image
$bigimage = "big.bmp";
//the smaller image
$smallimage = "small.bmp";
//result image
$resimg = "/tmp/similarity";
//system call
$output = shell_exec("(compare -metric AE -subimage-search ".$bigimage." ".$smallimage." ".$resimg." > /dev/null) 3>&1 1>&2 2>&3");
//result is something like "0 @ 251,263"
$res = explode("@",$output);
if($res[0]==0)
{
echo "Perfect match<br/>";
$res = explode(",",$res[1]);
echo "width: ".$res[0];
echo "<br/>";
echo "height: ".$res[1];
} else {
echo "Not match";
}
?>
He probado el código anterior en una máquina Linux con XAMPP 1.7.3a para Linux y ImageMagick 6.7. 1-0 2011-07-10 P16.
Sobre la comparación utilizo el AE métrica (error absoluto) que cuenta cómo difieren muchos píxeles. El resultado se imprime en la secuencia de error (STERR). Más sobre la búsqueda de subimagen de imagemagick puede encontrar here.
Buena suerte :)
¿Está buscando cualquier enfoque (es decir: la fuerza bruta) o está buscando un enfoque algorítmico más inteligente? – MoarCodePlz
¿Desea buscar una imagen más pequeña específica (para la que tiene datos de mapa de bits), o simplemente cualquier imagen genérica? ¿Se conoce o no el tamaño pequeño de la imagen? – lxa
Básicamente estoy buscando un enfoque algorítmico más inteligente, si esto es posible en PHP con la comparación de imágenes ... sé todo, incluyendo el tamaño de la imagen, de la imagen más pequeña. –