Loading

Alison's New App is now available on iOS and Android! Download Now

Study Reminders
Support
Text Version

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Ahora pasaremos a uno de los detectores de características más significativos que se han desarrollado en la visión de la computadora conocida como la transformación de característica invariante de escala o SIFT. SIFT fue desarrollado por una persona David Lowe de la Universidad de Columbia Británica. Se desarrolló de vuelta a finales de los noventa, pero para el momento en que se publicó anteriormente, estaba cerca de 2004. A esta fecha, ha terminado, creo, 56.000 o 57.000 citas. Eso habla del impacto que ha tenido en la comunidad durante la última década y media. El objetivo principal de SIFT es transformar datos de imagen en coordenadas de punto de clave invariantes de escala. Así que una vez más, muy similar al detector de la esquina de Harris. Nuestro objetivo es extraer puntos clave de las imágenes, pero vamos a ir un paso más allá ahora. Además de detectar esos puntos clave en las imágenes, también queremos encontrar una forma eficaz de describir esos puntos clave. Una forma sencilla de describir puntos clave que hemos visto hasta ahora es X coma Y, que es la ubicación de coordenadas de ese punto clave. Tal vez usted puede agregar una escala tal como un sigma que vimos en la conferencia anterior. Pero ahora con SIFT, usted va a hablar de una característica completa descriptiva, que describe las características locales alrededor de ese punto clave en particular. SIFT es fundamental para muchos problemas y aplicaciones de visión de núcleo, incluyendo el reconocimiento, el seguimiento de movimiento, la geometría de múltiples vistas, así sucesivamente. Durante muchos años, hasta que el aprendizaje profundo se hizo popular, SIFT fue ampliamente utilizado para el reconocimiento simple de objetos en imágenes. (02:30) Como acabo de mencionar, en SIFT, el contenido de la imagen se transforma en coordenadas locales, que son idealmente invariables a la traducción, rotación, escala y corte. Así, por ejemplo, una vez más, dos imágenes del mismo objeto tomadas de diferentes ángulos, diferentes poses, tal vez diferentes iluminaciones. Pero idealmente queremos asegurarnos de que se detecten los mismos puntos clave en ambas imágenes independientemente de las variaciones en la traducción, independientemente de las variaciones en la rotación, independientemente de los cambios en la escala, así como de la cizalladura, el cizallamiento es una transformación de la perspectiva. (03:15) El SIFT consta de cuatro pasos y vamos a pasar por cada uno de ellos individualmente. Pero antes de cubrirlas, debo mencionar que SIFT es un excelente esfuerzo de ingeniería. Cada paso tiene una motivación adecuada de por qué se desarrolló y qué parte del objetivo ayudó a cumplir. Le recomendaré que lea el artículo del SIFT, sólo para entender cómo se ha escrito un hermoso papel de ingeniería en la visión de la computadora. El primer paso en SIFT es hacer lo que se conoce como detección de extrema de espacio a escala. Esto es muy similar al detector de la escala de Harris Corner. Aunque hay un poco más que eso, lo que aclararé en algún tiempo. El segundo paso es acerca de la localización de puntos clave. Una vez que haya encontrado un punto clave, ¿podemos intentar averiguar exactamente dónde está ese punto clave? Quiero decir, es tal vez medio pixel, un poco más allá, así que en y así sucesivamente, podría estar en la ubicación, podría ser en escala también. El tercer paso es determinar la orientación de ese punto clave. Hay una razón por la que vamos a tratar de determinar la orientación de ese punto clave. Vamos a tratar de utilizar los gradientes de imagen local alrededor de ese punto clave para asignar la orientación. Y lo ideal es preservar la escala de orientación y la ubicación de cada característica. Por último, como he mencionado, vamos a hablar de cómo se describen esos puntos clave en términos de información local sobre ese punto clave. Una vez más, vamos a utilizar alguna información de los degradados, pero queremos desarrollar una representación para ese punto clave, que es invariante a un montón de transformaciones. ¿Por qué necesitamos una representación? Recuerda que, dijimos que si quieres emparejar dos imágenes y unirlas juntas, necesitamos comparar puntos clave en primera imagen a puntos clave en la segunda imagen, tener una representación te permite comparar. De lo contrario, no sería capaz de comparar, simplemente coordinar ubicaciones porque podrían ser muy diferentes en las dos imágenes. (05:33) Así que el primer paso, como acabo de decir, es la detección del espacio de escala extrema. Y la manera en que SIFT implementa esto es en primer lugar construir lo que se conoce como un espacio de escala. Un espacio de escala como se muestra en el diagrama aquí es simplemente tomar una imagen, convolvándola con Gaussiano, que es una imagen. Luego convolvándolo con K times sigma. Así que tienes otro Gaussiano con K veces sigma, esa es otra imagen, pero el tamaño de la imagen se mantiene igual. Sólo podría ser más borrosa. Luego, tienes una convolución con un Gaussiano con K square sigma. Una vez más, el tamaño de la imagen sigue siendo el mismo. No estamos submuestreando en este momento. Simplemente haciéndola más borrosa dependiendo de lo que elijas que se haga. Todas estas imágenes de lo que se conoce como una octava. Así que vas a tener muchas imágenes de este tipo en una octava, dependiendo de los valores de K y de cuantas imágenes querías. En el siguiente paso, usted construye su segunda octava, donde el objetivo ideal sería sub-muestra la imagen y luego repetir el mismo proceso que usted tenía para su primera octava. En lugar de hacer un sub-muestreo y repetir el mismo proceso, también se puede hacer simplemente una convolución gaussiana con dos sigma. Recuerda que eso lo hará más amplio. Así que simplemente puedes hacer una convolución gaussiana con dos sigma y eso te da un efecto similar al construir una segunda octava de imágenes submuestreadas. Recuerde que cuando tome Gaussian 2 sigma, su propagación va a ser más amplia para el Gaussiano. Así que usted va a desdibujar más píxeles y probablemente considere más píxeles que están más lejos, que es lo que habría pasado si usted hubiera submuestreado y luego Gaussiano con sigma como la desviación estándar. (07:39) Para poder detectar el extremo entre estos Gaussianos, lo ideal es que queramos usar la idea de los Laplacianos. Recuerde, de nuevo, si usted recuerda a nuestro Laplacian como un detector de borde, dijimos que a diferencia de un detector de borde como Sobel, donde se obtienen intensidades altas, donde sea que haya un borde, para un Laplacian, se obtiene un borde siempre que hay un cruce de cero, por favor, vuelva y renueve su conferencia en Laplacian. Dijimos, cada vez que el Laplacian asume un valor cero y está rodeado de algunas intensidades, se puede suponer que hay información de borde allí. Así que idealmente queremos usar un Laplacian para poder obtener la información de esquinas y bordes en la imagen. Pero recuerde que hablamos de ello en la última conferencia que Laplacian puede ser implementada como una diferencia de Gaussianos. Así que, lo que significa todos estos Gaussianos que tienes en la primera octava, recuerda, una de esas imágenes habría sido G de sigma, una de ellas, G de K sigma, G de K square sigma, así sucesivamente y así sucesivamente, esos son los filtros. Lo ideal sería que convolara su imagen de entrada con cada uno de esos filtros. Ahora, simplemente tomarías la diferencia entre los sucesivos Gaussianos en las imágenes en la octava, y obtendrás un conjunto de diferencias de imágenes Gaussianas, que, recuerda, es muy similar al Laplacian de esas imágenes originales. Así que construís estas diferentes imágenes gaussianas en cada octava por separado. (09:30) Vamos a escribir que como D (x, y, sigma) es igual a I-hat (x, y, sigma)-I-hat (x, y, k sigma), donde I-hat es la convolución de un Gaussiano con el Sigma apropiado con la imagen original. Estamos escribiendo matemáticamente, lo que hemos descrito hasta ahora. (09:50) Ahora, para encontrar el espacio de escala de detección extrema, lo que vamos a hacer es por cada píxel, así que digamos que usted toma ese píxel cruzado, en la imagen de la derecha. Usted toma un tres por tres vecindarios alrededor de ese punto en su propia imagen. Y entonces usted toma un tres tres barrios de la cruz en la imagen en la escala más alta siguiente y un tres tres barrios de la cruz en la misma ubicación en la siguiente escala inferior. Con esto, tendrá un conjunto de 27 píxeles y nueve píxeles en la parte superior en la escala superior, 9 píxeles en la escala inferior y 9 píxeles en la escala apropiada, incluyendo el píxel en el centro. Así que tienes todos estos pixeles dados a ti. (10:41) Y lo que haces ahora es comparar un píxel con todos los 26 píxeles en y alrededor de él. Así que eso va a estar a su alrededor en términos de ubicación, espacial, así como a su alrededor en términos de escala, la siguiente escala más alta y la siguiente escala más baja. Y luego, selecciona un píxel con, si es más grande o más pequeño que todos los 26 píxeles que lo rodean. Así que selecciona tanto el mínimo como el máximo de todos esos 27 píxeles en un barrio espacial y de escala. Por eso llamamos a este espacio de escala detección extrema. Así que estamos tratando de detectar la extrema en la escala y el espacio. Ese es su primer paso. (11:30) Así que detectamos puntos interesantes, escala invariante y orientación en cierta medida, usando DOG o diferencia de Gaussianos. Recuerde, de nuevo, la diferencia de Gaussianos es una aproximación de un Laplacian de Gaussiano. Sólo una aclaración aquí. La última vez, dijimos que la diferencia de Gauss es una aproximación del Laplacian corregido a Laplacian de Gaussiano. La diferencia de gaussiano es una aproximación al Laplaciano de Gaussiano. El siguiente paso es la localización de puntos clave. Lo ideal es que queramos ver si hemos encontrado el punto exacto donde tenemos el extrema, el máximo y el mínimo. (12:20) Para hacer esto, vamos a ver esta diferencia de la función de Gaussiano D como cualquier otra función. Y si supiéramos que nuestro detector extrema estaba en estos puntos azules, que se conocen como tu extremo detectado aquí. Lo ideal es que queramos encontrar estos puntos rojos donde realmente se logre lo mínimo y lo máximo. Así que significa que el mínimo y el máximo podría lograrse en entre dos ubicaciones de coordenadas o en entre dos escalas que considerábamos en, en el experimento hasta ahora. ¿Cómo encontramos esto? (12:55) La forma en que encontramos esto es que vamos a considerar la expansión de la serie de Taylor. Dado un s_0, que se da por (x_0 y_0 sigma_ 0). Y en delta S que se da por (delta x, delta y, delta sigma), por lo que s_0 es la escala mínima o máxima y la ubicación de coordenadas que ya han encontrado en el paso anterior, en el paso uno y delta x, delta y delta Sigma es lo que queremos encontrar, para averiguar dónde se logra el extremo exacto. Así que escribimos su expansión tradicional de la serie de Taylor, que es dada por D en nuestro caso, esa es la diferencia de la salida de Gauss. s no más delta s no es igual a, es sólo aproximado, porque no estamos considerando los términos de orden superior aquí, aproximadamente D (s_ 0) + el primer derivado x delta s + 1/2 delta transpuesto segundo delta s y términos de orden superior. (14:00) Ahora, para averiguar dónde está exactamente esto asiste a los mínimos. Idealmente tenemos que diferenciar esta expansión de la serie de Taylor con respecto a s o delta s en este caso en particular y así todos para delta s. Así que decimos que nuestra solución para delta s, que denotamos como s hat se va a dar por, este es un simple derivado, sólo diferenciamos esto con respecto a s. El derivado del primer término irá a cero. Segundo derivado, recuerde que el gradiente se evalúa en s no. Así que eso sería una constante con respecto a delta s. Así que te quedarías con, si diferenciarías esta expansión de la serie de Taylor, terminarás teniendo d (D)/d (s) + d ^ 2 (D)/d (s) ^ 2 delta s = 0. Y cuando se resuelve para delta s, la solución es lo que denotamos por S hat. Viene de la simple diferenciación de su expansión de la serie de Taylor. (15:20) Entonces, ¿y cómo resolvemos esto? Podemos calcular su segundo derivado y primer derivado, simplemente por diferencias finitas. Recuerde, puede tomar para completar el primer derivado tanto en el espacio como en la escala. Usted puede simplemente hacer diferencias finitas con las siguientes ubicaciones a la izquierda, las siguientes ubicaciones en la derecha o las ubicaciones más altas en la escala y así sucesivamente y así sucesivamente. Diferencias finitas simples, la forma en que hablamos de los gradientes de computación con respecto a los bordes exactamente de la misma manera que esto se puede calcular. Y podemos resolver por delta s, lo que nos da delta x, delta y, delta sigma, donde se logra el extremo real. Así que ahora sabemos exactamente dónde se logra el extremo. Así que esto podría ayudarnos a localizar mejor. Una vez que hacemos esto, también hacemos un paso más. También queremos eliminar ahora todos los puntos, que tienen bajo contraste y todos los puntos, que son puntos de borde debido a sus puntos de borde, no son esquinas útiles como ya hablamos en la última conferencia. (16:26) ¿Cómo eliminamos los puntos de contraste bajos? Eliminamos los puntos de contraste bajos simplemente diciendo que si D en el sombrero S, que es que la nueva ubicación es más pequeña que un cierto valor 0,03. Si ese valor es pequeño, vamos a decir que tiene la diferencia de la salida de Gauss hay muy pequeño, asumiendo por supuesto, que sus valores de imagen se han normalizado en un cierto rango. Vamos a decir que el valor es demasiado pequeño, y en realidad podemos rechazarlo y no considerar esos puntos para el procesamiento futuro. ¿Cómo quitar los puntos de borde? (17:00) Eso debería sonar una campana, usando un enfoque muy similar, como el detector de la esquina de Harris. Sin embargo, David Lowe y SIFT toman un enfoque ligeramente diferente y utiliza un Gaussiano de su D, que es su diferencia de salida Gaussiano de nuevo, en lugar de utilizar una correlación automática. (17:20) Así que ha habido otras personas que también extendieron el detector de la esquina de Harris para usar esquinas basadas en el Hessian, SIFT utiliza ese tipo de un enfoque donde el Hessian de D que también puede ser considerado como las curvaturas. El Hessian efectivamente, el segundo derivado efectivamente captura las curvaturas de modo que el Hessian, que es su segunda matriz derivada por pares, le da una idea de curvaturas en diferentes direcciones o los cambios en diferentes cambios bruscos en diferentes direcciones. Así que los eigenvalues del Hessian son también buenas estimaciones para entender las esquinas. Tan similar al detector de la esquina de Harris, SIFT propone usar el Hessian, computando su mayor y menor valor eigenvalue, que son denotados por alfa y beta. Entonces usted, una vez más, computa su rastro y determinante de su matriz hessiana, muy similar a como detectamos para el detector de la esquina de Harris, y luego evaluamos diferentes relaciones con respecto a trazas y determinantes. (18:20) Así que usted podría escribir su rastro va a ser alfa más beta. Su determinante va a ser, alfa x beta, por lo que su cuadro de traza por determinante va a ser (alfa + beta) ^ 2 /alfa x beta, que se puede escribir como (r beta + beta)/r beta ^ 2, donde r se escribe como alfa/beta .. (19:00) Utilizando este enfoque, el cuadrado de rastreo por determinante se puede escribir como (r + 1) ^ 2/r y la forma final que eliminamos los bordes es señalando que esta cantidad ahora va a ser mínima cuando r es igual a 1, porque cuando r es igual a 1, sabemos que alfa y beta están cerca unos de otros, son igualmente altos, que es lo que queremos encontrar sus puntos de esquina. Por lo tanto, SIFT propone que rechace el punto clave si el rastreo del cuadrado de Hessian por determinante de H es mayor que el umbral, porque desea que sea cercano a 1. Por lo tanto, si es mayor que el umbral, simplemente rechaza el punto clave. El papel SIFT original utiliza r es igual a 10, en este caso en particular, el umbral para ser 10 en este caso en particular. (19:50) Así que al final del paso dos, hemos determinado la ubicación exacta y la escala en cada punto extremo. Y también hemos seleccionado algunos de estos puntos clave basados en la estabilidad al eliminar puntos clave de contraste bajos, así como puntos de borde. (20:15) Ahora viene al siguiente paso, que es la estimación de la orientación de estos puntos clave. Primero comencemos preguntando, ¿por qué necesitamos realmente la orientación? La respuesta es simple. Queremos ayudarle a conseguir la invariancia de la rotación al obtener un sentido de orientación y eso quedaría claro cuando describimos cómo lo vamos a hacer. Así que utilizamos la escala del punto para elegir la imagen correcta. Recuerde ahora que cada punto clave se denota como (x, y, sigma), donde x e y son las ubicaciones de coordenadas y sigma es la escala en la que se encontró que era un punto clave, muy similar a la escala del detector de Harris invariante, donde la esquina final se mide es más alta a una escala en particular. Aquí de nuevo, un punto de esquina o un punto de clave es definido por (x, y, y sigma). Así que usted utiliza la escala del punto para elegir un Gaussiano apropiado y convolve que Gaussiano con su imagen de entrada para obtener una imagen llamada I-hat. Ahora usted calcula la magnitud del gradiente y la orientación, usando un método simple de diferencias finitas para la imagen de I-hat. Así que usted tendría m de cada punto, que es su magnitud de gradiente en cada punto, que usted sería dado por simplemente su raíz de gradiente en la dirección x cuadrado + gradiente en y dirección cuadrada. Esa va a ser su magnitud del gradiente. Del mismo modo, su orientación del gradiente en esa ubicación va a ser tan inversa del gradiente y por el gradiente x. Al final de este paso, vamos a tener una magnitud y una orientación para cada punto de su imagen, incluyendo los puntos que ha identificado hasta ahora. Ahora, ¿qué hacemos? (22:05) Ahora, lo que vamos a hacer es tomar una cierta región alrededor del punto clave. No vamos a depender solo de la magnitud y la orientación del punto clave solo, porque queremos capturar las características locales, no solo las características en el punto. Usted toma una región alrededor del punto clave, una ventana determinada, digamos 5 x 5 ventana o lo que sea que sea. Y se consideran las orientaciones de todos los puntos, las magnitudes y las orientaciones de todos los puntos del barrio en torno al punto clave. Y usted construye un histograma fuera de las orientaciones de todos estos puntos. Este histograma en el papel del SIFT tiene 36 papeleras, con 10 grados por bandeja. Así que tenemos un ángulo de orientación dependiendo de cuál sea el ángulo de orientación. Así que si tuvieras un ángulo de orientación de 185 grados, lo ponías en la papelera de 180 a 90, por lo que cada cubo es de 10 grados. Cuando tienes 360 grados, por lo que tienes 36 papeleras. (23:10) El documento del SIFT también recomienda algunas heurísticas para mejorar el rendimiento aquí para decir que las entradas del histograma se ponderan también con una magnitud de gradiente. Si la magnitud del gradiente es alta, se incrementa el peso en el histograma en una bandeja particular. Y si la magnitud del gradiente es baja, ese peso en la bandeja para ese punto se reduce. Y también tiene una función gaussiana con sigma igual a 1,5 veces la escala del punto clave. Así que si agregas un punto clave, colocarías un Gaussiano encima del punto clave, y luego con un cierto sigma (sigma se da como 1.5 veces la escala del punto clave en sí). Y luego te ves si un punto en particular en el vecindario que consideras está más lejos, entonces contribuye menor al histograma. Y si un punto determinado está más cerca del punto clave, aporta más del histograma. Estas son algunas heurísticas que se utilizaron para mejorar el rendimiento. Y una vez que construís este histograma, después de estas heurísticas, el pico, cualquiera que sea el intervalo de mayor número de votos en la orientación, es considerado como el pico de ese punto clave en particular. Una vez más, tenga en cuenta aquí, aunque le llamamos el pico de ese punto clave, el pico se decide por las características locales del punto clave en lugar del punto solo. El trabajo del SIFT también sugiere introducir puntos clave adicionales en la misma ubicación, si hay otro pico en el histograma, que está en el valor del 80% del pico original. Si hay otros picos de este tipo, se introduce otro punto clave en la misma ubicación con una orientación diferente. Así que es posible. Tiene dos puntos clave en la misma ubicación con orientación diferente, lo que obtiene resultados más robustos. (25:10) Aquí hay algunas ilustraciones visuales de cómo funciona esto. Aquí hay una imagen de entrada. El primer paso consiste en capturar el extremo de la diferencia de los Gaussianos. Así que puedes ver aquí que cada punto también tiene una flecha. La flecha indica la orientación del punto clave y la longitud de la flecha indica la magnitud del gradiente en ese punto clave. Así que la base de esas flechas son el punto reals. Así que este es su primer paso de detección extrema. (25:50) Entonces, después de hacer un umbral de contraste bajo, estos 832 DoG extrema bajan a cerca de 729. Elimina puntos clave que tienen un valor inferior a un umbral en términos de contraste. (26:00) Entonces también hacemos la relación de pruebas basado en los hesianos para eliminar artefactos similares a los bordes. Y luego sus puntos clave bajan de 729 a 536. (26:18) Así que usted está podando los ruidosos puntos clave que pueden no ser realmente de valor. Y como ya dijimos, las flechas que viste fueron las orientaciones que obtienes usando tu paso tres. Ahora vamos al último paso, que consiste en encontrar una manera de describir ese punto clave. Hasta ahora, hemos encontrado el punto clave, hemos encontrado la escala en la que existe el punto clave, también tenemos una orientación para el punto clave. Ahora, la pregunta es ¿cómo describimos el punto clave? (26:50) Así que para hacer esto, una vez más vamos a utilizar la información de gradiente en el vecindario local alrededor del punto clave. Así que tomamos una ventana de 16 cross 16 alrededor del punto clave detectado. Así que oso con esta imagen. Esta imagen muestra una ventana de ocho cruces, pero sólo para fines ilustrativos, pero el método real sugiere tomar una ventana de 16 cruces alrededor del punto clave. Así que tomas tu ventana de 8 cross 8 o 16 cross 16. Y entonces usted divide esa ventana de 16 cruz 16 en cuadrantes de 4 cruz 4 cada uno. Así que para una ventana de 8 cruces 8 tendrá 4 tales cuadrantes, para una ventana de 16 cross 16, usted tendría 16 tales cuadrantes, donde cada cuarto era 4 cruz 4. Dentro de cada uno de esos cuadrantes, se construye un histograma de las orientaciones de los puntos dentro del parche y se alinea a lo largo de 8 papeleras. Así que en lugar de alinearse a lo largo de 36 papeleras, esta vez vas a hacer una alineación más estrecha y alinearla solo a lo largo de 8 papeleras. Esto es lo que propone SIFT. Así que usted tendría una vez más, sólo para recordar en una ventana de 8 cruz 8 que tendría cuatro de tales histogramas. Pero en una ventana de 16 cross 16, usted tendría 16 tales histogramas. Por lo que cada histograma tiene 8 orientaciones porque hay 8 papeleras allí. Y cada punto del barrio en ese parche 4x4 aporta a una de las papeleras en el histograma. (28:40) Similar a cómo encontramos la orientación. Aquí también, usamos heurística como la ponderación abajo de los gradientes por una función de caída de Gaussiano. Así que dentro de un barrio en particular, si hubo un punto más allá afuera que aporta un poco menor al histograma y un punto más cercano contribuye más al histograma. Sólo para aclarar en la imagen de la derecha, esta es sólo otra forma de representar un histograma, sólo hay que tener en cuenta que el mismo diagrama también podría haber sido dibujado algo así, con 8 papeleras como dije. (29:22) Así que la longitud aquí denota la fuerza de la bandeja en el histograma. Por lo tanto, en cada cuadrante 4x4, calcula el histograma de orientación de gradiente utilizando 8 intervalos de orientación. (29:30) Una vez que usted hace esto, usted va a tener totalmente 16 histogramas, cada uno con 8 valores. Este conjunto de 16x8, que es 128, se convierte en la versión en bruto de un SIFT descriptivo. Así es como vamos a describir ese punto clave, sólo por las orientaciones de gradiente del vecindario alrededor de ese punto clave. Para reducir los efectos de cualquier contraste o cambio local, este vector de 128 dimensiones se normaliza a la longitud de la unidad. Además, para asegurar que el descriptor puede ser robusto a otros tipos de variaciones de iluminación. Los valores también se recortan a 0.2. Y el vector resultante vuelve a ser renormalizado a la longitud de la unidad. Así que no se consideran valores muy pequeños. Lo clip a 0.2 y una vez más lo normaliza. Esto es, podrías considerar esto como un paso de eliminar los valores atípicos, algo muy bajo, solo queremos sujetarlo y luego renormalizarlo a la longitud original. Estas son heurísticas que el papel recomienda para conseguir un mejor rendimiento. (30:40) Veamos algunos ejemplos. Así que aquí se puede ver un par de imágenes turísticas de un monumento popular. Y puedes ver estos valores de fondo aquí, que son los puntos clave detectados por SIFT en esta imagen. Y si en realidad se compara incluso en la segunda imagen donde la rotación significativa, tal vez casi un cambio de noche de morningtel detectamos puntos clave similares en ambos estos ajustes. Por lo que es un detector de características extraordinariamente robusto. Maneja hasta cerca de 60 grados de cambios en la rotación. También puede manejar una buena cantidad de cambios en la iluminación. Y también es bastante rápido y eficiente puede funcionar en tiempo real. Hay un montón de código disponible para las personas dispuestas, con ganas de usar SIFT. Y SIFT, como ya he mencionado se ha utilizado en muchas aplicaciones de visión desde que se propuso inicialmente a principios de la década de 2000. (31:43) Aquí hay otro ejemplo desafiante de imágenes del Rover de Marte. Y lo ideal es que queramos ver que se trata de una aplicación práctica, donde, cuando el explorador de Marte toma imágenes de diferentes escenas ya que no hay un humano allí, sería bueno entender qué escenas realmente coinciden entre sí para que sepamos qué parte de Marte está pasando actualmente el rover. Pero entonces porque las escalas y los ángulos pueden ser diferentes en estas imágenes a juego se vuelve un poco duro. (32:23) Así que este ejemplo en particular, aunque estas dos imágenes parecen muy diferentes, una coincidencia de SIFT entre estas dos imágenes encuentra algunas características, que en realidad tienen descriptores muy similares en estas dos imágenes. Ahora podrías emparejar estas dos imágenes para decir dónde estaba el rover con respecto a una escena más amplia sobre el paisaje. (32:40) Aquí hay más ejemplos. Así que SIFT es bastante invariable a las transformaciones geométricas, tales como la traducción a escala y la rotación. (32:55) También es razonablemente invariable para las transformaciones fotométricas tales como el cambio en tonos de color porque en gran parte nos basamos en gradientes más que la intensidad del píxel en sí. (33:07) Una de las aplicaciones populares en las que se puede utilizar SIFT como empezamos la última conferencia con es la costura de la imagen, donde se encuentran los puntos clave del SIFT en ambas imágenes y luego los descriptores de coincidencia y averiguar qué punto clave ha pasado de la imagen uno ha ido a qué punto clave en la imagen dos. Y una vez que encuentres estos puntos clave a juego, puedes resolver para un sistema de ecuaciones para encontrar la transformación entre dos imágenes. Y una vez que encuentres la transformación entre dos imágenes, puedes unirlas para hacer un panorama. Esta parte de la misma, hablaremos de un poco más tarde cuando hablamos de emparejamiento de imágenes. (34:16) Así que aquí está un ejemplo. Detecta puntos de características en ambas imágenes. A continuación, se descubre utilizando los descriptores que se obtienen de SIFT. Recuerde que cada punto clave va a ser representado por un vector de 128 dimensiones en el caso de SIFT. Y trata de ver, emparejar el vector de 128 dimensiones aquí con el vector de 128 dimensiones aquí. Si los vectores coinciden, ya sabes, que ese punto clave coincide con ese punto clave en la segunda imagen. (32:40) Una vez que lo hace, puede alinear las imágenes y colocarlas una u otra. (32:23) Si quieres saber más sobre SIFT, hay muchos recursos en línea. David Lowe tiene un excelente papel, como ya he mencionado, por favor, lea el artículo. También hay tutoriales de python, la entrada de Wikipedia también es bastante informativa, así como una biblioteca de SIFT abierta. (34:43) Antes de concluir esta conferencia, también vamos a ver las variantes de SIFT que han sido desarrolladas. Al menos unas cuantas variantes que se han desarrollado desde que se desarrolló SIFT. Una de las mejoras más populares en SIFT se conoce como SURF, significa acelerar las características robustas. Y lo que hace SURF, toma el gasoducto de SIFT. Así que ahora podría escribir el conducto de SIFT como construir el espacio de escala, tomar la diferencia de Gaussianos, localizar el extremo de DoG, encontrar las localizaciones de sub-pixel de esos puntos clave. A continuación, filtre los bordes y las respuestas de contraste bajo, asigne orientaciones de puntos clave, cree descriptores de puntos clave y, a continuación, utilice esas características para lo que desee. Ese es el gasoducto, pero eso acabamos de discutir. Así que una de las mejoras con las que surge SURF en lo alto de SIFT es en lugar de utilizar la diferencia de Gaussianos y encontrar el extrema, utilizan lo que se conoce como filtros de caja. (36:26) Estos también son conocidos como filtros Harr, hablaremos de ellos en la siguiente diapositiva, pero éstos también se conocen como filtros de caja. Los filtros de caja son filtros como estos, donde se puede tener un filtro, donde una parte de ella es blanca, otra parte negra, y otra parte blanca. Usted podría hacer esto en varias combinaciones. Usted podría hacer un tipo de tablero de verificación de un efecto. Podrías hacerlo con, podrías aumentar el número de negros y blancos. Podrías tener a los negros dos veces, los blancos tres veces, o podrías voltear. Todas esas combinaciones se llaman típicamente filtros de caja y juntos forman lo que se conoce como wavelets Haar. No vamos a entrar en wavelets aquí. Pero se podría mirar a las wavelets como una generalización de una base de Fourier. Así que usamos los wavelets Haar, que son tus filtros Haar como estos para obtener orientaciones de puntos clave. Así que esa es una diferencia de SURF y que permite a SURF ser muy bueno en el manejo de las variaciones de desenfoque y rotación. (36:51) Así que SURF no es tan bueno como el SIFT en invariantes a la iluminación y los cambios de punto de vista aunque, pero maneja el desenfoque y las rotaciones bastante bien. Es importante destacar que SURF es casi tres veces más rápido que SIFT debido a estos cambios. Hay una razón particular para que el uso de filtros Haar puede hacer que los cálculos sean significativamente más rápidos. Voy a dejar eso a usted como una pregunta de la tarea, por favor, lea por qué el uso de wavelets Haar puede hacer cálculos más rápido? Una pista para usted es leer algo llamado imágenes integradas. También hay otra variante de SIFT llamada MOPS. MOPS representa un descriptor de parches orientados a múltiples escalas. En este caso, el parche que tiene alrededor del punto clave se gira de acuerdo a su orientación de gradiente dominante. Y luego computa tu histograma y el descriptivo. ¿Por qué es útil hacer girar el parche a su orientación de gradiente dominante, usted está asegurando que todos los puntos clave tienen una canónica?