Hola a todos!
Soy un teleco programador que necesita un cable. He creado recientemente Mosaime, una web muy chula para hacer mosaicos con tus propias fotos. La dirección es mosai.me
Recientemente he mejorado el algoritmo de creación de mosaicos, pero es imperfecto porque me he inventado una fórmula matemática, y estoy seguro de que hay un método mejor. Por eso posteo aquí. Si el subforo que he elegido es incorrecto, disculpen las molestias.
El problema es el siguiente:Tengo una matriz de, por ejemplo, 5x5. La matriz tiene valores enteros entre 0 y 255. Esta matriz representa un canal de color de una imagen.
Por otro lado, tengo un listado de muchas matrices del mismo tamaño y de mismas características, que también representan imágenes.
El problema reside en
averiguar qué matriz de la del listado se parece más a la matriz dada al principio.
Estas matrices son cada una de las fotos pequeñas que componen los fotomosaicos.
Pero, ¿qué es parecerse? Lo explico con un ejemplo.
Mi primera idea fue usar distancia euclídea, tomando cada elemento de la matriz como una dimensión independiente.
El problema de este método es que dada la siguiente matriz:
\( \begin{pmatrix} 50 & 50 & 50 \\ 50 & 50 & 50 \\ 50 & 50 & 50 \end{pmatrix} \)
dista igual de estas dos matrices:
\( \begin{pmatrix} 10 & 10 & 10 \\ 10 & 10 & 10 \\ 10 & 10 & 10 \end{pmatrix} \)
\( \begin{pmatrix} 10 & 10 & 90 \\ 10 & 90 & 90 \\ 90 & 90 & 90 \end{pmatrix} \)
Cuando las imágenes no se parecen nada. En esta situación, elegir la primera matriz como la más parecida sería un acierto porque el color es más uniforme, al igual que en la matriz primera. Sin embargo, en la segunda hay un contraste fuerte en un lado. Al sustituirla, quedaría mal.
Por tanto, yo diría que influye la desviación típica. Digamos que dos matrices de imágenes son parecidas cuando tienen una baja distancia euclídea y desviaciones típicas similares. Si las dos condiciones anteriores se cumplen, entonces una matriz será susceptible de ser sustituida por la otra y el mosaico se verá bien.
¿Se os ocurre alguna herramienta que permita obtener una distancia según estas condiciones?Mi solución provisional ha sido calcular la distancia euclídea como he dicho antes, pero introduciendo dentro de la raíz la diferencia de desviaciones típicas. Totalmente inventado empíricamente para que me quedaran bien los mosaicos.
Quizás la solución sea muy obvia. Si es fácil mejor.
Muchas gracias por vuestro tiempo!!
