tag:blogger.com,1999:blog-8933657846367904942024-03-13T02:16:35.758-07:00Visión ComputacionalRene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.comBlogger21125tag:blogger.com,1999:blog-893365784636790494.post-19551639037432762392013-05-22T19:37:00.000-07:002013-05-23T05:39:25.179-07:00Laboratorio - Puntos extras: Wavelets Esta entrada es para puntos extras, sobre Wavelets, y a continuación una explicación:<br />
<br />
<b>Herramientas:</b><br />
<br />
Primero que nada, instale el modulo:<br />
<ul>
<li>PyWavelets 0.2.2 (Enlace para descargar el modulo: <a href="https://pypi.python.org/pypi/PyWavelets/">Aquí</a>)</li>
<ul>
<li>Descargue: "PyWavelets-0.2.2.win32-py2.7"</li>
</ul>
<li>Se necesita tener instalado Numpy</li>
</ul>
<div>
Utilice imágenes con extensión JPG.</div>
<div>
<br /></div>
<div>
<b>Funcionamiento:</b></div>
<div>
<br /></div>
<div>
Lo que consiste en su funcionamiento, es que se mezcla la textura de una imagen con otra, y nos da como salida la imagen mezclada en una sola, es bastante interesante y algo llamativo, aquí un diagrama del funcionamiento:<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ69rDaEBpIXoQMipo7MfWjh8hq7W9cBl9kNVmKBZWJvb5CGbZ9hYZkWvGKVzCxbnFvnS0Ted2ooOAUKR0voHlyKZsHy7Xk_3JkIzEPb1r6t3tXNgDb179vioPmVMc0vvofB_7Zm7DdzqP/s1600/cap.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ69rDaEBpIXoQMipo7MfWjh8hq7W9cBl9kNVmKBZWJvb5CGbZ9hYZkWvGKVzCxbnFvnS0Ted2ooOAUKR0voHlyKZsHy7Xk_3JkIzEPb1r6t3tXNgDb179vioPmVMc0vvofB_7Zm7DdzqP/s320/cap.PNG" width="320" /></a></div>
</div>
<div>
<br />
<b>Resultados:</b></div>
<div>
<br />
Imágenes de pruebas 1:<br />
<div class="separator" style="clear: both; text-align: center;">
Imagen A<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIqiFRPN4EQfTjYKRzW8sL7ChfhRzuc-wUgn-SbvL83ghsA-Hd3y4dlyJitlDUfK_cgdHaS-ZeFm0tykwVDPcRXXvPbEkDr-ZAq80nJdfhp2d_Nj31om07S0sm1UyX2-11PfYXf1ZSrca/s1600/img1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIqiFRPN4EQfTjYKRzW8sL7ChfhRzuc-wUgn-SbvL83ghsA-Hd3y4dlyJitlDUfK_cgdHaS-ZeFm0tykwVDPcRXXvPbEkDr-ZAq80nJdfhp2d_Nj31om07S0sm1UyX2-11PfYXf1ZSrca/s320/img1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Imagen B<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJOHKR9qT9uMum2Taub3nbb7lm50Hy46Ope3BYylD4liXT2SGfKlmhT6HkIfllkt_M2igau0pyTkkfoEpZFcgOZp2P1kWgFgbqOneuL2fmXAxmRJx9xP7YfqNS7nZ721ajkvLqqkHD3xjZ/s1600/img11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJOHKR9qT9uMum2Taub3nbb7lm50Hy46Ope3BYylD4liXT2SGfKlmhT6HkIfllkt_M2igau0pyTkkfoEpZFcgOZp2P1kWgFgbqOneuL2fmXAxmRJx9xP7YfqNS7nZ721ajkvLqqkHD3xjZ/s320/img11.jpg" width="320" /></a></div>
<br />
Salida:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1WISvgL_Fvd7JVaiKte_UpbwI2XZP0EexxUcy5prxokhHlFDc4IYbBq_gZNadrIbyLJSAPl9_ucKTi2wSp5tMEtivzshAl2ZCvmPlaCITPHtWIrTal7Z6fMpUBd1MZrn72JbY1WJm80gh/s1600/salida1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1WISvgL_Fvd7JVaiKte_UpbwI2XZP0EexxUcy5prxokhHlFDc4IYbBq_gZNadrIbyLJSAPl9_ucKTi2wSp5tMEtivzshAl2ZCvmPlaCITPHtWIrTal7Z6fMpUBd1MZrn72JbY1WJm80gh/s320/salida1.jpg" width="320" /></a></div>
<br />
Imágenes de pruebas 2:<br />
<div class="separator" style="clear: both; text-align: center;">
Imagen A<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIqiFRPN4EQfTjYKRzW8sL7ChfhRzuc-wUgn-SbvL83ghsA-Hd3y4dlyJitlDUfK_cgdHaS-ZeFm0tykwVDPcRXXvPbEkDr-ZAq80nJdfhp2d_Nj31om07S0sm1UyX2-11PfYXf1ZSrca/s1600/img1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIqiFRPN4EQfTjYKRzW8sL7ChfhRzuc-wUgn-SbvL83ghsA-Hd3y4dlyJitlDUfK_cgdHaS-ZeFm0tykwVDPcRXXvPbEkDr-ZAq80nJdfhp2d_Nj31om07S0sm1UyX2-11PfYXf1ZSrca/s320/img1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Imagen B<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi073_1ZjggpBtC8NmdtcVhyxE-Kmo7FYKVThzc47O6YGHBPjeMfLawi05JBvrICqDQgWB4P4gNs627_g1HJO_sb3t1KF3Ats2ptkRGt0-p8QPReSYeDPgTFTwRIcrK9S-9S-OzjtOrsYO-/s1600/img22.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi073_1ZjggpBtC8NmdtcVhyxE-Kmo7FYKVThzc47O6YGHBPjeMfLawi05JBvrICqDQgWB4P4gNs627_g1HJO_sb3t1KF3Ats2ptkRGt0-p8QPReSYeDPgTFTwRIcrK9S-9S-OzjtOrsYO-/s320/img22.jpg" width="320" /></a></div>
<br />
Salida:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGUk7pUcs4N10VW4llyjBQlZDLdrjrQdj1u9le70mRXxMlzOWnwdZ3h_I-Qu0dyATHIMyeZM_mwdiDbwXnWVQqBTxRx7FVHT4i2aFi74bIHx0PVpH94m7DP5LJUX-Q3-6-JUL8QhUlXX6L/s1600/salida2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGUk7pUcs4N10VW4llyjBQlZDLdrjrQdj1u9le70mRXxMlzOWnwdZ3h_I-Qu0dyATHIMyeZM_mwdiDbwXnWVQqBTxRx7FVHT4i2aFi74bIHx0PVpH94m7DP5LJUX-Q3-6-JUL8QhUlXX6L/s320/salida2.jpg" width="320" /></a></div>
<br />
Imágenes de pruebas 3:<br />
<div class="separator" style="clear: both; text-align: center;">
Imagen A<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIqiFRPN4EQfTjYKRzW8sL7ChfhRzuc-wUgn-SbvL83ghsA-Hd3y4dlyJitlDUfK_cgdHaS-ZeFm0tykwVDPcRXXvPbEkDr-ZAq80nJdfhp2d_Nj31om07S0sm1UyX2-11PfYXf1ZSrca/s1600/img1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIqiFRPN4EQfTjYKRzW8sL7ChfhRzuc-wUgn-SbvL83ghsA-Hd3y4dlyJitlDUfK_cgdHaS-ZeFm0tykwVDPcRXXvPbEkDr-ZAq80nJdfhp2d_Nj31om07S0sm1UyX2-11PfYXf1ZSrca/s320/img1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Imagen B<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr7uAyww1fMWDgw-ZHYGvhUZ8by9ZjnZGcbjpSy0xT3YEdK7UzooPrfFtA0SWj-RyRikks0NhIyksu5GrDHIX75jRER32np61ks6hQZZ-ostfM29VQ8mlm7R_1eobsnHC4GlwaVjAPezLC/s1600/img33.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr7uAyww1fMWDgw-ZHYGvhUZ8by9ZjnZGcbjpSy0xT3YEdK7UzooPrfFtA0SWj-RyRikks0NhIyksu5GrDHIX75jRER32np61ks6hQZZ-ostfM29VQ8mlm7R_1eobsnHC4GlwaVjAPezLC/s320/img33.jpg" width="320" /></a></div>
<br />
Salida:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpVJDlEcjTDKjwWl1dWIto94QqWVd1s2WJH4RoKyqqeGg-zCSkNXJsQvs-IJenMOGOlxvxv6V3Lmoh35j6KV6pTEjQaktgkodfcKXJfCH3rlhErzsVXbMpsNMLLqq17Xr9Wtx_BvnmXpnz/s1600/salida3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpVJDlEcjTDKjwWl1dWIto94QqWVd1s2WJH4RoKyqqeGg-zCSkNXJsQvs-IJenMOGOlxvxv6V3Lmoh35j6KV6pTEjQaktgkodfcKXJfCH3rlhErzsVXbMpsNMLLqq17Xr9Wtx_BvnmXpnz/s320/salida3.jpg" width="320" /></a></div>
<br />
En las imágenes de salida, se muestran las dos imágenes en una sola combinación , cabe mencionar que utilice una sola imagen como "imagen A" que es un fondo.<br />
<br /></div>
<div>
<b>Código:</b></div>
<div>
<br /></div>
<div>
<script src="https://gist.github.com/calixtofc/5630495.js"></script>
</div>
<div>
<br /></div>
<div>
<b>Pruebas:</b><br />
<b><br /></b>
<u>Ejecucion:</u><br />
<b><br /></b>Para ejecutar el programa, se realiza de la siguiente manera:<br />
<br />
python "programa".py -b "imagen_A".jpg -t "imagen_B".jpg -w "filtro_wavelet" -l "nivel" -m "descomponer"<br />
<b><br /></b>
<u>Tiempos:</u></div>
<div>
<br /></div>
<div>
Realice unas pequeñas pruebas calculando el promedio de tiempo del funcionamiento del programa, los resultados fueron los siguientes:</div>
<div>
<br /></div>
<div>
Tiempo con imágenes 1:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-7AhmXwL4SvVi608TbxMZ8zzGsl5RmdgyEb9ipoQ2hepueh86hCBOVRtuHUMSu-RkTimN22fCjzeKYQTjpF2_0wWm1UssTGJT38poL1aC8vHdS_cqd17j24ECa2t_HVBMZZ1bgxUY1FhU/s1600/im1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-7AhmXwL4SvVi608TbxMZ8zzGsl5RmdgyEb9ipoQ2hepueh86hCBOVRtuHUMSu-RkTimN22fCjzeKYQTjpF2_0wWm1UssTGJT38poL1aC8vHdS_cqd17j24ECa2t_HVBMZZ1bgxUY1FhU/s400/im1.PNG" width="400" /></a></div>
<br /></div>
<div>
Tiempo con imágenes 2:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3-JaJIhFcj0a2wlFVbkG8loYVgc6a_tPQsqO6Pg6rcZYwPFeJSGx7HVW-WpzkNNXeIPAL3ISONsU1QMV4RKbnxUw6_8-fK1E4RBlzwNuQFZKFGswXuSeNCpZpQjUW4TovsMXcFLthymYT/s1600/im2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="37" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3-JaJIhFcj0a2wlFVbkG8loYVgc6a_tPQsqO6Pg6rcZYwPFeJSGx7HVW-WpzkNNXeIPAL3ISONsU1QMV4RKbnxUw6_8-fK1E4RBlzwNuQFZKFGswXuSeNCpZpQjUW4TovsMXcFLthymYT/s400/im2.PNG" width="400" /></a></div>
<br /></div>
<div>
Tiempo con imágenes 3:</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJAMDIa1cMA_YRDF0CuqkRCG8EMQ5UrDx8tW8jGGbPr6dzgcTnXkEdFQDt57VhXv3rwQGpaOW7Q3IkPx4uZVYCLT0ndkEUopLg25g-1IrOKdolGueV2uV9nT4LUhL-yE3yvtAbamiNZIcw/s1600/im3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="36" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJAMDIa1cMA_YRDF0CuqkRCG8EMQ5UrDx8tW8jGGbPr6dzgcTnXkEdFQDt57VhXv3rwQGpaOW7Q3IkPx4uZVYCLT0ndkEUopLg25g-1IrOKdolGueV2uV9nT4LUhL-yE3yvtAbamiNZIcw/s400/im3.PNG" width="400" /></a></div>
<u><br /></u>
<u>Promedio:</u><br />
<br />
2.241 segundos<br />
<br />
<b>Comentarios:</b><br />
<br />
El proceso fue rápido, solo tomaba algo de tiempo si se utilizaban imágenes con dimensiones superiores a 1000 x 700, así que tome imágenes con dimensiones menores.<br />
<br />
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">Git Hub - calixtofc: Vision Computacional RCM</a></li>
</ul>
<div>
<b>Referencias:</b></div>
<div>
<ul>
<li><a href="http://www.pybytes.com/pywavelets/">Pybytes - pywavelets</a></li>
<li><a href="https://github.com/nigma/pywt/tree/master/demo">Github - nigma: pywt</a></li>
</ul>
</div>
<br /></div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-19518899119547562902013-05-16T06:17:00.000-07:002013-05-16T07:19:05.553-07:00Laboratorio - Entrega 10: Detección de movimiento Para esta semana, se encargo detección de movimiento, y el cual explicare algunos detalles de este trabajo:<br />
<br />
Primero que nada, para esta tarea utilice las siguientes herramientas:<br />
<ul>
<li>Opencv: Habilitando camara web</li>
<li>PIL: Leer frames</li>
<li>Numpy: Realizo los cálculos de imágenes</li>
</ul>
<div>
Utilice la cámara web que viene instalada en mi laptop y use capturas con una resolución de 160 x 120.</div>
<div>
<br /></div>
<div>
<b>Detectando movimiento</b></div>
<div>
<br /></div>
<div>
Para la detección de movimiento detectaron los cambios de movimiento en 2 frames, se binariza, se calcula la diferencia de su posición entre esos 2 frames y se aplica Gasussian Blur para eliminar ruido.<br />
Se obtienen dos imágenes, un donde hubo movimiento y otra en donde no hubo, se busca el borde y después se crea una rejilla, que se modifica según sea la resolución del vídeo, que en este caso el vídeo es de 160 x 120 y mas o menos queda así:</div>
<div>
<br /></div>
<div>
Una rejilla de 10 x 8:</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFQu1D8nup88idyeevAog4uoQWAOu7bZa9UJhW5aYqC__YzO5MUPUNGXp2XKdmcWXkGXDhX1lSegzY2E-UhLOyDPPr0lb3Kr2oozJEbNkH825wB8tFce8mcESquSONYO_yUrsbundPvVBW/s1600/Captura1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFQu1D8nup88idyeevAog4uoQWAOu7bZa9UJhW5aYqC__YzO5MUPUNGXp2XKdmcWXkGXDhX1lSegzY2E-UhLOyDPPr0lb3Kr2oozJEbNkH825wB8tFce8mcESquSONYO_yUrsbundPvVBW/s1600/Captura1.PNG" /></a></div>
<br />
<br />
<div>
Y cuando se detecta el movimiento, se dibuja un triángulo de color, donde indica que hubo movimiento.</div>
<div>
</div>
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVXi41auQxLb0_LxaGcnJdXMOzlauf8Y1Ii-WRrjwcirnl4CIKY9cZbD87XgajHj4pSbbaYO1Da2PK3x68T88gQ4mBmAHkmyppFsu5sm4p74pPU0j2dog2WZII6YWrUSrAV6zYUgfIg5PP/s1600/Captura2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVXi41auQxLb0_LxaGcnJdXMOzlauf8Y1Ii-WRrjwcirnl4CIKY9cZbD87XgajHj4pSbbaYO1Da2PK3x68T88gQ4mBmAHkmyppFsu5sm4p74pPU0j2dog2WZII6YWrUSrAV6zYUgfIg5PP/s320/Captura2.PNG" width="320" /></a></div>
<br />
Y ahora ejemplos donde muestro vídeos y que se detecta movimiento:<br />
<br /></div>
<div>
<u>Ejemplos:</u></div>
<div>
<br /></div>
<div>
Vídeo 1:</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dzDuthK8EledRgsdKbuP-Iu88t4v9xrd2OyjX1ZrUwO7n1B-iNyc5yFLvJ-cQ4z8nUa0GV3dciMXjSpqQlahg' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br /></div>
<div>
Vídeo 2:</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dx6eFcw28Qpuv2_wWqsBEoxRyVxBJtx36_7q9qtnUSdjaBxlXMim55WKHllDsshCmm2m92J0B2mOkPbUiaeAw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br /></div>
<div>
Vídeo 3:</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxLv6sZ1RzdfUInDf6U0dy5qk72dv9gRL10Hjnce4nbumVuqAlBMLoa99_L_7i-J-mRcQsROWr1FVgLeKcL5g' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br /></div>
<div>
Vídeo 4:</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dwpwRcyB1YEZXfDtUWxwAIlOJub83CzrVfQmeSJZ03vF-br5QuzFJaWuLlsuEvqjfJSPhkdIPoaX0MGRuM5' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br />
<b>Comentarios:</b><br />
<br />
En esta parte seria bueno calibrar bien la detección, ya que con demasiado ruido se llega a detectar movimiento innecesario.<br />
<br />
<b>Dirección:</b><br />
<br />
Una pequeña captura donde se detecta el movimiento:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWENjdLUFO7vjoTmpdeJXeiiBhVTfjQUE8BEm81SFC5Eq5SnU4JguyoAOTmBiz6sq5vjy4t1ut_fTfjK289k-wfmHRIDCxXg1rLDvxtc0xeWJa3ZEuZ_wgCIAKBzmZkhHuOS5qNJHt20c0/s1600/rango.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWENjdLUFO7vjoTmpdeJXeiiBhVTfjQUE8BEm81SFC5Eq5SnU4JguyoAOTmBiz6sq5vjy4t1ut_fTfjK289k-wfmHRIDCxXg1rLDvxtc0xeWJa3ZEuZ_wgCIAKBzmZkhHuOS5qNJHt20c0/s1600/rango.PNG" /></a></div>
<br />
Se muestra si fue en derecha, izquierda, arriba o abajo.<br />
<br /></div>
<div>
Aquí el código de lo anterior:</div>
<div>
<br /></div>
<div>
<b>Código:</b></div>
<div>
<br /></div>
<div>
<script src="https://gist.github.com/calixtofc/5588493.js"></script>
</div>
<div>
<br /></div>
<div>
<b>Animaciones</b></div>
<div>
<br /></div>
<div>
En esta parte, detecte cada movimiento y lo pase a un frame que se dibuja como un cuadrado (Color negro), así generando casa frame en imágenes y guardándolas en una carpeta, si se sigue una secuencia de cada imagen, se mostrara los frames de manera continua.</div>
<div>
<br /></div>
<div>
Aquí un pequeño vídeo:</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dwnThW6BwTiijZc2Ss2P60yUJBjeYsvitGVnKO-U1X_J8_ugSKJKHFCONY8aR-WrQ8qRgGCFMxmMUgvqxpdFw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<div>
<br /></div>
<div>
Muy simple la verdad, utilice el teclado para ir viendo la imagen una por una.</div>
<div>
<br /></div>
<div>
Código de lo anterior: </div>
<div>
<br /></div>
<div>
<b>Código:</b></div>
<div>
<br /></div>
<div>
<script src="https://gist.github.com/calixtofc/5588495.js"></script>
</div>
<div>
<br /></div>
<div>
<b>Pruebas</b></div>
<div>
<br /></div>
<div>
En esta parte, realice pruebas con vídeos con resoluciones de 160 x 120 y de formato avi, eso realizaba el proceso mucho mas rápido.</div>
<div>
<br /></div>
<div>
<u>Errores</u></div>
<div>
<br /></div>
<div>
Utilizaba vídeos con resolución de 640 x 480, pero por alguna razón el programa dejaba de funcionar y la terminal de igual manera, dejaba de funcionar, entonces la solución fue grabar vídeos de 160 x 120 y así el programa funcionaba, no al 100% pero al menos se detectaba el movimiento y el programa funcionaba</div>
<div>
<br />
Tamaño de vídeos:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnN7FGE3M-7tsDn10zg7_DJfgnNEGg3ldnWCmTlBD6oOAqf4fk17dfGQZRtLzXLcuYRBYrZ68hEj371rsA_-18C7XobyuCQzGerPfhqareLzsOo3BwAXvjVplSjAzTPtOyl-hFWWvfXTyr/s1600/cam.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnN7FGE3M-7tsDn10zg7_DJfgnNEGg3ldnWCmTlBD6oOAqf4fk17dfGQZRtLzXLcuYRBYrZ68hEj371rsA_-18C7XobyuCQzGerPfhqareLzsOo3BwAXvjVplSjAzTPtOyl-hFWWvfXTyr/s1600/cam.PNG" /></a></div>
<br /></div>
<div>
<b>Conclusiones: </b></div>
<div>
<ul>
<li>Tomar en cuenta el formato a grabar</li>
<li>Captar vídeos con una resolución de 160 x 120</li>
</ul>
<div>
<div>
<br /></div>
<div>
Aquí el repositorio:</div>
<div>
<br /></div>
<div>
<b>Repositorio:</b></div>
<div>
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">Git Hub - calixtofc: Vision Computacional RCM</a></li>
</ul>
</div>
</div>
</div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-25950413776046447942013-05-14T05:02:00.000-07:002013-05-17T11:54:03.188-07:00Proyecto - Detección de Monedas<b>Propósito de Proyecto:</b><br />
<br />
Anteriormente, ya había mostrado mi idea, (<a href="http://rcm-vision.blogspot.mx/2013/04/clase-presentacion-de-proyecto.html">Enlace</a> de la presentación inicial del proyecto) donde mencione que para este proyecto el propósito fue detectar monedas, dibujando su contorno con un circulo y mencionando de que valor era cada moneda.<br />
<br />
<b>Justificación</b><br />
<br />
Este proyecto puede ser utilizado en diferentes ámbitos o utilizarlo de manera diferente en muchas aplicaciones.<br />
<ul>
<li>Puede ser utilizado por personas aficionadas en coleccionar monedas.</li>
<li>Podría ser utilizado por personas aficionadas a objetos.</li>
<li>Utilizado por bancos en sistemas de seguridad y detectar los valores de monedas y llevar una seguimiento de monedas y evitar procesos lentos de documentación. </li>
<li>Utilizar esta tipo de proyectos en fabricas para detectar objetos circulares y si existen imperfecciones.</li>
<li>Podría ser utilizado en sistemas de seguridad..</li>
<li>También podría ser utilizado en sistemas sobre detección de mentiras.</li>
<li>En procesos de inspección de calidad de figuras circulares, si su radio es exacto. </li>
</ul>
<div>
<br /></div>
<br />
<b>Diseño:</b><br />
<br />
El diagrama de cual es el funcionamiento es el siguiente:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMurS-JCON40w7rvHoRR7D3HDPVi1B7NKKiVOEXkV7sykypbR7k9I72M_jb6BkqzgJwKRJdYJMqVA9dTPnWXTqXlPQ5OBVJyrUsDYyUOk7GNmhYr2JG0BEyGkIJOp4LfApHMne4mpolAJj/s1600/diagrama.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMurS-JCON40w7rvHoRR7D3HDPVi1B7NKKiVOEXkV7sykypbR7k9I72M_jb6BkqzgJwKRJdYJMqVA9dTPnWXTqXlPQ5OBVJyrUsDYyUOk7GNmhYr2JG0BEyGkIJOp4LfApHMne4mpolAJj/s400/diagrama.PNG" width="400" /></a></div>
<br />
Lo muestra de una manera muy simple, mostrando de manera lineal su funcionamiento.<br />
<ol>
<li>Abrimos la imagen.</li>
<li>Pasamos a escala de grises.</li>
<li>Quitamos Ruido.</li>
<li>Aplicamos HoughCircles.</li>
<li>Dibujamos Circulo.</li>
<li>Detectamos Valor de Moneda.</li>
</ol>
<b><br /></b>
<b>Herramientas:</b><br />
<b><br /></b>
Enseguida una explicación de todo lo utilizado para este proyecto:<br />
<br />
<i>Sistema Operativo:</i><br />
<ul>
<li>Windows 7</li>
</ul>
<i>Web Cam:</i><br />
<ul>
<li>Toshiba Web Camera Application</li>
</ul>
<br />
<u>Librerías, lenguajes de programacion, etc.</u><br />
<br />
<i>Lenguaje de programación</i><br />
<ul>
<li>Python</li>
<ul>
<li>Version 2.7 (Descargar: <a href="http://www.python.org/download/">Python - download</a> )</li>
</ul>
</ul>
<i>Librerías</i><br />
<ul>
<li>Import CV - Utilizando modulo de Opencv</li>
<ul>
<li>Version: 2.4.5 (Descargar: <a href="http://opencv.org/downloads.html">Opencv - downloads</a>)</li>
</ul>
</ul>
<i>Otras Herramientas:</i><br />
<ul>
<li>Numpy - Numpy para python</li>
<ul>
<li>Version: 1.7.1 (Descargar: <a href="http://sourceforge.net/projects/numpy/files/NumPy/1.7.1/">Sourceforge - NumPy 1.7.1</a>)</li>
</ul>
</ul>
<br />
<b>Descripción de algoritmo:</b><br />
<br />
En esta ocasión utilice la transformada de "<b>Hough Circles</b>" que se encuentra disponible en Opencv, y que nos facilita mucho el trabajo y así evitar realizar muchas lineas de código, enseguida la explicación:<br />
<br />
Solo es una linea de código en python, y es la siguiente:<br />
<br />
<script src="https://gist.github.com/calixtofc/5573488.js"></script>
<br />
Una pequeña explicación de los argumentos:<br />
<ul>
<li><b>src_gray:</b> la imagen de entrada (escala de grises)</li>
<li><b>círcles:</b> Un vector que almacena conjuntos de 3 valores: "x, y, r" para cada círculo detectado.</li>
<li><b>cv.CV_HOUGH_GRADIENT:</b> Definimos el método para la deteccion.</li>
<li><b>dp = 1</b>: La relación inversa de la resolución.</li>
<li><b>min_dist = src_gray.rows / 8:</b> Distancia mínima entre ejes detectados.</li>
<li><b>param_1 = 200:</b> Límite superior para el detector de bordes.</li>
<li><b>param_2 = 100*:</b> Umbral de detección del centro.</li>
<li><b>min_radius = 0: </b>Radio mínimo a detectar. (Se puede poner cero por defecto)</li>
<li><b>max_radius = 0:</b> Radio máximo a ser detectado. (Se puede poner cero por defecto)</li>
</ul>
<br />
Si requieren de algún ejemplo en especifico, entren a este <a href="http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html">Enlace</a>, en la documentación de opencv viene con una explicación mas amplia.<br />
<br />
<b>Evaluación de desempeño:</b><br />
<br />
<u>Fotos de Prueba:</u><br />
<br />
En lo primero que realice pruebas y estuve modificando constantemente fue en detectar los círculos en una imagen, pero primero necesitaba imágenes con monedas reales.<br />
<br />
Para este caso realice tomas con un smartphone Samsung galaxy young y su cámara incluida, la cual tenia una resolución de 2 Megapixeles, realice tomas, y los resultados no fueron convenientes, no se detecto el circulo:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRuvT_08Xe0AhQPIvjESyVki7BO3ZqeqMws1r8eR0r9P9Jh5MiU9JAI5P3SNwd49ptKowG0oHaJm_uLFByICZxejXT2Hm544Zs1Z3By-FSiyFeq2pbOxPTfkIOGtVyI8q0GQjfVa_6nNs/s1600/Captura_error.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRuvT_08Xe0AhQPIvjESyVki7BO3ZqeqMws1r8eR0r9P9Jh5MiU9JAI5P3SNwd49ptKowG0oHaJm_uLFByICZxejXT2Hm544Zs1Z3By-FSiyFeq2pbOxPTfkIOGtVyI8q0GQjfVa_6nNs/s320/Captura_error.PNG" width="320" /></a></div>
Nos daba buen resultado imágenes con demasiado ruido.<br />
<br />
Después, realice tomas con un smartphone Nextel Motorola con una resolución de 3.2 Mexapixeles , y los resultados también fueron malos, tampoco se detectaban bien los círculos:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW1Tn9v8FIIBNyvUSlnEPHQpgx4ybqcgGeYCxyRpSxga0rnPypo2AaQ7ARz2FtaPt0K1RA0-t_aSQu6sNXSZW3jhuoPR14LZF4uqVVtuGTW_aDFtfBgWBu49JBNcZgQ5IlHBu_xRzOIyF2/s1600/Captura_error1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW1Tn9v8FIIBNyvUSlnEPHQpgx4ybqcgGeYCxyRpSxga0rnPypo2AaQ7ARz2FtaPt0K1RA0-t_aSQu6sNXSZW3jhuoPR14LZF4uqVVtuGTW_aDFtfBgWBu49JBNcZgQ5IlHBu_xRzOIyF2/s320/Captura_error1.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjWHGeSV2RKCSABe9ee3XpRKs4UFu13Fz09EjiCSS1_8G7MgWJS9037uTRZVS3awztvCFIdRQFgi8J0tKYuRUJPpm-4_MSRiEwTjH2za0A7Uh8zu_MsMQ6bHWY1XueH1Qdra7t6hIxL5q-/s1600/Captura_error2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjWHGeSV2RKCSABe9ee3XpRKs4UFu13Fz09EjiCSS1_8G7MgWJS9037uTRZVS3awztvCFIdRQFgi8J0tKYuRUJPpm-4_MSRiEwTjH2za0A7Uh8zu_MsMQ6bHWY1XueH1Qdra7t6hIxL5q-/s320/Captura_error2.PNG" width="320" /></a></div>
Y finalmente realice las tomas con una cámara semi-profesional con una resolución de 16 Megapixeles, aunque hubo errores como lo siguiente:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKfGE0BXnLly6x0BviigRgv-dNtk_1-pfoknV4l65oNo-BNMdj1oUeQQCKy3MKBxXjDml_7TWLDHmQPovInbLWBuvAJeX1cWWRlHXhrfAKb6j2dHzOrkksmJUzui5YxGLXDPoJv17cDuQM/s1600/Captura_error3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKfGE0BXnLly6x0BviigRgv-dNtk_1-pfoknV4l65oNo-BNMdj1oUeQQCKy3MKBxXjDml_7TWLDHmQPovInbLWBuvAJeX1cWWRlHXhrfAKb6j2dHzOrkksmJUzui5YxGLXDPoJv17cDuQM/s320/Captura_error3.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcdkYLpW9N2_RF95SoTCbmDQwAV9edSFCOjx1G-n9cvF75beG-fyFOr1loyXPaplb-Yx2NI365b5QDXVmTj6L_dkyYGwc5UhevJnMxH55nxe5uIljc1pEp_O2PDRQNQV-AfiE1JGHUchOe/s1600/Captura_error4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcdkYLpW9N2_RF95SoTCbmDQwAV9edSFCOjx1G-n9cvF75beG-fyFOr1loyXPaplb-Yx2NI365b5QDXVmTj6L_dkyYGwc5UhevJnMxH55nxe5uIljc1pEp_O2PDRQNQV-AfiE1JGHUchOe/s320/Captura_error4.PNG" width="320" /></a></div>
Detectaba algunos círculos, no tomaba muy bien su circunferencia, ya sea por mucho ruido o iluminación.<br />
<br />
Para arreglar los errores anteriores, realice lo siguiente:<br />
<ul>
<li>Tomar fotos de prueba a una altura de entre 18 a 20 cm.</li>
<li>Tener suficiente iluminación para realizar la toma.</li>
<li>Por ultimo, realizar las tomas de forma horizontal y con un angulo de 90°. (No soy camarografo profesional, así que trate de realizar las tomas lo mas derechas posibles.)</li>
</ul>
<br />
Aquí un diagrama de lo anterior:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkXD2YPJ-vWIfYW2S8y5VvX-7kXrTVwO1OnEnGtDtEyhrpvY-ygCpKDNJo0k_kvuJEgrMsaW0gOM9QGTKkAh0vdfdHxskjaNy7NfzG92pkYnJrUosXBHaPCyNCdeCsZQrNbJeUNKJ6SVW_/s1600/imagen.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkXD2YPJ-vWIfYW2S8y5VvX-7kXrTVwO1OnEnGtDtEyhrpvY-ygCpKDNJo0k_kvuJEgrMsaW0gOM9QGTKkAh0vdfdHxskjaNy7NfzG92pkYnJrUosXBHaPCyNCdeCsZQrNbJeUNKJ6SVW_/s400/imagen.PNG" width="400" /></a></div>
<br />
<u>Resolución de Imágenes:</u><br />
<br />
En esta parte, igual batalle mucho, realizaba pruebas con imágenes con un tamaño exagerado, con un promedio de dimensiones de 3000x4000, y para esto, las pruebas eran algo pesadas, y el programa no podía procesarla.<br />
<br />
Después utilice imágenes con dimensiones con un promedio de 1000x2000 y de igual manera, eran algo pesadas, aunque el programa daba un tiempo menor, por ejemplo el tiempo era el siguiente:<br />
<br />
<i>Imagen de 2048x1356:</i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiTJrqIGMaBhbas1BlpimcoCqcAa25wLKOIE3foy8qgGXQfjZrCl6pnUgjx1HqFgvHXgvzy3hxopRnch6oTX8gW_haTPWmw86LYtr6ZKpZdxpYDsyRQ2ygUSmK3-FKenNg0ieN2DvQeeqh/s1600/Captura_tama%C3%B1o1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="26" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiTJrqIGMaBhbas1BlpimcoCqcAa25wLKOIE3foy8qgGXQfjZrCl6pnUgjx1HqFgvHXgvzy3hxopRnch6oTX8gW_haTPWmw86LYtr6ZKpZdxpYDsyRQ2ygUSmK3-FKenNg0ieN2DvQeeqh/s320/Captura_tama%C3%B1o1.PNG" width="320" /></a></div>
<br />
<i>Imagen de 1218x1148:</i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3a2yImuEP_NTvkZMSTTnu5Ci3rb6INwEZaJocdZ2Xdirhxg5Gc8drtDhW2pc0X1XmaRk8VRJeuje89tBFSiOtF7DWWQze9AVNZ25T27b17hJpmTuOJE28wNEjbiO5ribLjMKZiFelV3pQ/s1600/Captura_tama%C3%B1o2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="27" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3a2yImuEP_NTvkZMSTTnu5Ci3rb6INwEZaJocdZ2Xdirhxg5Gc8drtDhW2pc0X1XmaRk8VRJeuje89tBFSiOtF7DWWQze9AVNZ25T27b17hJpmTuOJE28wNEjbiO5ribLjMKZiFelV3pQ/s320/Captura_tama%C3%B1o2.PNG" width="320" /></a></div>
<br />
Finalmente utilice imágenes con dimensiones menores de 640x480 y que por lógica, el proceso seria demasiado rápido, el tiempo casi mínimo y no habría problemas con la detección del circulo<br />
<br />
<i>Imagen de 640x480:</i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhffJduwKFWshEZjmTmfMDctADqMzxoEvhQSw_tIAhgJNGwLcqqh7KDRAK2HshixTftwk3BndOWoKcLeGrRlRekwNpwcHeS9ZH-CeL3FPh_crbe-xjU7lWK3oZi2V4Ug2Zce_Ckw1KNxXE4/s1600/camara_tama%25C3%25B1o3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="33" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhffJduwKFWshEZjmTmfMDctADqMzxoEvhQSw_tIAhgJNGwLcqqh7KDRAK2HshixTftwk3BndOWoKcLeGrRlRekwNpwcHeS9ZH-CeL3FPh_crbe-xjU7lWK3oZi2V4Ug2Zce_Ckw1KNxXE4/s320/camara_tama%25C3%25B1o3.PNG" width="320" /></a></div>
<br />
Para resolver este problema, solo era utilizar imágenes con poca dimensión.<br />
<u><br /></u>
<u>Gráficas:</u><br />
<br />
Ahora, gráficas con los tiempos obtenidos de las imágenes utilizadas y mostrare mi conclusión sobre porque utilizar imágenes con poca resolución <br />
<br />
<b>Nota*:</b> Utilice 6 imágenes diferentes para cada tamaño (6 imágenes de 2048x1356, 6 imágenes de 1218x1148, 6 imágenes de 640x480), y ejecute el programa con cada imagen, para así mostrar el tiempo y realizar gráficas para mostrar las diferencias entre imágenes con diferentes resoluciones.<br />
<br />
<i>Con imágenes de 2048 x 1356:</i><br />
<br />
Total de 6 imágenes y los tiempos en que tardaron en procesar:<br />
<ol>
<li>0.2029998</li>
<li>0.1588887</li>
<li>0.1400001</li>
<li>0.1711117</li>
<li>0.1560001</li>
<li>0.1400009</li>
</ol>
Gráfica:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEZMGF-ZUaGd2spENuQupGAmI0aFaGkQBBoovvpnis3zFomMIDT6zKNFAa0FVeVNX3JNXpOGdxqhACnxge9wONyvIm2Xq17KLphrN1FWP_sddUaxX4NKteP9N4zmEGNGxL-WdlVhcru-sk/s1600/captura_imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEZMGF-ZUaGd2spENuQupGAmI0aFaGkQBBoovvpnis3zFomMIDT6zKNFAa0FVeVNX3JNXpOGdxqhACnxge9wONyvIm2Xq17KLphrN1FWP_sddUaxX4NKteP9N4zmEGNGxL-WdlVhcru-sk/s400/captura_imagen1.png" width="400" /></a></div>
............................................................................................................................................<br />
<br />
<i>Con imágenes de 1218 x 1148:</i><br />
<br />
Total de 6 imágenes y los tiempos que tardaron en procesar:<br />
<ol>
<li>0.1960005</li>
<li>0.2120000</li>
<li>0.1949991</li>
<li>0.2070000</li>
<li>0.1800000</li>
<li>0.1810003</li>
</ol>
Gráfica:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyxj-dsi8GWVyRelI5mmmRESEKoosXAnKs-g6ewWzy13Ix9F7Lb2_bMbd9ksKM-r3fDX4CD7SuyrMF_dXfckAUnzmhlV_eO7YRiAPjPWxRU-QqeGtflMqM_X35b8lOTVKsTgArcRahe7vz/s1600/captura_imagen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyxj-dsi8GWVyRelI5mmmRESEKoosXAnKs-g6ewWzy13Ix9F7Lb2_bMbd9ksKM-r3fDX4CD7SuyrMF_dXfckAUnzmhlV_eO7YRiAPjPWxRU-QqeGtflMqM_X35b8lOTVKsTgArcRahe7vz/s400/captura_imagen2.png" width="400" /></a></div>
............................................................................................................................................<br />
<br />
<i>Con imágenes de 640 x 480:</i><br />
<br />
Total de 6 imágenes y los tiempos que tardaron en procesar:<br />
<ol>
<li>0.0279998</li>
<li>0.0200000</li>
<li>0.0188888</li>
<li>0.0100096</li>
<li>0.0280000</li>
<li>0.0200077</li>
</ol>
Gráfica:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaCS4B54MbNC3M_kzY_NZkAIq9ntjxmQS_1pIHlfpNDP0DziLF6QJpcwo4qTf-i1eHnAoParVrYPdcLzfnFCZWlHLycehzI1nYTayq_EeBd3jrwPZ98ULsks0Z9d5fHqoLL7uaq-Mikgj0/s1600/captura_imagen3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaCS4B54MbNC3M_kzY_NZkAIq9ntjxmQS_1pIHlfpNDP0DziLF6QJpcwo4qTf-i1eHnAoParVrYPdcLzfnFCZWlHLycehzI1nYTayq_EeBd3jrwPZ98ULsks0Z9d5fHqoLL7uaq-Mikgj0/s400/captura_imagen3.png" width="400" /></a></div>
............................................................................................................................................<br />
<i>Comparación de tiempos en una sola gráfica:</i><br />
<br />
Gráfica:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQdc2tIjdTSGb_E5l-PLNvgsOnHxkgXSJeUMgnP9tbyi2ks8AFxXF7iqJv5_YXmRyUuDiEoLX-1qOER5irj6GyQ_Ry2UQEtFSlf3Ei8QhNr8TAZZ3mKUsIleK5DvXunfqW-MAfq_rxyh56/s1600/captura_imagen_todas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQdc2tIjdTSGb_E5l-PLNvgsOnHxkgXSJeUMgnP9tbyi2ks8AFxXF7iqJv5_YXmRyUuDiEoLX-1qOER5irj6GyQ_Ry2UQEtFSlf3Ei8QhNr8TAZZ3mKUsIleK5DvXunfqW-MAfq_rxyh56/s400/captura_imagen_todas.png" width="400" /></a></div>
............................................................................................................................................<br />
<br />
En cada gráfica se muestra el tiempo que se tardaba en procesar las diferentes imágenes, tomando en cuenta las 6 imágenes que se utilizaron a prueba.<br />
<br />
Por lógica se muestra que el tiempo es menor en imágenes de menor resolución.<br />
<br />
<i>Conclusión de Gráficas: </i><br />
<ul>
<li>En la ultima gráfica, muestra de una manera muy clara que las imágenes con una resolución de 640x480 nos da un tiempo de procesamiento muy bajo.</li>
</ul>
<br />
<u>Tiempo de procesamiento promedio:</u><br />
<br />
Imagen de tamaño 2048x1356:<br />
<ul>
<li>0.85 segundos</li>
</ul>
<br />
Imagen de tamaño 1218x1148:<br />
<ul>
<li>1.02 segundos</li>
</ul>
<br />
Imagen de tamaño 640x480:<br />
<ul>
<li>0.10 segundos</li>
</ul>
<u><br /></u><u>Conclusión:</u><br />
<br />
Para evitar procesos largos en la ejecución del programa, es mejor utilizar imágenes con dimensiones de 640x480, ya que por lógica, procesar imágenes con poca resolución, el tiempo de procesamiento es menor<br />
<br />
<b>Trabajo a futuro:</b><br />
<br />
Los siguientes puntos los tomare en cuenta a futuro:<br />
<ul>
<li>En esto proyecto seria bueno utilizar vídeo para detectar las monedas, me quede a medio trabajo pero seria buena idea seguir trabajando sobre el código y mejorarlo.</li>
<li>Otra idea que propuse fue la de crear una aplicación móvil, tomando en cuenta que ya existen aplicaciones como por ejemplo detectar caras, seria buena idea trabajar en algún proyecto parecido pero detectando monedas.</li>
<li>Otra idea a futuro podría ser el de realizar alguna aplicación sobre sistemas de detección de mentiras, detectando los ojos y sus movimientos y aplicar realidad aumentada.</li>
<li>Una idea a futura seria la de crear una aplicación donde se puedan detectar imperfecciones de algún objeto circular o verificar si en realidad es un circulo o no.</li>
</ul>
<br />
Pueden descargar el proyecto completo, con el código completo y las imágenes que utilice de prueba, pueden bajarlo de mi repositorio, el cual es el siguiente:<br />
<br />
<u>Repositorio:</u><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional---Proyecto">GitHub: Vision Computacional - Proyecto</a></li>
</ul>
<br />
Y la presentación final es la siguiente:<br />
<br />
<b>Presentación Final:</b><br />
<br />
<iframe allowfullscreen="true" frameborder="0" height="389" mozallowfullscreen="true" src="https://docs.google.com/presentation/d/1Nlsb0fLLy1F7zI2vUTvniB-rD5ThQG1eLY2M2E2G0Xg/embed?start=false&loop=false&delayms=3000" webkitallowfullscreen="true" width="480"></iframe>
<br />
<br />
Y esto es todo, si tienen alguna duda, háganme saber con algún comentario, gracias.<br />
<br />
<b>Referencias: </b><br />
<ol>
<li><a href="http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html">Docs opencv org - Hough Circle</a> - Ultima modificación: 5/Abril/2013</li>
<li><a href="http://stackoverflow.com/questions/5368449/python-and-opencv-how-do-i-detect-all-filledcircles-round-objects-in-an-image">Stackoverflow - python and opencv how do i detect all filledcircles round objects in an image</a> - Ultima modificación: 14/Mayo/2013</li>
<li><a href="http://sathyakumar-spark.blogspot.mx/2011/10/circle-detection-using-opencv.html">Sathyakumar spark blogspot - circle detection using opencv</a> - Ultima modificación: 8/Octubre/2011</li>
<li><a href="http://blog.weisu.org/2007/12/opencv-detect-circles-with-hough.html">Blog weisu - opencv detect circles with hough</a> - Ultima modificación 21/Diciembre/2007</li>
</ol>
<ul>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com3tag:blogger.com,1999:blog-893365784636790494.post-91630811551925804382013-05-09T08:14:00.000-07:002013-05-09T08:22:31.953-07:00Laboratorio - Actividad 9: Detección de esquinas Para esta semana, se encargo la detección de esquinas.<br />
<br />
El programa debe hacer lo siguiente:<br />
<ul>
<li><b>Parte básica:</b> detectar las esquinas con el método de diferencia de filtro mediano.</li>
<li><b>Parte avanzada: </b>Teniendo las esquinas, podemos sacar un “wire-frame” al borde.</li>
<ul>
<li>Uniendo las esquinas con segmentos de líneas rectas (u otras curvas estimadas desde las partes de borde cubiertas).</li>
<li>Recorriendo en un orden que sigue el borde (que habría que detectarse aparte con las técnicas ya conocidas) para saber en qué orden conectar las esquinas. </li>
</ul>
</ul>
<br />
Me base en tareas de mis compañeros, para realizar la tarea, ya que batalle algo en el código<br />
<br />
<b>Imágenes:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSEWXKagCJjRqSVQSx0B_aZrEu2WfCAMyRy2_ETrwFNNwVLDDPyA8nXmS-Rg0lLLDFImM3TlaGWFrXtjnG8wSAiB9d9MxhXF6O-1VATgRWHM-8mUFvpF2qCK4ynnxhMINV-ifnVDvjjoxa/s1600/im.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSEWXKagCJjRqSVQSx0B_aZrEu2WfCAMyRy2_ETrwFNNwVLDDPyA8nXmS-Rg0lLLDFImM3TlaGWFrXtjnG8wSAiB9d9MxhXF6O-1VATgRWHM-8mUFvpF2qCK4ynnxhMINV-ifnVDvjjoxa/s1600/im.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF6A8K_a9Cyf9jTVGHF9duQo_GS5v-OkKuitbaptKQABbAOw8Rwxba2fiYGmEHwNQvU194gT729PO0cpz7gL6RdtoRHhg-nQWZeHNjeHMZa1SuVvBg2k0tyYSNQpgnpA7qeOWuo1GcNpnl/s1600/im1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF6A8K_a9Cyf9jTVGHF9duQo_GS5v-OkKuitbaptKQABbAOw8Rwxba2fiYGmEHwNQvU194gT729PO0cpz7gL6RdtoRHhg-nQWZeHNjeHMZa1SuVvBg2k0tyYSNQpgnpA7qeOWuo1GcNpnl/s1600/im1.png" /></a></div>
<br />
Y el código es el siguiente:<br />
<br />
<b>Código:</b><br />
<br />
<script src="https://gist.github.com/calixtofc/5529788.js"></script><b>
Procedimiento:</b><br />
<br />
Aplicando filtro mediano:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM8Irbedo9WyhL7AoC5Jeypi0mjWiIshBHcjoiOBXNxnMhkWU_ITTwSTUmUphK5jyzKDgb4fLtylQ851thKq5Bxhdy7V17Ee508_u2n9c59sA3jf0rzcAt0hcuaA0vivd3RBZ_c8Czlaq9/s1600/mediano.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM8Irbedo9WyhL7AoC5Jeypi0mjWiIshBHcjoiOBXNxnMhkWU_ITTwSTUmUphK5jyzKDgb4fLtylQ851thKq5Bxhdy7V17Ee508_u2n9c59sA3jf0rzcAt0hcuaA0vivd3RBZ_c8Czlaq9/s320/mediano.png" width="320" /></a></div>
<br />
Ahora, detectamos las esquinas:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSYSP4I0pv5AcAlQWbJJEsRFXxQmiad6e4i_gmnyDLFabvdMDbwm6-LaaJiJMHQvXJz3VaRiibheOCRTt0-2BTHWaV42gnZxrJgtqHgDKTbeFVjCdl2XrFjj7XUM57uerGUD0v83bluIo7/s1600/esquina.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSYSP4I0pv5AcAlQWbJJEsRFXxQmiad6e4i_gmnyDLFabvdMDbwm6-LaaJiJMHQvXJz3VaRiibheOCRTt0-2BTHWaV42gnZxrJgtqHgDKTbeFVjCdl2XrFjj7XUM57uerGUD0v83bluIo7/s200/esquina.png" width="200" /></a></div>
<br />
Y los resultados son los siguientes:<br />
<br />
<b>Resultados:</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs0gOzjBjagh7oAp4bVpzxNcLXFZ7Vb_xg_9X5cK-MpJOMiGVaKnMroFjGA0G2urvg3fFOHGrwdFPUwRDA5uV0Fk8RdRm71oSghOlSMPwC9SuOkpPer4gw4A9UR7KqyJX0cB66ALeLc7sI/s1600/salida4_imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs0gOzjBjagh7oAp4bVpzxNcLXFZ7Vb_xg_9X5cK-MpJOMiGVaKnMroFjGA0G2urvg3fFOHGrwdFPUwRDA5uV0Fk8RdRm71oSghOlSMPwC9SuOkpPer4gw4A9UR7KqyJX0cB66ALeLc7sI/s1600/salida4_imagen1.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM_Qi4AW_fsmYQd37x6cukPDAu2ZGnglSM-31D-yC2z7c74-aXC43-2S1reBpPE4l5TIFJW8kSlbChjRBiwsPpjd03f2DXvw0b62ubaICp-2VKwrz3yr4dXgLFB3T2yZaBIOBoKQbpunom/s1600/salida4_imagen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM_Qi4AW_fsmYQd37x6cukPDAu2ZGnglSM-31D-yC2z7c74-aXC43-2S1reBpPE4l5TIFJW8kSlbChjRBiwsPpjd03f2DXvw0b62ubaICp-2VKwrz3yr4dXgLFB3T2yZaBIOBoKQbpunom/s1600/salida4_imagen2.png" /></a></div>
<br />
Ya detectadas las esquinas, se trazan las lineas de esquina a esquina con su respectivo color.<br />
<br />
<span style="font-family: inherit;"><b style="background-color: white; line-height: 18px;">Repositorio:</b><br style="background-color: white; line-height: 18px;" /><span style="background-color: white; line-height: 18px;"></span></span><br />
<ul style="background-color: white; line-height: 18px; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="margin: 0px 0px 0.25em; padding: 0px;"><span style="color: black; font-family: inherit;"><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></span></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-50576136176248849472013-05-02T08:15:00.000-07:002013-05-02T09:37:27.871-07:00Laboratorio - Actividad 8: Polígonos Para esta semana, se encargo el detectar polígonos, darle una etiquetas y un color aleatorio.<br />
<br />
El programa debe de tener lo siguiente:<br />
<ul>
<li>Identificar, clasificar y etiquetar cada polígono.</li>
<li>Calcular su tamaño y rellenarlo con color aleatorio.</li>
</ul>
<br />
<b>Imágenes</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIuSgvvYHqC7plkbSAOgsr_gIRFmUcbjtAK9-r_ILrCsBvUB3iPqbdv6gdj_W0ajWalMMDYluEPK8xq50AJks4zGdtult8QkTF7DQ9Yt3QKXyjkM1ZcABYe2ggK3KssSWBdNGgHCEb2Wkc/s1600/po.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIuSgvvYHqC7plkbSAOgsr_gIRFmUcbjtAK9-r_ILrCsBvUB3iPqbdv6gdj_W0ajWalMMDYluEPK8xq50AJks4zGdtult8QkTF7DQ9Yt3QKXyjkM1ZcABYe2ggK3KssSWBdNGgHCEb2Wkc/s1600/po.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoue4BU0lvJfHF9WK97QZK5xXSOLh2sNxOlfGTI8DT-8w9BdK21oWtqN8rHyOJN-LapcwhyTSfZjOaakks91nQwTh3MWK4SUpYhMjMwf8Xl9B-Kp3s-aj2dNSBeDRelPwlSqMVsd_ZFsxS/s1600/po1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoue4BU0lvJfHF9WK97QZK5xXSOLh2sNxOlfGTI8DT-8w9BdK21oWtqN8rHyOJN-LapcwhyTSfZjOaakks91nQwTh3MWK4SUpYhMjMwf8Xl9B-Kp3s-aj2dNSBeDRelPwlSqMVsd_ZFsxS/s1600/po1.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPbFUzfB8T2jraVpQHV6x6m8e2jbKwGjhj6fVifMPTTxQhoopWScMtUmIAcMGn6D-9m245sWQW9h-BxThN_Zx-9mk4bk_f1gi5o5-w4jqcTiFPf0rfFsc-QY32qUak2L5uZuPOiMM2R4k1/s1600/po2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPbFUzfB8T2jraVpQHV6x6m8e2jbKwGjhj6fVifMPTTxQhoopWScMtUmIAcMGn6D-9m245sWQW9h-BxThN_Zx-9mk4bk_f1gi5o5-w4jqcTiFPf0rfFsc-QY32qUak2L5uZuPOiMM2R4k1/s1600/po2.png" /></a></div>
<br />
Y el código es el siguiente:<br />
<br />
<b>Código:</b><br />
<script src="https://gist.github.com/calixtofc/5495972.js"></script>
Y los resultados son los siguientes:<br />
<br />
<b>Resultados:</b><br />
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Para esta entrada utilice como base la tarea sobre detección de lineas.</div>
<br />
Como primera prueba fue la de detectar las lineas de las figuras, la cual nos dio como resultado la siguiente imagen:<br />
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Imagen 1: </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkgw-Zs5Z2KFxDAKcS4x3y15yqoCQ40xdhAHeGhimJeVVEBP_VrXi-s4Do3gvzqHfyF65b8QemZIzY7ETwrUtWIWtdMO0hx1JOJfFu5Ht6ZxfTQIFhVdsObQLeDu5RX6xmgNYB0tduni4L/s1600/imagen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkgw-Zs5Z2KFxDAKcS4x3y15yqoCQ40xdhAHeGhimJeVVEBP_VrXi-s4Do3gvzqHfyF65b8QemZIzY7ETwrUtWIWtdMO0hx1JOJfFu5Ht6ZxfTQIFhVdsObQLeDu5RX6xmgNYB0tduni4L/s200/imagen.png" width="200" /></a></div>
<div class="separator" style="clear: both;">
Imagen 2: </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjE6rDNtBgDlGoRArfNu-jshs43a80L9kmRZORuanac-MOe5xHOMI7e343C1GBBIKDE-GFaL5Es1T-rytIFQu1lpq1jCgdCKzzvAS37Itz2o0M2Ydu6U0aYXj_IWJz9xfc4qrG_lLv7ORw/s1600/imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjE6rDNtBgDlGoRArfNu-jshs43a80L9kmRZORuanac-MOe5xHOMI7e343C1GBBIKDE-GFaL5Es1T-rytIFQu1lpq1jCgdCKzzvAS37Itz2o0M2Ydu6U0aYXj_IWJz9xfc4qrG_lLv7ORw/s200/imagen1.png" width="200" /></a></div>
<div class="separator" style="clear: both;">
Imagen 3:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwBwqYzil0LcCxMCq6Uzeuh5ZTCkwMJ4eg5CegYY1H3cZDJBeiLcJAtFLeogP-ute_OAZbnfURK0cC0J1OaLlTeo3_ndEqZ5FcUXqDLx1KBjrHkzSjRSiTv9jYkhsTJJ0NkUvHItBLhvqH/s1600/imagen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwBwqYzil0LcCxMCq6Uzeuh5ZTCkwMJ4eg5CegYY1H3cZDJBeiLcJAtFLeogP-ute_OAZbnfURK0cC0J1OaLlTeo3_ndEqZ5FcUXqDLx1KBjrHkzSjRSiTv9jYkhsTJJ0NkUvHItBLhvqH/s200/imagen2.png" width="200" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Y ... ya ...</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Me falto agregar mas filtros, pero no alcance a terminar. </div>
<div class="separator" style="clear: both;">
<br /></div>
:(<br />
<br />
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-58192962965518785162013-04-25T06:23:00.000-07:002013-04-25T06:35:01.111-07:00Laboratorio - Actividad 7: Agujeros<br />
Para esta semana, en la entrada de clase, se trabajo en detectar agujeros, rellenarlos y darles un ID.<br />
<br />
Ahora, en la entrada se mostrara el pre-proceso que se realizo para detectar los agujeros<br />
<br />
En este entrada y en la anterior, mostrare el mismo código ya que no realice cambios y ahora solo mostrare los histogramas que tuve como resultado utilizando Gnuplot.<br />
<br />
<b>Imágenes:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_UQCbt9FNuKxdEyyoxTzzdOskIuI94G62MobGbbeZnfdad-jFlzgLF-1o6wNOzvA8UU_KUOGSpSGMp_rkSfLqBMiN8bhM3wmQKICw1ZxiAlUYQMKt4sx9nSIZsalzOQprRu_XdPF8nLyn/s1600/a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_UQCbt9FNuKxdEyyoxTzzdOskIuI94G62MobGbbeZnfdad-jFlzgLF-1o6wNOzvA8UU_KUOGSpSGMp_rkSfLqBMiN8bhM3wmQKICw1ZxiAlUYQMKt4sx9nSIZsalzOQprRu_XdPF8nLyn/s320/a.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZYSo8SedkZ1gsOd4P9KiRRxY1e4LZH328mGbA84YPNhFN4G8njIJDKp10wgBXL4gWTv78Je7NeZmdOEXBvTDrvh6Ss2FFMoYnzD5U2B5QM_Bx0Id4PYXz6KvLt430Ma29fYgrz9t6LZFZ/s1600/a1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZYSo8SedkZ1gsOd4P9KiRRxY1e4LZH328mGbA84YPNhFN4G8njIJDKp10wgBXL4gWTv78Je7NeZmdOEXBvTDrvh6Ss2FFMoYnzD5U2B5QM_Bx0Id4PYXz6KvLt430Ma29fYgrz9t6LZFZ/s320/a1.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Q6T70XjoXk0mZ2riGIBaBfZTMedLKu5bqavUENURDuRNaVLuhkHSIFH8Sp5jjg2FDQjK4ZzLZ_1-YO_5zp6-KCxy5XwPQlJTTm7Iwa4mM85WzcnI9CNCw7KhUVj9UrQUFaDQj6kgTlIg/s1600/a2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="117" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Q6T70XjoXk0mZ2riGIBaBfZTMedLKu5bqavUENURDuRNaVLuhkHSIFH8Sp5jjg2FDQjK4ZzLZ_1-YO_5zp6-KCxy5XwPQlJTTm7Iwa4mM85WzcnI9CNCw7KhUVj9UrQUFaDQj6kgTlIg/s320/a2.png" width="320" /></a></div>
<br />
Y el código es el siguiente:<br />
<br />
<b>Código:</b><br />
<br />
<script src="https://gist.github.com/calixtofc/5438725.js"></script>
<br />
Y los resultados son los siguiente:<br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Resultados:</b></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><i>Imagen 1:</i></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPSuh8vRsC5N8qXVZZOnsrYldCYQbCq_kmB7EwjRa3W1WwuRLAJMEOx79JBdJ9OjzyGs9IT0SWRdnTIx5x9h8ITYDW9QpUQkxFTpXlRdEOKLvTbgB7646ZbgjqjHWa-uJ9TGEpF3tgpvem/s1600/salida1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPSuh8vRsC5N8qXVZZOnsrYldCYQbCq_kmB7EwjRa3W1WwuRLAJMEOx79JBdJ9OjzyGs9IT0SWRdnTIx5x9h8ITYDW9QpUQkxFTpXlRdEOKLvTbgB7646ZbgjqjHWa-uJ9TGEpF3tgpvem/s320/salida1.png" width="320" /></a></div>
<span style="font-family: inherit;"><i><br /></i></span>
<span style="font-family: inherit;"><i>Histograma Vertical y Horizontal de imagen 1:</i></span><br />
<div class="separator" style="clear: both; text-align: center;">
Vertical<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAhzgPGtEjPS18hv9bKXCpVx6bsmVKJzLgLLlINwpumCuv1UJur6jPqRqtjeTJkMa6srIEYI5CTbgQ-iWlcM5Ip_Gll4nBd9IX4gTf0M65AR4FMUt7Ehl1V_Qkjytd2caSt5zikRyA5ymK/s1600/ver_imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAhzgPGtEjPS18hv9bKXCpVx6bsmVKJzLgLLlINwpumCuv1UJur6jPqRqtjeTJkMa6srIEYI5CTbgQ-iWlcM5Ip_Gll4nBd9IX4gTf0M65AR4FMUt7Ehl1V_Qkjytd2caSt5zikRyA5ymK/s320/ver_imagen1.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Horizontal<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwUZGZ7Arx_uWYugXdMivwtRLPq5536JOvAQN3QH4dVwJDjKIJ9OGlZ8FpaSjrNE19beRYRS7OOLj8_rsy4nVe4kO0mMa8m0qXm2WLcxseXNjTaz9cIRD8orgjV1DE9byrxjB47BErMFQw/s1600/hor_imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwUZGZ7Arx_uWYugXdMivwtRLPq5536JOvAQN3QH4dVwJDjKIJ9OGlZ8FpaSjrNE19beRYRS7OOLj8_rsy4nVe4kO0mMa8m0qXm2WLcxseXNjTaz9cIRD8orgjV1DE9byrxjB47BErMFQw/s320/hor_imagen1.png" width="320" /></a></div>
<br />
<br />
<span style="font-family: inherit;"><i>Imagen 2:</i></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRY5RkbFpjn0I0KBChcrhbu49NM-FW46Hq0n41IjYT1ixzRQYy58qp0SIa994j_XTIzaJW0GgPJ_b1b4zYnfZY3Dwr6fFYUd_hlLYPdX-uOULxKk28cHp9KPuOfG1Y5LEbFUHuRLhq-AGS/s1600/salida2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRY5RkbFpjn0I0KBChcrhbu49NM-FW46Hq0n41IjYT1ixzRQYy58qp0SIa994j_XTIzaJW0GgPJ_b1b4zYnfZY3Dwr6fFYUd_hlLYPdX-uOULxKk28cHp9KPuOfG1Y5LEbFUHuRLhq-AGS/s320/salida2.png" width="320" /></a></div>
<span style="font-family: inherit;"><i><br /></i></span>
<span style="font-family: inherit;"><i>Histograma Vertical y Horizontal de imagen 2:</i></span><br />
<div class="separator" style="clear: both; text-align: center;">
Vertical<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8L7LzCjL6-ykaEau1Lart79BXfMiuGST09y8Ctif5l3k1EBcOEW-ZV4KtSfsRRkKOtdWm2PH2FSghHP3jalLzGKlw0RS5ijfsbLLvC21omYFWC4iH1rkvWw35egD5XpF35LVFp62t8yee/s1600/ver_imagen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8L7LzCjL6-ykaEau1Lart79BXfMiuGST09y8Ctif5l3k1EBcOEW-ZV4KtSfsRRkKOtdWm2PH2FSghHP3jalLzGKlw0RS5ijfsbLLvC21omYFWC4iH1rkvWw35egD5XpF35LVFp62t8yee/s320/ver_imagen2.png" width="320" /></a></div>
<span style="font-family: inherit;"><i><br /></i></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
Horizontal<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Bfw0vLnZQ7L4Y9xPqB4T7zfRqyfFZbsbAae_joojvnoQKR7-khuPXWHHjAoho_q2Veaps6eykeS0fD5wd8PGX1t1-wKf0cre1O8fkHD3jl8TFC-zk291IGknW2j8WLZREPjl_QYce1PH/s1600/hor_imagen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Bfw0vLnZQ7L4Y9xPqB4T7zfRqyfFZbsbAae_joojvnoQKR7-khuPXWHHjAoho_q2Veaps6eykeS0fD5wd8PGX1t1-wKf0cre1O8fkHD3jl8TFC-zk291IGknW2j8WLZREPjl_QYce1PH/s320/hor_imagen2.png" width="320" /></a></div>
<span style="font-family: inherit;"><i><br /></i></span>
<br />
<span style="font-family: inherit;"><i>Imagen 3:</i></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXxWLtlkTZlbqTYlnvQeYLIQvInVG495b_DYRm51AUr8ds6mI_O93n3387MrCbP8D0cKvqnX2iHBLseBG4z_HfsX6daEefbxCPbKDtxYClkG2ROL42g3pnLpCS6cX8Q2y-b5APWlhqKXll/s1600/salida3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="117" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXxWLtlkTZlbqTYlnvQeYLIQvInVG495b_DYRm51AUr8ds6mI_O93n3387MrCbP8D0cKvqnX2iHBLseBG4z_HfsX6daEefbxCPbKDtxYClkG2ROL42g3pnLpCS6cX8Q2y-b5APWlhqKXll/s320/salida3.png" width="320" /></a></div>
<span style="font-family: inherit;"><i><br /></i></span>
<span style="font-family: inherit;"><i>Histograma Vertical y Horizontal de imagen 3:</i></span><br />
<div class="separator" style="clear: both; text-align: center;">
Vertical<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdlW5kBDpQ7Jouoktha8LE2N_pk1PuKbtMd8kHw7O3AWpajBlyePU6RlyDYPj8f_MoCqJkcb_tm-TIvW075A8qbkdPtolhx0NrJP2IPKMKwAg-HIc7_oYbFY0rwXYkbqDJodD7PAq_zFjl/s1600/ver_imagen3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdlW5kBDpQ7Jouoktha8LE2N_pk1PuKbtMd8kHw7O3AWpajBlyePU6RlyDYPj8f_MoCqJkcb_tm-TIvW075A8qbkdPtolhx0NrJP2IPKMKwAg-HIc7_oYbFY0rwXYkbqDJodD7PAq_zFjl/s320/ver_imagen3.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
Horizontal<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv0gb44upgw295Ube66TNTQ87OgB9U_oXaPUoNius8nIL-OY-UC-xCWk6ZA_vuhuMqg1xfMh-pfmO5viF8_ENaLk8jCXu4j3Y_w8yqK_q5GXvWtSJ6QIJ3yaVSkCpQ5LN0RBsjGg-Tw86S/s1600/hor_imagen3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv0gb44upgw295Ube66TNTQ87OgB9U_oXaPUoNius8nIL-OY-UC-xCWk6ZA_vuhuMqg1xfMh-pfmO5viF8_ENaLk8jCXu4j3Y_w8yqK_q5GXvWtSJ6QIJ3yaVSkCpQ5LN0RBsjGg-Tw86S/s320/hor_imagen3.png" width="320" /></a></div>
<br />
En los histogramas se muestra donde existe mas intensidad de pixeles.<br />
<br />
<b>Repositorio<span style="font-family: inherit;">:</span></b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM" style="font-family: inherit;">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-66083136489514880152013-04-23T05:05:00.000-07:002013-04-23T05:45:26.240-07:00Clase - Deteccion de AgujerosEn esta entrada, se mostrara como se detectaron agujeros.<br />
<br />
Instrucciones de lo que realizara el programa:<br />
<div>
<ul>
<li>Los agujeros detectadas se marcan con un borde morado oscuro y un relleno de morado claro.</li>
<ul>
<li>Un tono ligeramente diferente en cada agujero.</li>
</ul>
<li>Se marca el centro de cada agujero con un punto.</li>
<li>Al centro de cada agujero se agrega una etiqueta del ID.</li>
<li>El programa imprime un listado que indica para cada ID el tamaño del agujero (como porcentajes del tamaño de la imagen).</li>
</ul>
</div>
<div>
<br /></div>
<div>
Imágenes </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg35LYQ3EWXjcPHU1IiSBaAbk72pYo3M6uQ8Ij5HeeFo9zswJrS2AYisza2K2mPlpwTPisLUrwl6BuVWPUkv1EM7jc-nj9WfdKAply5eFGxEnVZfJPEjE5BZGhWlLDZDiyxRAnMxgjMP10O/s1600/a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg35LYQ3EWXjcPHU1IiSBaAbk72pYo3M6uQ8Ij5HeeFo9zswJrS2AYisza2K2mPlpwTPisLUrwl6BuVWPUkv1EM7jc-nj9WfdKAply5eFGxEnVZfJPEjE5BZGhWlLDZDiyxRAnMxgjMP10O/s320/a.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl_3N3kqEK3uJcvN7XzuuxOJcRhJHktJ3GnRfCJPH3KSJMm96Po3EW-VmNX2TFZWfH5wgbdDTXzjv4Fn5GBRXl9eFbuuZhX1_wuZlZcpraCF6k9PKU7uUD0gr2uF7-3eoPm-QEm40n3PkN/s1600/a1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl_3N3kqEK3uJcvN7XzuuxOJcRhJHktJ3GnRfCJPH3KSJMm96Po3EW-VmNX2TFZWfH5wgbdDTXzjv4Fn5GBRXl9eFbuuZhX1_wuZlZcpraCF6k9PKU7uUD0gr2uF7-3eoPm-QEm40n3PkN/s320/a1.png" width="320" /></a></div>
<div>
<br /></div>
<div>
Ahora, el código para la detección de agujeros:</div>
<div>
<br /></div>
<div>
<b>Código</b></div>
<div>
<script src="https://gist.github.com/calixtofc/5438718.js"></script>
</div>
<div>
<br /></div>
<div>
<div>
Y estos son los resultados:</div>
<div>
<br /></div>
<div>
<b>Resultados:</b></div>
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZNxOdHkyYWDQ1ymGKyLiePkGk-zx5k_nOKyMfOrX4Siq-Q-oExwSpfg2WheginUi3lqlJfsHGTe9ETdXbhGiHAEw_cPcoGlmAxPB5FfPB7uLVYmZ-yYUT_BWZuUBhyphenhyphenmq8Vboa-JavBS1H/s1600/salida.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZNxOdHkyYWDQ1ymGKyLiePkGk-zx5k_nOKyMfOrX4Siq-Q-oExwSpfg2WheginUi3lqlJfsHGTe9ETdXbhGiHAEw_cPcoGlmAxPB5FfPB7uLVYmZ-yYUT_BWZuUBhyphenhyphenmq8Vboa-JavBS1H/s320/salida.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju3T-o9HDP3EiL-mIcDu3CcD5ELmSkj8uN1jsbY5Sp58ehJBcpDGmq70hg-Pv6HkK34TJHU3OIdHHLXHMwoLsppT-FEmjht3CiFO_2_nbOWFyn63z7OjtA0ItC4OnFWjFdS3jCQZtNEPSy/s1600/salida2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju3T-o9HDP3EiL-mIcDu3CcD5ELmSkj8uN1jsbY5Sp58ehJBcpDGmq70hg-Pv6HkK34TJHU3OIdHHLXHMwoLsppT-FEmjht3CiFO_2_nbOWFyn63z7OjtA0ItC4OnFWjFdS3jCQZtNEPSy/s320/salida2.png" width="320" /></a></div>
<br />
Emm ... tuve problemas con detectar los agujeros y rellenarlos, asi que esto ultimo fueron mis resultados.</div>
<div>
<br /></div>
<div>
<div>
<b>Repositorio</b></div>
<div>
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
</div>
</div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-91339422180550336162013-04-18T09:10:00.000-07:002013-04-19T12:29:19.316-07:00Laboratorio - Actividad 6: Relleno de ElipsesPara esta semana, ya realizamos la actividad que consistía en detectar Elipses.<br />
<div>
<br /></div>
<div>
Ahora, esos elipses que se detectaron, se rellenan.<br />
<br />
Tome como referencia el código de mis compañeros, ya que la tarea anterior tuve problemas exactamente en detectar elipses y quedo incompleto, también falto en agregar los ID, y esta ocasión si quedo</div>
<div>
<br /></div>
<div>
Instrucciones:</div>
<div>
<div>
<ul>
<li>Identifica cada elipse/círculo individual</li>
<li>Rellenar de un color aleatorio</li>
<li>Sigue marcando su centro & ID con etiqueta</li>
<li>Imprime un listado de los áreas de los círculos/elipses</li>
</ul>
<div>
<br /></div>
</div>
</div>
<div>
Imágenes:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIaf8gbQ7ApN4uPeMPTskK5axvXcXZhDRqBDn2-l3C3EdGnQ6OweJL_XTrFJosUvuvPj4OqZp0lHQbw1lmOxzXyyPBQKtHLrZNYQvoapTP3G1sQvSOiAeuL0qwl9piNdoU_gfj1BjRdKXR/s1600/elip1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIaf8gbQ7ApN4uPeMPTskK5axvXcXZhDRqBDn2-l3C3EdGnQ6OweJL_XTrFJosUvuvPj4OqZp0lHQbw1lmOxzXyyPBQKtHLrZNYQvoapTP3G1sQvSOiAeuL0qwl9piNdoU_gfj1BjRdKXR/s1600/elip1.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPU7wlhZLERefrsB7Bg7n7xuKJ4Nj1JrMhCGxhO2jKlMn2ogECVT0MDIYRWs3PczYoc7ZMlDN2mQWyoANoHAxpKXoJdh01vFDGMcP2CDqPFA3qyW8CWmNicFeEzDtx0_hMyfWBw5D0Nwo4/s1600/elip2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPU7wlhZLERefrsB7Bg7n7xuKJ4Nj1JrMhCGxhO2jKlMn2ogECVT0MDIYRWs3PczYoc7ZMlDN2mQWyoANoHAxpKXoJdh01vFDGMcP2CDqPFA3qyW8CWmNicFeEzDtx0_hMyfWBw5D0Nwo4/s1600/elip2.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
Y el código es el siguiente:</div>
<div>
<br /></div>
<div>
<b>Código</b></div>
<div>
<script src="https://gist.github.com/calixtofc/5330556.js"></script>
<br />
<div>
<br />
<div>
Y los resultados son los siguiente:</div>
<div>
<br /></div>
<div>
<b>Resultados</b></div>
<div>
<br /></div>
<div>
Ahora, los resultados de Terminal:</div>
<div>
<br /></div>
<div>
Primera Imagen</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUik3HR9vsrB6k19whuFL9RVLeNQJgiDE0CTsT-B4gzH9e-nFN5L1ryYB8ajhuzLkx07fV1wCFu6AjzNHJvJD9lq8aamFY3gMplknJWdueTtmbabcADVnoFn6AYww8oi8I_bARNUUmoOG9/s1600/salida1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUik3HR9vsrB6k19whuFL9RVLeNQJgiDE0CTsT-B4gzH9e-nFN5L1ryYB8ajhuzLkx07fV1wCFu6AjzNHJvJD9lq8aamFY3gMplknJWdueTtmbabcADVnoFn6AYww8oi8I_bARNUUmoOG9/s1600/salida1.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj64-GMZVxfwGFdkRSKq3jeMaZ5ljqA0mcl9SAfAmK1Vo52laCPB_pKIbJeGrYbXBkE95wg70v40G1S9OwFBusYPOZG7ugdZsT9pGtny1ZZkCoRY2228jEbT5SMHr0ZSeibcYJc9chFFFxN/s1600/Captura1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj64-GMZVxfwGFdkRSKq3jeMaZ5ljqA0mcl9SAfAmK1Vo52laCPB_pKIbJeGrYbXBkE95wg70v40G1S9OwFBusYPOZG7ugdZsT9pGtny1ZZkCoRY2228jEbT5SMHr0ZSeibcYJc9chFFFxN/s400/Captura1.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
<div>
Segunda Imagen</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL5uATSxTxT0TSzrK_OT5ZPldkn0izDlrgj1TOEd7LCptV17-Tui-LDOtuxfTWTHqiDurLRN9RTJtxLaHmszGueU55rJr7T8CeS_juLQi-bDUKt3Z7ffWg0BFuDlX7gEoNEhoi3ciPTMfr/s1600/salida2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL5uATSxTxT0TSzrK_OT5ZPldkn0izDlrgj1TOEd7LCptV17-Tui-LDOtuxfTWTHqiDurLRN9RTJtxLaHmszGueU55rJr7T8CeS_juLQi-bDUKt3Z7ffWg0BFuDlX7gEoNEhoi3ciPTMfr/s1600/salida2.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvD6fDmqTdqM2nXaqwy3nyzBizIsYVtW9am-IbmUQpMIfAVF2fvLRPclfGy26D4lQ6fUO72zC4tMajbOAJkSiooxGB2bDSdeJpgd_cGHWjAvK1SjNdu6IewtdYjm-UNUWps5B_Bei60OIc/s1600/Captura2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="80" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvD6fDmqTdqM2nXaqwy3nyzBizIsYVtW9am-IbmUQpMIfAVF2fvLRPclfGy26D4lQ6fUO72zC4tMajbOAJkSiooxGB2bDSdeJpgd_cGHWjAvK1SjNdu6IewtdYjm-UNUWps5B_Bei60OIc/s320/Captura2.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
<div>
Se muestran los elipses encontrados y sus áreas<br />
<br />
Tuve problema en que no se detectaran figuras que no fueran elipses.</div>
<div>
<br /></div>
<div>
<b>Repositorio</b></div>
<div>
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
</div>
</div>
</div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-6645483362389793352013-04-16T05:06:00.000-07:002013-04-16T05:06:19.534-07:00Clase - Detección Elipses En esta entrada, se mostrara como se detectaron elipses.<br />
<br />
Instrucciones de lo que realizara el programa<br />
<ul>
<li>Los elipses detectadas se marcan con tonos diferentes</li>
<li>Se marca el centro de cada elipse</li>
<li>Al centro de cada elipse se agrega una etiqueta del ID del elipse.</li>
<li>El programa imprime un listado que indica para cada ID los semi-diámetros perpendiculares del elipse</li>
</ul>
<div>
<br /></div>
<div>
<b>Imágenes:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc5MoIf9dNokUW8wIA-shosiPcxbjYzzVSorAE8WD5Qnpx6CSWVHAyyANbmevNv2bDutOF07kRyfkI7xXL8KJ6j0kUydxhrPPH41MTHAajv6Ft4yyqC6Sz2e645xkSs-P_HbEQsoLYFMn-/s1600/elipses.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc5MoIf9dNokUW8wIA-shosiPcxbjYzzVSorAE8WD5Qnpx6CSWVHAyyANbmevNv2bDutOF07kRyfkI7xXL8KJ6j0kUydxhrPPH41MTHAajv6Ft4yyqC6Sz2e645xkSs-P_HbEQsoLYFMn-/s320/elipses.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO2SpV_TNkjV09vpwMcNWKcfSXJPTFLqbkzcPF8CrFXOvFkeGk35L6XZZQiQ4PLW1nSAnlDQwyh6eqlhN2xY9tcis8T9JxnaT3K_3DJsfx-3JUihehnyo85xyY64qS2TFMABoYkFh_HUKv/s1600/elipses1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO2SpV_TNkjV09vpwMcNWKcfSXJPTFLqbkzcPF8CrFXOvFkeGk35L6XZZQiQ4PLW1nSAnlDQwyh6eqlhN2xY9tcis8T9JxnaT3K_3DJsfx-3JUihehnyo85xyY64qS2TFMABoYkFh_HUKv/s1600/elipses1.png" /></a></div>
<div>
<br /></div>
<div>
Ahora, el código para detectar elipses.</div>
<div>
<br /></div>
<div>
<b>Código:</b></div>
<div>
<script src="https://gist.github.com/calixtofc/5330515.js"></script>
</div>
<div>
Y estos son los resultados:</div>
<div>
<br /></div>
<div>
<b>Resultados:</b></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi6CiuQ98xz5OmK7DLH6eqDPcES5RtH1kK0HLCjUS_-q_cAdzNGs2bswUNeieZp3HJU777pDJiha4okQ-ddxVX8kQDbAJEZqK8LCb0e7lvT9cQ8AAvbmfF8r-yevdMWZjV2AF3IUQmG7cy/s1600/salida.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi6CiuQ98xz5OmK7DLH6eqDPcES5RtH1kK0HLCjUS_-q_cAdzNGs2bswUNeieZp3HJU777pDJiha4okQ-ddxVX8kQDbAJEZqK8LCb0e7lvT9cQ8AAvbmfF8r-yevdMWZjV2AF3IUQmG7cy/s320/salida.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuS1KoSi3Kf3KNZACVakaIg8-ZLMBSAjJNUKAaIp1kkh-WeTRlMFOJ1VbeMBvq-VJf03wa6DAPRfbeABN_oVAD6ZvA-9dtaZhJSEnfsz4OrfDWRBWm0KX4wHFAXVNF39wUR3xKm55NJtES/s1600/salida1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuS1KoSi3Kf3KNZACVakaIg8-ZLMBSAjJNUKAaIp1kkh-WeTRlMFOJ1VbeMBvq-VJf03wa6DAPRfbeABN_oVAD6ZvA-9dtaZhJSEnfsz4OrfDWRBWm0KX4wHFAXVNF39wUR3xKm55NJtES/s1600/salida1.png" /></a></div>
<br />
No tuve la oportunidad de terminar el código para detectar los centros e incluir la ID.<br />
<br /></div>
<div>
<b>Repositorio</b></div>
<div>
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
</div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-35561725744029688512013-04-09T05:15:00.000-07:002013-04-09T05:15:35.032-07:00Clase - Presentación de ProyectoPresentación:<br />
<div>
<br /></div>
<div>
<iframe allowfullscreen="true" frameborder="0" height="450" mozallowfullscreen="true" src="https://docs.google.com/presentation/d/1ScvqrcFZPob9zvz5h9Gh5YSSgNkUSId7ubW6QseQzUQ/embed?start=false&loop=false&delayms=3000" webkitallowfullscreen="true" width="660"></iframe>
</div>
<div>
<br />
Y esto es todo, gracias.</div>
<div>
<br /></div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com0tag:blogger.com,1999:blog-893365784636790494.post-547119883585649292013-03-07T09:23:00.002-08:002013-04-16T05:08:36.260-07:00Laboratorio - Actividad 5: Detección de Circulos<span style="background-color: white; color: #222222; font-family: inherit; line-height: 18px;">Para esta semana, en la entrada de clase, se trabajo para detectar círculos</span><br />
<div style="background-color: white;">
<span style="font-family: inherit;"><br /><span style="color: #222222;"><span style="line-height: 18px;">Ahora, la diferencia es, detectar diferentes radios, para diferentes </span></span><span style="background-color: transparent; line-height: 18px;"><span style="color: #222222;">círculos</span></span></span></div>
<div style="background-color: white; color: #222222; line-height: 18px;">
<span style="font-family: inherit;"><br /></span></div>
<div style="background-color: white;">
<span style="color: #222222; font-family: inherit;"><span style="line-height: 18px;">En la entrada anterior, mostré las instrucciones del funcionamiento.</span></span></div>
<div style="background-color: white;">
<span style="color: #222222; font-family: inherit;"><span style="line-height: 18px;"><br /></span></span></div>
<div style="background-color: white;">
<span style="color: #222222; font-family: inherit;"><span style="line-height: 18px;">Nota: otra vez tuve problemas con el código anterior, me base en un código de mis compañeros y de la Dra. Elisa</span></span></div>
<div style="background-color: white;">
<br /></div>
<div style="background-color: white;">
<b><span style="background-color: transparent;">Imágenes</span>:</b><br />
<b><br /></b></div>
<div style="background-color: white;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWTjacLS3iP71UOu9Tn1ZbzUfufyt8G4RGdTsyXXvd49lNuOHDSDyvP4MPR2SYIHHxA3TdHoG2yu5HyoyZqdDSuN5vNUua95Hd9rhZVsIkfvGtDyU3U_9G_yXrXC6x-QKf337ay32yh_Vr/s1600/imagen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWTjacLS3iP71UOu9Tn1ZbzUfufyt8G4RGdTsyXXvd49lNuOHDSDyvP4MPR2SYIHHxA3TdHoG2yu5HyoyZqdDSuN5vNUua95Hd9rhZVsIkfvGtDyU3U_9G_yXrXC6x-QKf337ay32yh_Vr/s1600/imagen.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5HfC6vNOTmGqTEkI92UhKG9lHVv49TIo-JyeqVCqdZx3cKtoa9CtlqZ0bVzofMBKwB_DtbFrm7Sv2aGeg21Bwp93TB3ZVBSnmEQ3a05uxOdmUedslf2Lv8ueVo9JmoUmfP0sQilXbefIg/s1600/imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5HfC6vNOTmGqTEkI92UhKG9lHVv49TIo-JyeqVCqdZx3cKtoa9CtlqZ0bVzofMBKwB_DtbFrm7Sv2aGeg21Bwp93TB3ZVBSnmEQ3a05uxOdmUedslf2Lv8ueVo9JmoUmfP0sQilXbefIg/s1600/imagen1.png" /></a></div>
<br /></div>
<div style="background-color: white;">
Para detecta círculos, es el siguiente código:</div>
<div style="background-color: white;">
<br /></div>
<div style="background-color: white;">
<b><span style="background-color: transparent;">Código</span>:</b></div>
<script src="https://gist.github.com/calixtofc/5109799.js"></script>
<br />
<div>
<br /></div>
<div>
<div>
Los Resultados son los siguientes:</div>
<div>
<br /></div>
<div>
<b>Resultados:</b></div>
</div>
<div style="background-color: white;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhCHwTr5mW5w-EzWe3TI9uMQgWyMneWT5VNqwOyZgPxLJ8VY7ryUueyruYf_MweXjEvIacc0g6NgxrxvWvDWz626MCfPJaVMgfY-Ru5QLgqEKgXp3p_s7hqWGinu6-fRZsjQLAvaJHcLaa/s1600/bordes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhCHwTr5mW5w-EzWe3TI9uMQgWyMneWT5VNqwOyZgPxLJ8VY7ryUueyruYf_MweXjEvIacc0g6NgxrxvWvDWz626MCfPJaVMgfY-Ru5QLgqEKgXp3p_s7hqWGinu6-fRZsjQLAvaJHcLaa/s1600/bordes.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9yTlcDb8qPBe1n4VqyVwJMiqYrl7MLH1GnRPEKJ3vvwcqkO7x2zPOn9saGRIu8VlNmxycYYYMYDexQEblGaJoWtgrdcTBFcDBrcmfKFgpqm6CcLIAvSmu6WDa7nAn5bB5r0tEZCGhvZg3/s1600/bordes1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9yTlcDb8qPBe1n4VqyVwJMiqYrl7MLH1GnRPEKJ3vvwcqkO7x2zPOn9saGRIu8VlNmxycYYYMYDexQEblGaJoWtgrdcTBFcDBrcmfKFgpqm6CcLIAvSmu6WDa7nAn5bB5r0tEZCGhvZg3/s1600/bordes1.png" /></a></div>
Resultado final:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-B8R-LvWYgjZHkAd122eFRhJoOZVqeFb2we5MUDw7YM_WeM4ZLokIku1m7msAirumhyhge8761aP0XPkxMXr_qid-WIYivwfiigvV6_7sUNXgJ47UXVIy0Ix4m8QT8h4sbKaW-2Of442o/s1600/deteccion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-B8R-LvWYgjZHkAd122eFRhJoOZVqeFb2we5MUDw7YM_WeM4ZLokIku1m7msAirumhyhge8761aP0XPkxMXr_qid-WIYivwfiigvV6_7sUNXgJ47UXVIy0Ix4m8QT8h4sbKaW-2Of442o/s1600/deteccion.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-fCACkjif9ZTWTQFkRIrjEkJ32CRGh5S45fIL4S2gnvlQFj7KMaX-uxMZ-qHpEFS6nSPrlbTIseGAnX7iH7wa187e2PHNvQj5DoDTD3pdN41ccu4zQp2Web3RWjq3wwSFAh8gO_XgD27_/s1600/deteccion1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-fCACkjif9ZTWTQFkRIrjEkJ32CRGh5S45fIL4S2gnvlQFj7KMaX-uxMZ-qHpEFS6nSPrlbTIseGAnX7iH7wa187e2PHNvQj5DoDTD3pdN41ccu4zQp2Web3RWjq3wwSFAh8gO_XgD27_/s1600/deteccion1.png" /></a></div>
<div style="background-color: white;">
<br /></div>
<div style="background-color: white;">
Las imágenes las hice en paint, y fue de tamaño pequeño, porque el programa tardaba mucho para generar las salidas.</div>
<div style="background-color: white;">
<br /></div>
<div style="background-color: white;">
Hubo mejor resultado en la segunda imagen.</div>
<div style="background-color: white;">
<br /></div>
<div style="background-color: white;">
Ahora, los resultados de Terminal</div>
<div style="background-color: white;">
<br />
<b>Terminal:</b><br />
<br />
Primera imagen:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-UmUayapqLpLkT_Pg3hHNVh1pXB-uAC0bCPwNJLLUMV3DV1VK3oGf71Qo-ZGCBz4uVKPk_j-rvdOgfYayYohFJ42Irx3_bCPzK_SShyphenhyphenSAtTS42WHi_AxsTYROMAUGRi3RvojXNRezuPHf/s1600/Captura.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-UmUayapqLpLkT_Pg3hHNVh1pXB-uAC0bCPwNJLLUMV3DV1VK3oGf71Qo-ZGCBz4uVKPk_j-rvdOgfYayYohFJ42Irx3_bCPzK_SShyphenhyphenSAtTS42WHi_AxsTYROMAUGRi3RvojXNRezuPHf/s320/Captura.PNG" width="320" /></a></div>
<br />
Segunda imagen:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_hV5YN_V9XoM-DHz4jyX7Hr6eoUyetIHWKlFudVdtVQKAiUaPkAxK6UjPuJlKGXdopXfitYdw8S3a4Flepwo-BJE6PRF8VJJCPqvAPvbdnXheyl3YnsuK_8Bi_0xGQFrfy_LJBJxENNB4/s1600/Captura1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_hV5YN_V9XoM-DHz4jyX7Hr6eoUyetIHWKlFudVdtVQKAiUaPkAxK6UjPuJlKGXdopXfitYdw8S3a4Flepwo-BJE6PRF8VJJCPqvAPvbdnXheyl3YnsuK_8Bi_0xGQFrfy_LJBJxENNB4/s320/Captura1.PNG" width="320" /></a></div>
Muestra el ID de la figura encontrada, que es el circulo, y su radio y diametro.<br />
<br /></div>
<div style="background-color: white;">
<div>
<b>Repositorio:</b></div>
<div>
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
</div>
</div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-38841489870629158382013-03-04T22:47:00.000-08:002013-03-05T05:06:17.908-08:00Clase - Detección de Círculos Para esta semana, se trabajo para detectar círculos en una imagen.<br />
<br />
El programa hace lo siguiente:<br />
<br />
<u>Instrucciones:</u><br />
<ul>
<li>Los círculos detectados se marcan con tonos fuertes.</li>
<li>Un tono diferente en cada círculo.</li>
<li>Se marca el centro de cada círculo con un punto .</li>
<li>Al centro de cada círculo se agrega una etiqueta.</li>
<li>El programa imprime un listado que indica para cada ID el diámetro del círculo.</li>
</ul>
<br />
<b>Imágenes:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG3duILkC7gdLgpL-zoqiYEpqEEWAsu8TaPTzW6pbBqqbtBOtZ5Lt_YOwiWfXAgtdhPshjpus1RD3QMvmlQUbhkIVSYJrGDQ4mg02sqsQ01BVHTC3HaNOcJ5kqxZxlwtSKd_8WObO7es8b/s1600/circulo3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG3duILkC7gdLgpL-zoqiYEpqEEWAsu8TaPTzW6pbBqqbtBOtZ5Lt_YOwiWfXAgtdhPshjpus1RD3QMvmlQUbhkIVSYJrGDQ4mg02sqsQ01BVHTC3HaNOcJ5kqxZxlwtSKd_8WObO7es8b/s320/circulo3.jpg" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTXDTO3tpAqwvadAZrFkFVIu4F9XUdYDzoEmn_4EpbTM5FMnHGdB-D_SXqpDfrVoLVAs66EOqyBM5peJezCkejNa0lRU4ls2OFFa3I8I7m-WTJfJolDBJp7aE-EmoNmp2lXWQNFKNmu9BC/s1600/circulo1.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTXDTO3tpAqwvadAZrFkFVIu4F9XUdYDzoEmn_4EpbTM5FMnHGdB-D_SXqpDfrVoLVAs66EOqyBM5peJezCkejNa0lRU4ls2OFFa3I8I7m-WTJfJolDBJp7aE-EmoNmp2lXWQNFKNmu9BC/s320/circulo1.jpeg" width="320" /></a></div>
<br />
Para la tarea, ocupe el código de varios compañeros y con el código de la doctora<br />
<br />
Para detectar lineas, el código es el siguiente:<br />
<br />
<b>Código:</b><br />
<br />
<script src="https://gist.github.com/calixtofc/5085781.js"></script>
Los Resultados son los siguientes:<br />
<br />
<b>Resultados:</b><br />
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjblCYovDaxc3HS4Exx1aPn1Wb1IFE0qi2TU9sY7qHEfsDBbU2J9f4KTX9PReTEk2DRpzNvHZtEEZmxL_FE7DzbuHwMAf_VfQNnaA3nfM1Cb68s7qu2AatOD0h81d6ebLMnseIgHDP687XL/s1600/deteccion_circulos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjblCYovDaxc3HS4Exx1aPn1Wb1IFE0qi2TU9sY7qHEfsDBbU2J9f4KTX9PReTEk2DRpzNvHZtEEZmxL_FE7DzbuHwMAf_VfQNnaA3nfM1Cb68s7qu2AatOD0h81d6ebLMnseIgHDP687XL/s320/deteccion_circulos.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlgJ32UpRGIMtb2tCkYCSRsKNlw2i6Q1ue1vSz2SsdiFEhWVD1gTRJI0aYOErxFcOaSqpurYqpXbDzlTOKpgsc-q2fhKXdU8Quwdbfbzc8Ltz7buwFXscTxbJzhEMhfukFRZa9n5cFtrk/s1600/deteccion_circulos1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlgJ32UpRGIMtb2tCkYCSRsKNlw2i6Q1ue1vSz2SsdiFEhWVD1gTRJI0aYOErxFcOaSqpurYqpXbDzlTOKpgsc-q2fhKXdU8Quwdbfbzc8Ltz7buwFXscTxbJzhEMhfukFRZa9n5cFtrk/s320/deteccion_circulos1.png" width="240" /></a></div>
<br /></div>
<div>
Hubo errores al detectar los centros.<br />
<br /></div>
<div>
<b>Repositorio:</b></div>
<div>
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
</div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-1989021242732193982013-02-28T09:50:00.001-08:002013-02-28T09:50:08.695-08:00Laboratorio - Actividad 4: Detección de Diagonales<div>
<div>
Para esta semana, en la entrada de clase, se trabajo para detectar lineas horizontales y verticales.<br />
<br />
En esta entrada se mostrara cuando se detectan lineas diagonales y/o de ángulo arbitrario.</div>
<div>
<br /></div>
</div>
<div>
En mi entrada anterior explique lo básico para el algoritmo de Hough.</div>
<div>
<br /></div>
<div>
Nota: Como tuve problemas con el código anterior, esta vez me base en un código de mis compañeros y de la Dra. </div>
<div>
<br /></div>
<div>
<b>Imágenes:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7B4hngIikWITMue5HZOW_SYXBByJIS1YWtypWXxEKcRBA51GG13GImiHcoszvVIdgqOYxdUcNSxirBpeoMsVCiZuZO9RDiOEIt3wHs9J2NxOCRwZEWEdkP95WNjEz2rfXZkKW2BsUZOAr/s1600/dia1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7B4hngIikWITMue5HZOW_SYXBByJIS1YWtypWXxEKcRBA51GG13GImiHcoszvVIdgqOYxdUcNSxirBpeoMsVCiZuZO9RDiOEIt3wHs9J2NxOCRwZEWEdkP95WNjEz2rfXZkKW2BsUZOAr/s320/dia1.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzfJLR_heDN4sN_UqySMD07R29v-FYOXJgtnoTDTReCyGVQV0_OHoEQJvABW-PvI7dKaroOPD9XzETmK1GkOYKAUlzdKi6YVS_L7yA1sH-trmnQ1jXSQbqmPrLLTHTsFdmOos2dZJ0aGGy/s1600/dia2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzfJLR_heDN4sN_UqySMD07R29v-FYOXJgtnoTDTReCyGVQV0_OHoEQJvABW-PvI7dKaroOPD9XzETmK1GkOYKAUlzdKi6YVS_L7yA1sH-trmnQ1jXSQbqmPrLLTHTsFdmOos2dZJ0aGGy/s320/dia2.JPG" width="320" /></a></div>
<div>
<br /></div>
<div>
Para detectar las lineas, el código es el siguiente:</div>
<br />
<b>Código:</b><br />
<script src="https://gist.github.com/calixtofc/5050044.js"></script>
<br />
Los Resultados son los siguientes:<br />
<b><br /></b>
<b>Resultados: </b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxo4W6g4gFU5ezlbpsOCuqIOg1wm9vy1Ls4BOK1eErk4SUAVVCxL3Vpsx-NH70NX2E_8CoxXJnmHnQTm-3Z5aePWH3Nd-023ObupvvHDDeu_N-lAe90cp00B82Ydo3y2kOuDZ2M_08ZC8w/s1600/deteccion_lineas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxo4W6g4gFU5ezlbpsOCuqIOg1wm9vy1Ls4BOK1eErk4SUAVVCxL3Vpsx-NH70NX2E_8CoxXJnmHnQTm-3Z5aePWH3Nd-023ObupvvHDDeu_N-lAe90cp00B82Ydo3y2kOuDZ2M_08ZC8w/s320/deteccion_lineas.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJebE9H8MSUu0hbBvLwMfWtKEpoKvirL9HU-ZpKUbgkw_qTgLshrzyxjWzIbzsTyYVTZKkHL0tL8Plpu4w5N-P7JKJUtMgV1GX-SSsPRwFpav0pKjS5qD3NOj84em8VfUX09eD4oedtgNH/s1600/deteccion_lineas1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJebE9H8MSUu0hbBvLwMfWtKEpoKvirL9HU-ZpKUbgkw_qTgLshrzyxjWzIbzsTyYVTZKkHL0tL8Plpu4w5N-P7JKJUtMgV1GX-SSsPRwFpav0pKjS5qD3NOj84em8VfUX09eD4oedtgNH/s320/deteccion_lineas1.jpg" width="320" /></a></div>
<br />
Problemas con los pixeles .-.<br />
<br />
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-85223632387919834632013-02-26T05:23:00.003-08:002013-02-26T05:28:37.855-08:00Clase - Detección de Lineas Para esta semana, se trabajo para detectar lineas horizontales y verticales en alguna imagen.<br />
<br />
Las lineas se muestran en Color Rojo, con un tono para lineas horizontales y otro tono en lineas verticales.<br />
<br />
Pero primero que nada, una explicación de lo que se hará:<br />
<br />
<u>Transformada de Hough</u><br />
<br />
<div style="background-color: white; line-height: 19.1875px; margin-bottom: 0.5em; margin-top: 0.4em;">
<span style="font-family: inherit;">El algoritmo de la transformada de Hough usa una matriz, llamada acumulador, cuya dimensión es igual al número de parámetros desconocidos del problema. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Por ejemplo, para detectar la existencia de una recta de la forma</span><span style="font-family: inherit;"> </span><img alt="y = m*x+n" class="tex" src="http://upload.wikimedia.org/math/f/e/5/fe5304f647357052d30a7ef23231a8b6.png" style="border: none; font-family: inherit; margin: 0px; vertical-align: middle;" /><span style="font-family: inherit;">, la dimensión del acumulador sería dos, ya sea su representación en</span><span style="font-family: inherit;"> </span><span style="font-family: inherit;">coordenadas cartesianas</span><span style="font-family: inherit;"> </span><img alt="(m,n)" class="tex" src="http://upload.wikimedia.org/math/1/d/6/1d61ee0df5b4f14b76dad026d0ce7237.png" style="border: none; font-family: inherit; margin: 0px; vertical-align: middle;" /><span style="font-family: inherit;"> </span><span style="font-family: inherit;">o en</span><span style="font-family: inherit;"> </span><span style="font-family: inherit;">coordenadas polares</span><span style="font-family: inherit;"> </span><img alt="(\rho,\theta)" class="tex" src="http://upload.wikimedia.org/math/9/3/0/9309ec5b1b09f71521de7040e25c0614.png" style="border: none; font-family: inherit; margin: 0px; vertical-align: middle;" /><span style="font-family: inherit;">, son desconocidos. </span><br />
<br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Esto se logra buscando todas las posibles combinaciones de valores para parámetros que describen la figura (los posibles valores se obtienen a partir del acumulador). </span><br /><span style="font-family: inherit;"><br /></span><br />
<span style="font-family: inherit;">Si es así, se calculan los parámetros de esa figura, y después se busca la posición en el acumulador correspondiente a la figura definida, y se incrementa el valor que hay en esa posición.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Las dos dimensiones del acumulador corresponden a los valores cuantificados para</span><span style="font-family: inherit;"> </span><img alt="(\rho,\theta)" class="tex" src="http://upload.wikimedia.org/math/9/3/0/9309ec5b1b09f71521de7040e25c0614.png" style="border: none; font-family: inherit; margin: 0px; vertical-align: middle;" /><span style="font-family: inherit;">.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Para construir el acumulador es necesario discretizar los parámetros que describen la figura. Cada celda del acumulador representa una figura cuyos parámetros se pueden obtener a partir de la posición de la celda.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Por cada punto en la imagen, se buscan todas las posibles figuras a las que puede pertenecer ese punto. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Las figuras se pueden detectar buscando las posiciones del acumulador con mayor valor (máximos locales en el espacio del acumulador). </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">La forma más sencilla de encontrar estos picos es aplicando alguna forma de umbral, pero distintas técnicas podrían dar mejores resultados en distintas circunstancias, determinando donde se encuentran las figuras y cuantas hay.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Por los errores que se pueden cometer detectando bordes, existirán imperfecciones en el espacio acumulador, lo que puede hacer que no sea trivial en encontrar los picos correctos y por tanto las figuras apropiadas.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Aquí se muestra un pseudo-código:</span><br />
</div>
<pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); font-family: monospace, Courier; font-size: 13px; line-height: 1.3em; padding: 1em;">1: cargar imagen
2: detectar los bordes en la imagen
3: por cada punto en la imagen:
4: si el punto <img alt="(x,y)" class="tex" src="http://upload.wikimedia.org/math/9/0/c/90cbc22edf225adf8a68974f51227f05.png" style="border: none; vertical-align: middle;" /> esta en un borde:
5: por todos los posibles ángulos <img alt="\theta" class="tex" src="http://upload.wikimedia.org/math/5/0/d/50d91f80cbb8feda1d10e167107ad1ff.png" style="border: none; vertical-align: middle;" />:
6: calcular <img alt="\rho" class="tex" src="http://upload.wikimedia.org/math/f/7/f/f7f177957cf064a93e9811df8fe65ed1.png" style="border: none; vertical-align: middle;" /> para el punto <img alt="(x,y)" class="tex" src="http://upload.wikimedia.org/math/9/0/c/90cbc22edf225adf8a68974f51227f05.png" style="border: none; vertical-align: middle;" /> con un ángulo <img alt="\theta" class="tex" src="http://upload.wikimedia.org/math/5/0/d/50d91f80cbb8feda1d10e167107ad1ff.png" style="border: none; vertical-align: middle;" />
7: incrementar la posición <img alt="(\rho,\theta)" class="tex" src="http://upload.wikimedia.org/math/9/3/0/9309ec5b1b09f71521de7040e25c0614.png" style="border: none; vertical-align: middle;" /> en el acumulador
8: buscar las posiciones con los mayores valores en el acumulador
9: devolver las rectas cuyos valores son los mayores en el acumulador.</pre>
<b><br /></b>
<b>Imágenes:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0VdBivaJl9W6NHdaaie5hzaCMwNZ8IX8na_Bc8_Sb4FCJhZylV8PASHiRYnBGxMZzfi3yfOP_rZ3ZYt2NtzygIDB1kMd2eRpCUFXjtBN_ojJvCHjyOKFA_PP0ue6pH-mhB1KuTWJEUQjo/s1600/lin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0VdBivaJl9W6NHdaaie5hzaCMwNZ8IX8na_Bc8_Sb4FCJhZylV8PASHiRYnBGxMZzfi3yfOP_rZ3ZYt2NtzygIDB1kMd2eRpCUFXjtBN_ojJvCHjyOKFA_PP0ue6pH-mhB1KuTWJEUQjo/s320/lin.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh32p2STThymXs76DrZaQ3eKaQ6YtsFMMUa_VBk6dx-pkMGQDjoAlF9mcr3WE4Hs1BXOAPPM9EjgpJWWXraWOWz5Thed4CEsJRTpJXHA2q13iLL0SkGXcpxMtk-27W2iVU0LUlVZKY8HS7_/s1600/lin1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh32p2STThymXs76DrZaQ3eKaQ6YtsFMMUa_VBk6dx-pkMGQDjoAlF9mcr3WE4Hs1BXOAPPM9EjgpJWWXraWOWz5Thed4CEsJRTpJXHA2q13iLL0SkGXcpxMtk-27W2iVU0LUlVZKY8HS7_/s320/lin1.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-Z8t16DK2ETK4BNfIQ5w1BMbjZDsolh0AQ3MAN1zKVqLu-rn7RVrzb4T5Ux3rAwt10r2Fb68AqB1o1kJwe0QdBJNWLL9mq61O6jqsYFR7gHg0kbk2FNiu-1dYkabFH5qOWfiaMfs8GSyH/s1600/lin2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-Z8t16DK2ETK4BNfIQ5w1BMbjZDsolh0AQ3MAN1zKVqLu-rn7RVrzb4T5Ux3rAwt10r2Fb68AqB1o1kJwe0QdBJNWLL9mq61O6jqsYFR7gHg0kbk2FNiu-1dYkabFH5qOWfiaMfs8GSyH/s320/lin2.png" width="320" /></a></div>
<br />
Para detectar lineas, el código es el siguiente:<br />
<br />
<b>Código:</b><br />
<br />
Problemas con el código :(<br />
<br />
Los Resultados son los siguientes:<br />
<br />
<b>Resultados: </b><br />
<br />
:(
<br />
<b><br /></b>
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-7409748041408070892013-02-21T09:43:00.001-08:002013-02-21T09:43:46.149-08:00Laboratorio - Actividad 3: Convex hull Para realizar esta tarea, se necesita el codigo del BFS que anteriormente utilice en tareas anteriores y ahora se mostrara como se colocaron contornos a la imagen con la ayuda del algoritmo "Gift wrapping".<br />
<br />
Las imágenes a utilizar es la siguiente:<br />
<br />
<b>Imagen:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7CaIwfDgtfOBp25mpdPwrw8MRb1wU9Q_l4Fjx7-diK7hparHqKIcUxj0-uxClAb1ERqyFR6_FTZyC8xrlm4dN3EcTXBUXzbRIZjnT5QpOEk_3PEyDP1ZlEIXJaQyinSjqpW3hrLGyfSvO/s1600/dibujo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7CaIwfDgtfOBp25mpdPwrw8MRb1wU9Q_l4Fjx7-diK7hparHqKIcUxj0-uxClAb1ERqyFR6_FTZyC8xrlm4dN3EcTXBUXzbRIZjnT5QpOEk_3PEyDP1ZlEIXJaQyinSjqpW3hrLGyfSvO/s320/dibujo.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3ZMNayeN7n8AEXC4KghSYIWL2XKvM0j9ufsQZjtwTzncSteIYYfvAHb0QfAa3pUu95F4erpeQl3MT0EKzPuZcTtQeCVrIftCKEaOMFs3fuxsad1kAidi48d-KvDGOaOjYclwBFWJ7P-R/s1600/dibujo1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg3ZMNayeN7n8AEXC4KghSYIWL2XKvM0j9ufsQZjtwTzncSteIYYfvAHb0QfAa3pUu95F4erpeQl3MT0EKzPuZcTtQeCVrIftCKEaOMFs3fuxsad1kAidi48d-KvDGOaOjYclwBFWJ7P-R/s320/dibujo1.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu5O5KIrTHSjNvfV24Dr9rx23YPjH0gR_TDPRRxIIwKPWagxx759Z3mR42RwrJ1hzYmdWvXSvjB88yR6Hd_-pZMt7U8p6pKqo3BR5W1YrQZV3vm_JROM34-uqBahtWmO82in8CscFlDx57/s1600/dibujo2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu5O5KIrTHSjNvfV24Dr9rx23YPjH0gR_TDPRRxIIwKPWagxx759Z3mR42RwrJ1hzYmdWvXSvjB88yR6Hd_-pZMt7U8p6pKqo3BR5W1YrQZV3vm_JROM34-uqBahtWmO82in8CscFlDx57/s320/dibujo2.png" width="320" /></a></div>
<br />
Ahora, el código:<br />
<br />
<b>Código:</b><br />
<br />
<script src="https://gist.github.com/calixtofc/4999890.js"></script>
Los resultados, son los siguientes:<br />
<b><br /></b>
<b>Resultados:</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim6uc7gxcg16WyvCbWjlF9Q1UlkBeYkgVtlp9pMsiVxgNqffbiWEwIbeRwuXVglBP5k8bDzBp1PtMBi1yRvk__md8Fet8pmarHb35rvndWeSgglV2CoHprxRKwZXVDW_xASx1_ZPmxPAHA/s1600/conv2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim6uc7gxcg16WyvCbWjlF9Q1UlkBeYkgVtlp9pMsiVxgNqffbiWEwIbeRwuXVglBP5k8bDzBp1PtMBi1yRvk__md8Fet8pmarHb35rvndWeSgglV2CoHprxRKwZXVDW_xASx1_ZPmxPAHA/s320/conv2.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibt5I-TcKDbshyphenhyphenesacYRAJ7LeE_DF7zKdmytp3vCeCZlpc-TWSGLvQYKU2A8svPp-O2eTtTj7P21NkHQFwUz-N-CIJdXXn4RqccUwjD6Nh3I8NcabH0b9R7O8j62d0MRcWHjPJM7yJQSgC/s1600/conv1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibt5I-TcKDbshyphenhyphenesacYRAJ7LeE_DF7zKdmytp3vCeCZlpc-TWSGLvQYKU2A8svPp-O2eTtTj7P21NkHQFwUz-N-CIJdXXn4RqccUwjD6Nh3I8NcabH0b9R7O8j62d0MRcWHjPJM7yJQSgC/s320/conv1.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDZ6YiAXR3_7acGtYMKIk0uaMzbfxaWbemflAuWVQSBN2hnOuWurHylgqn-juWcVw2OubIsv6uR4FpISWMM0Zk8YXYgMjoX5EdKt5z8gxokCpNoPxWLkmMaYTAlXb4RZTYUTHpJxAsrRC7/s1600/conv.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDZ6YiAXR3_7acGtYMKIk0uaMzbfxaWbemflAuWVQSBN2hnOuWurHylgqn-juWcVw2OubIsv6uR4FpISWMM0Zk8YXYgMjoX5EdKt5z8gxokCpNoPxWLkmMaYTAlXb4RZTYUTHpJxAsrRC7/s320/conv.png" width="320" /></a></div>
<br />
Localiza los puntos, tuve problemas con hacer las lineas :(<br />
<br />
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-41918105567218107952013-02-19T05:26:00.001-08:002013-02-19T05:26:54.546-08:00Clase - Detección de formas Para esta entrada, se empleo el deteccion de formas, pero primero que nada que se utilizo?<br />
<div>
<br /></div>
<div>
Se uso el algoritmo BFS (Búsqueda en anchura) con la ayuda del pseudo-codigo de la Dra. Elisa.</div>
<div>
<br /></div>
<div>
<u>Que hace el algoritmo?</u></div>
<div>
<br /></div>
<div>
Algoritmo para recorrer o buscar elementos en un grafo (usado frecuentemente sobre árboles). Intuitivamente, se comienza en la raíz (eligiendo algún nodo como elemento raíz en el caso de un grafo) y se exploran todos los vecinos de este nodo. <br />
A continuación para cada uno de los vecinos se exploran sus respectivos vecinos adyacentes, y así hasta que se recorra todo el árbol.</div>
<div>
<br /></div>
<div>
Ahora, las imágenes a utilizar:</div>
<div>
<br /></div>
<div>
<b>Imágenes:</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgixNCuTu-XQocp9sUWhssTDYQspdf4-Ys_li2Vo2Nb5pV-hOGqrbeyOzwzOCUfN9Hb0Jgb1ofBz4NRg96nUlWAHAAvT2AO7N7-ZdI0uzx86Z3UnAlKs6BtL66vdn-NbSePNlu3onTO6H2p/s1600/imagen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgixNCuTu-XQocp9sUWhssTDYQspdf4-Ys_li2Vo2Nb5pV-hOGqrbeyOzwzOCUfN9Hb0Jgb1ofBz4NRg96nUlWAHAAvT2AO7N7-ZdI0uzx86Z3UnAlKs6BtL66vdn-NbSePNlu3onTO6H2p/s320/imagen.png" width="250" /></a> </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGt9SAHtwWVS4ye4sNlxo-sA9WGWfYodCvhBgd2jc-oJouzifaQZE8sUd9tCjgbuLPLghTrtjbQCwplLGa0ypmA8fBTeFqmArwPlc0Mfd9JgEEqROOeIbwlvapylizKv9V27snwHvK4dOv/s1600/imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGt9SAHtwWVS4ye4sNlxo-sA9WGWfYodCvhBgd2jc-oJouzifaQZE8sUd9tCjgbuLPLghTrtjbQCwplLGa0ypmA8fBTeFqmArwPlc0Mfd9JgEEqROOeIbwlvapylizKv9V27snwHvK4dOv/s320/imagen1.png" width="320" /></a></div>
<div>
<b><br /></b>
<b>Código:</b></div>
<script src="https://gist.github.com/calixtofc/4983261.js"></script>
<br />
<div>
<br /></div>
<div>
<b>Resultados:</b></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRXeZ6Tr1DXT4vRdYxnIfnjWjUScDQcOzyMfS7AUA5MlsLkw0loYfR36sNwhxgaFigfiAeFouH1zpYGRn-sAfrZFxgXkaYLOhrNZJbQNn9mGRjOIJmNr2cNPSMMaQWOqFzSaxWYEnp7hXj/s1600/detectado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRXeZ6Tr1DXT4vRdYxnIfnjWjUScDQcOzyMfS7AUA5MlsLkw0loYfR36sNwhxgaFigfiAeFouH1zpYGRn-sAfrZFxgXkaYLOhrNZJbQNn9mGRjOIJmNr2cNPSMMaQWOqFzSaxWYEnp7hXj/s320/detectado.png" width="250" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj42ar2ziND6JLuLO7uGAOsHVpAjirBXUZFkfWomdXnjUDPUxupoDstkcBkS4O-dPcnkUdLpgKhm3abC8UcxNnyd9V85Ym0OhfaigcB1oixM5I1jZvE-bdYhNgI6JWg0zwGYrWfzvyC1fHb/s1600/detectado1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj42ar2ziND6JLuLO7uGAOsHVpAjirBXUZFkfWomdXnjUDPUxupoDstkcBkS4O-dPcnkUdLpgKhm3abC8UcxNnyd9V85Ym0OhfaigcB1oixM5I1jZvE-bdYhNgI6JWg0zwGYrWfzvyC1fHb/s320/detectado1.png" width="320" /></a></div>
<br />
Solo falta mejorar el código y agregar el etiquetado.<br />
<br /></div>
<div>
<b>Repositorio:</b><br />
<br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">https://github.com/calixtofc/Vision-Computacional-RCM</a></li>
</ul>
</div>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com2tag:blogger.com,1999:blog-893365784636790494.post-53952006153038233812013-02-14T09:48:00.000-08:002013-02-14T09:48:21.545-08:00Laboratorio - Actividad 2: Sal y pimienta Para esta entrada mostrare ejemplos de conversión de imágenes con el método de Sal y pimienta.<br />
<br />
<b>Imágenes a prueba:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrzpJDrh6yhjtdX3-YZQ_QriSDaqH2guADT9l6B-jkP7B52dbn7SCqmD2_J4-AgOlonM-xW9AKHyWYYB1DLUD44oeu3Hj5kOMs17vfJ9JBeR1YptjXEZteyiM6MQiQp_d7hukCDAB6TBBG/s400/fuck.jpg" width="400" /></div>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrB5_BGMC9T7ODmOS5sSApWsL-Bisv3kqKyWXrJ4c7l9sxalTI0DyNIgDWrkPpOyv8y-WfvoaMZh8AQndpTc2F-FVDW4sv2N_ACJYg63bbGpLX9bN3PWvSMhre4OKSoCW2rGo2NQtKWoXu/s400/fuck1.jpg" width="375" /></div>
<b>Sal y Pimienta </b><br />
<br />
El programa lo que logra es generar ruido aleatorio en la imagen, con muchos puntos blancos y negros.<br />
<br />
<b>Código:</b><br />
<br />
<script src="https://gist.github.com/calixtofc/4751375.js"></script>
<b>Resultados:</b><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDFwBFv42TjprlppxrCQ07KO6UEuR9r9CgDdOmuHweLAQD-hPCdMb0uK-jxLPLaTiOQaEwIja8ZzURwwHkhyphenhyphen7Y5JPXq92LRaYFVeQga9YfVHObnrth6woERe3DDPReigR0AINU2GPUQAaH/s1600/sp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDFwBFv42TjprlppxrCQ07KO6UEuR9r9CgDdOmuHweLAQD-hPCdMb0uK-jxLPLaTiOQaEwIja8ZzURwwHkhyphenhyphen7Y5JPXq92LRaYFVeQga9YfVHObnrth6woERe3DDPReigR0AINU2GPUQAaH/s400/sp.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4gR115rTtPizr7h9sE8eAnULhY4k8Njj6Gyv30cffLLLO_FDJ6hADOzsDf9AxbKdfT0B4xdz92VjmxX7VsBPUC0n48N30272KRTIFKoDQHjziA3LeD8xJ2pB89GSan3dPr4rJaZVuMfp7/s1600/sp1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4gR115rTtPizr7h9sE8eAnULhY4k8Njj6Gyv30cffLLLO_FDJ6hADOzsDf9AxbKdfT0B4xdz92VjmxX7VsBPUC0n48N30272KRTIFKoDQHjziA3LeD8xJ2pB89GSan3dPr4rJaZVuMfp7/s400/sp1.png" width="376" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<b>Quitar Sal y Pimienta</b><br />
<br />
Para esta parte del programa, se quitaran los puntos o pixeles que se lograron cambiar en las imagenes anteriores.<br />
<br />
<b>Código:</b><br />
<br />
<script src="https://gist.github.com/calixtofc/4949679.js"></script>
<b>Resultados:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUdevjNps8KkTo7T_qdJRwA-DskEPEMg0bhwZLVHJW3RDQ0XN7fydg-hngAgBA84tn1Y2CVYfc-DuESpx1mchTSmkb86lAw0C-DQo8eVQTt_1KFYn9tQYF1hphAgVkWXG2pN9mwgdRtMft/s1600/sin_sp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUdevjNps8KkTo7T_qdJRwA-DskEPEMg0bhwZLVHJW3RDQ0XN7fydg-hngAgBA84tn1Y2CVYfc-DuESpx1mchTSmkb86lAw0C-DQo8eVQTt_1KFYn9tQYF1hphAgVkWXG2pN9mwgdRtMft/s400/sin_sp.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-KVn6WAlaxtBuyhP11RtjfzidSEB6dM_WRmiwzEE9a_Dk2pIT9lDTTQIxP0HJnm2_odmkbowgj2uwzZ_xW0to3QT5f5bht4kXarzQzfEhMgPonhRpM9F0LI1kt94xhHfhzeunehrVI7cY/s1600/sin_sp1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-KVn6WAlaxtBuyhP11RtjfzidSEB6dM_WRmiwzEE9a_Dk2pIT9lDTTQIxP0HJnm2_odmkbowgj2uwzZ_xW0to3QT5f5bht4kXarzQzfEhMgPonhRpM9F0LI1kt94xhHfhzeunehrVI7cY/s320/sin_sp1.png" width="301" /></a></div>
<br />
En la primera imagen (Spiderman) y la segunda (rana) después de quitar sal y pimienta, quedan algunos píxeles blancos y negros, pero cumple con lo prometido.<br />
<br />
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">Vision-Computacional-RCM</a></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-22680730428263024642013-02-11T10:41:00.000-08:002013-02-11T11:02:15.550-08:00Clase - Deteccion de Bordes<b>Detección de Bordes</b><br />
<b><br /></b>
Para la detección de bordes, usaremos el filtro de convolucion.<br />
<br />
El filtro matriz de convolución usa una primera matriz que es la imagen que será tratada.<br />
La imagen es una colección bidimensional de píxeles en coordenada rectangular.<br />
<br />
El filtro examina, sucesivamente, cada píxel de la imagen. Para cada uno de ellos, que se llamará “píxel inicial”, se multiplica el valor de este píxel y los valores de los 8 circundantes por el valor correspondiente del kernel. Entonces se añade el resultado, y el píxel inicial se regula en este valor resultante final.<br />
<br />
Bueno ahora que ya se tiene una idea, se hacen las pruebas con las imágenes que seleccione.<br />
<br />
Lo primero son las imágenes a prueba:<br />
<br />
<b>Imágenes a Prueba:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidIWZE6JN17ubkezMxOqhgB8dxYqHLnfc4RguLUUYHf3lFadsGsSdZMEPEwAx55vVVxos59AgCXJ_sdRztJXvgrVeU7-oly-0mGcG2u89RWVwfaeQows1sEdUaLlq6Oa30imSvuy_-sIRQ/s1600/fuck.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidIWZE6JN17ubkezMxOqhgB8dxYqHLnfc4RguLUUYHf3lFadsGsSdZMEPEwAx55vVVxos59AgCXJ_sdRztJXvgrVeU7-oly-0mGcG2u89RWVwfaeQows1sEdUaLlq6Oa30imSvuy_-sIRQ/s320/fuck.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6QozFU2MJ1U7Bv2lgYH_qPTqM13P4vO_xZpP2SVS_N6Vh14p9pX8aF-q_PNv2ca8o0tR0mnG9Nx6UeSCMoa4Y4rSz3qYeEuEH5qlwyEt9ePrHDrojIYkP20crObpRcsPtpyo09d5eqKw5/s1600/fuck1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6QozFU2MJ1U7Bv2lgYH_qPTqM13P4vO_xZpP2SVS_N6Vh14p9pX8aF-q_PNv2ca8o0tR0mnG9Nx6UeSCMoa4Y4rSz3qYeEuEH5qlwyEt9ePrHDrojIYkP20crObpRcsPtpyo09d5eqKw5/s320/fuck1.jpg" width="300" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD1Oc5edynOw1iqXtWmu7vWzkswWaFKROGgtlqd7jvmugJdMaqryE4JLOFn0AqmUCfaTPFINvxqDA3MtjXSh82-aKqI6zofj2sKhmXDvYpJdoX6fkwYYgLjarxxWHRu39QZ02VgQEr8bEl/s1600/fuck2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD1Oc5edynOw1iqXtWmu7vWzkswWaFKROGgtlqd7jvmugJdMaqryE4JLOFn0AqmUCfaTPFINvxqDA3MtjXSh82-aKqI6zofj2sKhmXDvYpJdoX6fkwYYgLjarxxWHRu39QZ02VgQEr8bEl/s400/fuck2.jpg" width="400" /></a></div>
Ahora, detectaremos los bordes de las imágenes.<br />
<br />
<b>Resultados:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmdj_Pjc7HuwH3TMYaPy5VgtxABP4nSJ7htY5dmu5BJH84NyUAQyzUt3vM3cxgMyUJyeqNC5hES0uWKmcvdRs-q2kKOapCq5vowz0Os8gZE8ual498lp1WrHHOERhaAdpBChj94wgVaboe/s1600/det_bord.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="251" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmdj_Pjc7HuwH3TMYaPy5VgtxABP4nSJ7htY5dmu5BJH84NyUAQyzUt3vM3cxgMyUJyeqNC5hES0uWKmcvdRs-q2kKOapCq5vowz0Os8gZE8ual498lp1WrHHOERhaAdpBChj94wgVaboe/s320/det_bord.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBIav4usTQf-WAuKwM3ly_h0UoWP50khuBPuxuV56-CtSLmrJd5PQQaOPrdjmGney-9nAk1iL5DywoIbidOsMWQaSA9DRZET_MsDczEOP4RsTu1L3uutXu0l16aDMz8lBOQr0EEmy-Qmye/s1600/det_bord1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBIav4usTQf-WAuKwM3ly_h0UoWP50khuBPuxuV56-CtSLmrJd5PQQaOPrdjmGney-9nAk1iL5DywoIbidOsMWQaSA9DRZET_MsDczEOP4RsTu1L3uutXu0l16aDMz8lBOQr0EEmy-Qmye/s320/det_bord1.png" width="301" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP2hBAF3nFkodbHTtBAGIHb7GmL3sBW_8B1WO_Oh2qx9hjZXKyxtjheRoeIdrMCwqqeJc0RrLljCayBQ0Adc6AQGxvbvtqprNuAjh-vzITuRQmJgNnQh88EIdv8rAfZHb_sJ6m4HXf1Hzp/s1600/det_bord2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP2hBAF3nFkodbHTtBAGIHb7GmL3sBW_8B1WO_Oh2qx9hjZXKyxtjheRoeIdrMCwqqeJc0RrLljCayBQ0Adc6AQGxvbvtqprNuAjh-vzITuRQmJgNnQh88EIdv8rAfZHb_sJ6m4HXf1Hzp/s400/det_bord2.png" width="400" /></a></div>
<br />
<b>* NOTA: </b>En la segunda imagen, esta muy pixelada, por obvias razones hubo problemas al utilizar la escala de grises y después usar convolución.<br />
<br />
Tiempo que se tardo el proceso en las imágenes:<br />
<br />
En la primera imagen:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_rbyVBCBo28YVdiZL8T4JwCwBKQS3uYsQKewyPKRK8k2t8zOCWqeHpE8-CGMpogC6GrCMG2kFMTN604mDKgYticmakfXzycDjIctNRSH1INs7Xp8Uc5UIYgkRDFu8k8rqHrH0ZVvy0TXy/s1600/tiempo_fuck.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="73" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_rbyVBCBo28YVdiZL8T4JwCwBKQS3uYsQKewyPKRK8k2t8zOCWqeHpE8-CGMpogC6GrCMG2kFMTN604mDKgYticmakfXzycDjIctNRSH1INs7Xp8Uc5UIYgkRDFu8k8rqHrH0ZVvy0TXy/s320/tiempo_fuck.PNG" width="320" /></a></div>
En la segunda imagen:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitleIFY6AzSIqpwcBgwupURUDbadQ3ZAm5IyVoTF0BDqQRoUOiZLUjEminOGTkkN1m0lUlyghfDdBvN22x1IgF194kA-rwJy_-2HUJpagN3jkI4Gi3Fq1ADPeYBiywIUyhadTP2jTpD-O9/s1600/tiempo_fuck1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitleIFY6AzSIqpwcBgwupURUDbadQ3ZAm5IyVoTF0BDqQRoUOiZLUjEminOGTkkN1m0lUlyghfDdBvN22x1IgF194kA-rwJy_-2HUJpagN3jkI4Gi3Fq1ADPeYBiywIUyhadTP2jTpD-O9/s1600/tiempo_fuck1.PNG" /></a></div>
En la tercera imagen:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihQA6N60LufTEEBpwwJDQuNJWVllAbLYqbsZNTlI5D7wIaLg0mOrTYhPvQ9f-kBZBJf2s20cjxyjF7P0Yn_V_ytEy_0BLb82hskBhYIFjo6FLyu8rjVce4Be71NTypWZmL-HMDJBpWGtMl/s1600/tiempo_fuck2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="57" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihQA6N60LufTEEBpwwJDQuNJWVllAbLYqbsZNTlI5D7wIaLg0mOrTYhPvQ9f-kBZBJf2s20cjxyjF7P0Yn_V_ytEy_0BLb82hskBhYIFjo6FLyu8rjVce4Be71NTypWZmL-HMDJBpWGtMl/s320/tiempo_fuck2.PNG" width="320" /></a></div>
<br />
Ahora, el código completo:<br />
<b><br /></b>
<b>Código:</b><br />
<script src="https://gist.github.com/calixtofc/4755924.js"></script>
<br />
Pueden visitar mi repositorio:<br />
<br />
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">Vision-Computacional-RCM</a></li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1tag:blogger.com,1999:blog-893365784636790494.post-44030675407862865062013-02-04T08:13:00.000-08:002013-02-06T20:58:45.406-08:00Laboratorio - Actividad 1: Prueba de ImagenesPara esta entrada mostrare ejemplos de conversión de imágenes a escala de grises y otros métodos.<br />
<br />
Imágenes de Prueba:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnwmfGm7tSnwASenL15_xeJzvkDhxwxaxdKQSR84CyP33ao9GERR_XnIgzRfhZWtElxaexv6yvQDHBUO5z0fzxw8_GU_8_UcCWM8tr_UVSgGWrg3hWO2CgWWztg3-rIPNvCctFEzbE97JK/s1600/iron.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnwmfGm7tSnwASenL15_xeJzvkDhxwxaxdKQSR84CyP33ao9GERR_XnIgzRfhZWtElxaexv6yvQDHBUO5z0fzxw8_GU_8_UcCWM8tr_UVSgGWrg3hWO2CgWWztg3-rIPNvCctFEzbE97JK/s320/iron.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6HICW1ECb5p-96Sh5PxhqfNu1Hm_cG5HMl2Aqn9iqskE6pVnSWkUj638yBk_Re3Xmnhn2SE0hh097L5f3kdSJaxOI1hV7uZBUvn9tzBRuEk5__svVZb5YCMIYQEsme6QKAtSonCVCd6Q/s1600/marvel.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6HICW1ECb5p-96Sh5PxhqfNu1Hm_cG5HMl2Aqn9iqskE6pVnSWkUj638yBk_Re3Xmnhn2SE0hh097L5f3kdSJaxOI1hV7uZBUvn9tzBRuEk5__svVZb5YCMIYQEsme6QKAtSonCVCd6Q/s320/marvel.jpg" width="320" /></a></div>
<b><br /></b>
<b>Conversión a Gris</b><br />
<br />
Código:<br />
<script src="https://gist.github.com/calixtofc/4726272.js"></script>
Resultado:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp6wUDQthM7pXqPo-aondaAFq4rpiK3jNiwo8WSr9Wf2zSBxWvfwpVrA44-zLXX2NuBOJGXKEatnZCN1Z6fBSPhiPOjSUqypp6fvwlznyxByBy5F4726hU0vGzmAlDN_lfki4HwUI2Dgzg/s1600/iron_gris.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp6wUDQthM7pXqPo-aondaAFq4rpiK3jNiwo8WSr9Wf2zSBxWvfwpVrA44-zLXX2NuBOJGXKEatnZCN1Z6fBSPhiPOjSUqypp6fvwlznyxByBy5F4726hU0vGzmAlDN_lfki4HwUI2Dgzg/s320/iron_gris.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpn6FzHUDUlB0ZdD6GToU1J8Vqhz_E4SYVZJ720O72eaoCV8iDRYO3OaoAwcNkXmC-zxLlPtU2vBCEDJZ99zimEvunNDIZMd6PIydAPKWQ0g2094hXKy0N4LUZ6HULBGDj-aPd9yv7_pF-/s1600/iron_gris+(2).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpn6FzHUDUlB0ZdD6GToU1J8Vqhz_E4SYVZJ720O72eaoCV8iDRYO3OaoAwcNkXmC-zxLlPtU2vBCEDJZ99zimEvunNDIZMd6PIydAPKWQ0g2094hXKy0N4LUZ6HULBGDj-aPd9yv7_pF-/s320/iron_gris+(2).png" width="320" /></a></div>
<br />
<b>Convertir a Binario</b><br />
<br />
Código:<br />
<script src="https://gist.github.com/calixtofc/4726280.js"></script>
Resultado:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrLfNptYZ93c0E6_kjyuLlrf9NfKM3QAzyj485ooIT0rAwjwzn18UuaB8Mb0G_QFHpQKhLUFiNnMl997kUhVb-UpvBO8XErEU-oKllFTfSyG6jhECV27NnXxbMd39tYThUw0no_eFlf7Dy/s1600/iron_umbral.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrLfNptYZ93c0E6_kjyuLlrf9NfKM3QAzyj485ooIT0rAwjwzn18UuaB8Mb0G_QFHpQKhLUFiNnMl997kUhVb-UpvBO8XErEU-oKllFTfSyG6jhECV27NnXxbMd39tYThUw0no_eFlf7Dy/s320/iron_umbral.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgop7qeECBGpuZTI_kauHfieAwcNljlII7fgZDRWtQmHhwtntjHxtYipBnWuazQAiEoF2vpiIBnZz_fe9ciFcc7crz6UqdJivBgShhTy-Xo7uQ0Wb40HXPUdLsP8I87349xD67S2c1lSBcz/s1600/iron_umbral+%25282%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgop7qeECBGpuZTI_kauHfieAwcNljlII7fgZDRWtQmHhwtntjHxtYipBnWuazQAiEoF2vpiIBnZz_fe9ciFcc7crz6UqdJivBgShhTy-Xo7uQ0Wb40HXPUdLsP8I87349xD67S2c1lSBcz/s320/iron_umbral+%25282%2529.png" width="320" /></a></div>
<br />
<b>ERROR ....</b><br />
<br />
Con el codigo de Filtro tube algunos errores de codigo, pero aun asi el codigo esta dentro de mi repositorio y esta disponible.<br />
<br />
<script src="https://gist.github.com/calixtofc/4726293.js"></script>
<br />
<b>Repositorio:</b><br />
<ul>
<li><a href="https://github.com/calixtofc/Vision-Computacional-RCM">Vision-Computacional-RCM</a></li>
</ul>
<br />
<ul>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com2tag:blogger.com,1999:blog-893365784636790494.post-10091494142712949282013-02-01T10:18:00.002-08:002013-02-04T08:51:27.929-08:00RepositorioEste es mi repositorio:<br />
<br />
<a href="https://github.com/calixtofc/Vision-Computacional-RCM" target="_blank">Vision Computacional RCM</a>Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com0tag:blogger.com,1999:blog-893365784636790494.post-65524702900243057892013-01-22T07:23:00.000-08:002013-01-22T07:23:01.395-08:00Resumen - Proceso de analisis para la deteccion de armas encubiertas<div style="text-align: left;">
<span style="text-align: center;"><b>Tema: </b></span></div>
<div style="text-align: left;">
<span style="text-align: center;">Automatic Image Analysis Process for the Detection of Concealed Weapons</span></div>
<br />
<b>Autores:</b><br />
Richard Gesick<br />
Caner Saritac<br />
Chih-Cheng Hung<br />
<br />
<b>Introduccion:</b><br />
<br />
Como cualquiera persona que haya volado en avion en los últimos años, el proceso de selección de equipaje es de mucho tiempo y es agotador.<br />
<br />
La detección automática de armas en el proceso de selección debe permitir a los inspectores en centrarse más en los aspectos personales de inspección, que las máquinas de manejar los aspectos rutinarios.<br />
<div>
<div>
<br /></div>
<div>
<b>Trabajos relacionados:</b></div>
<div>
Hay varios proyectos que han avanzado en la identificación de las armas en el equipaje mediante rayos X o imágenes MMW.</div>
<div>
<br /></div>
<div>
Los proyectos pueden ser agrupados en dos grupos: los que utilizan la segmentación de imagen y la coincidencia de patrones y los que utilizan pseudo-color.</div>
<div>
Ambos de estos grupos se centró en los procesos que ayudan al personal de inspección en la identificación de armas.</div>
</div>
<div>
<br /></div>
<div>
<div>
<b>La segmentación y la coincidencia de modelos</b></div>
<div>
Se desarrollaron procesos que logran que el proceso de comparación sea mucho más eficiente.</div>
<div>
<br /></div>
<div>
Se utilizo la transformada de Hough para extraer las firmas y luego crear un nuevo descriptor de forma que correspondan a las características principales de la imagen, incluyendo el contenido interior.</div>
<div>
<br /></div>
<div>
Se aplica una Serie Fourier normalizada para transformar la imagen para crear una firma rotación invariante que se utiliza en el proceso de compresión.</div>
<div>
<br /></div>
<div>
Entonces proceden a almacenar los resultados en un tipo de estructura de datos llamada árbol Vantage-Point.</div>
</div>
<div>
<div>
<br /></div>
<div>
<b>Pseudo-colorear:</b></div>
<div>
La investigación implicó en la generación de varios esquemas de coloración falsa de imágenes en escala de grises, prueba estas opciones en un grupo de screener aeropuerto real y luego analiza los resultados de la prueba.</div>
<div>
<br /></div>
<div>
Encontraron que sus "técnicas de mapeo de color eran herramientas veryvaluable en el aumento de la tasa de detección bajo amenaza en las exploraciones de rayos X para equipaje".</div>
<div>
Un aumento significativo de hasta 97% en comparación con los resultados de los datos originales, en la tasa de detección de amenazas se obtuvo cuando los datos codificados por colores fueron utilizados por</div>
<div>
inspectores.</div>
<div>
<br /></div>
<div>
Los fabricantes han desarrollado sistemas de rayos X a base de inspección de equipajes con energía dual o tecnología de retrodispersión para caracterizar las propiedades del material.</div>
<div>
Estas tecnologías usan datos de sensores duales para determinar la masa atómica de los materiales y presentar estos datos al operador a través de una pantalla de pseudo-color.</div>
<div>
Típicamente orgánicos se muestran en un tono naranja, y materiales metálicos como una sombra azul / verde.</div>
</div>
<br />
<br />
<br />
<b>Los enfoques propuestos:</b><br />
Los casos de prueba fueron imágenes donde se ocultaron armans y las imágenes que no tienen armas ocultas.<br />
Varios límites se impusieron con el fin de mantener el alcance del problema razonable.<br />
<br />
<br />
<br />
<b>Coincidencia de patrones</b><br />
Las imágenes se procesaron on el ImageJ, programa de procesamiento de imágenes aumentadas con algoritmos basados en Java.<br />
<br />
Los experimentos iniciales se basaron en el uso de un algoritmo de detección de bordes y después realizar una comparación de patrones para una pistola genérica.<br />
<br />
Si bien este proceso era viable sobre una pistola en una imagen ordenada, demostró ser ineficaz, tomó una cantidad excesiva de tiempo incluso en imágenes simples y generado demasiados falsos positivos en una imagen típica de equipaje de mano.<br />
El proceso fue refinado a la de detección de bordes y se combino con comparar el patrón de una característica relativamente invariante.<br />
<br />
La Figura 1 muestra el proceso de detección usado..<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIq1URZrGkjLyaw6cfwhsxKOjUgT4QTKZZosyAFfZXDZijpH1zJ9q595Om3oegWgThgda97ddCRgd9UsLbMgOSajQYNLWMw58XSr0KTY-_2slqfFbQTQOoc2SbqP1ATJZWSdu7vzK-keZ3/s1600/Captura.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIq1URZrGkjLyaw6cfwhsxKOjUgT4QTKZZosyAFfZXDZijpH1zJ9q595Om3oegWgThgda97ddCRgd9UsLbMgOSajQYNLWMw58XSr0KTY-_2slqfFbQTQOoc2SbqP1ATJZWSdu7vzK-keZ3/s1600/Captura.PNG" /></a></div>
<br />
Cuando la deteccion de bordes se completo, la imagen es escaneada para determinar rápidamente las áreas de posible interés.<br />
<br />
Cuando se identificaron como posibles armas, se escanea a continuación en mayor detalle para determinar la probabilidad de que sea una pistola calculando el porcentaje de coincidencia de la imagen de referencia.<br />
<br />
Si este porcentaje es mayor que 50%, las imágenes se escanean y después a fondo en comparación con la línea de base y las imágenes de rotación para calcular la probabilidad de que la imagen no representa un arma.<br />
<div>
<br /></div>
<br />
<br />
<b>Transformada Daubechies:</b><br />
<br />
Permite que las imágenes complejas a descomponerse en una serie de funciones básicas se pueden analizar en una variedad de escalas o resoluciones.<br />
Contiene tanto la frecuencia como la información espacial y descompone una imagen en cuatro sub-imágenes de la muestra.<br />
La presencia de un arma en imágenes de prueba se determinó a través de un algoritmo vecino "k" más próximo.<br />
<br />
<br />
<br />
<b>SIFT:</b><br />
<br />
El algoritmo SIFT es un proceso superior en la detección de accidentes y combinar las características locales de las imágenes.<br />
Las características son invariantes a escala de imagen, rotación, traslación, y en parte invariante a cambios de iluminación.<br />
Estas características, que son detectados mediante el uso de un enfoque por etapas de filtrado, se utilizan para la detección de objetos en imágenes mediante la identificación de puntos estables en el espacio escala para crear claves de la imagen.<br />
Modificaron el algoritmo SIFT para la detección de pistolas.<br />
<br />
<br />
<br />
<b>Resultados:</b><br />
<i>Coincidencia de patrones </i><br />
<br />
La Figura 2 (a) muestra una imagen sencilla de una pistola automática.<br />
<br />
La Figura 2 (b) muestra los resultados de procesamiento con la rutina de detección.<br />
Una vez que el gatillo ha sido identificado, es en caja y marcado con la probabilidad derivada.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6-roP_oSPTRKlsMON3Vz3aydcPgxVb2CYPnwet491d25S3WuVDMYsUabUjy4Db3_doKD-AxEoPVjpCWuNk5jlteXFUrIQLYfXrcAo4WloeWmO4Ix4gDVCXS6AUjITA3hdHAK8Fm85K8AZ/s1600/Captura1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6-roP_oSPTRKlsMON3Vz3aydcPgxVb2CYPnwet491d25S3WuVDMYsUabUjy4Db3_doKD-AxEoPVjpCWuNk5jlteXFUrIQLYfXrcAo4WloeWmO4Ix4gDVCXS6AUjITA3hdHAK8Fm85K8AZ/s1600/Captura1.PNG" /></a></div>
<br />
<b>Comentarios:</b><br />
<br />
Con imagenes de1000 píxeles por 800 píxeles en escala de grises y las técnicas de imagen son extremadamente exigente computacionalmente.<br />
<br />
Correr en un ordenador de cuatro núcleos, 2,2 GHz, las imágenes simples, en promedio, tomo 6,5 segundos, que satisfagan los requisitos de la FAA, no obstante con una bolsa más realista, el tiempo promedio aumentó a 165 segundos.<br />
<br />
Esto sería completamente insatisfactoria para un proceso de tiempo real. El código se optimizo tanto como fue posible.<br />
<br />
<br />
<b>Conclusion:</b><br />
El objetivo de esta investigación fue desarrollar un proceso, utilizando corriente formación de imágenes y sin intervención humana, que proporciona una detección precisa y oportuna de un arma oculta y su localización en la imagen de los equipajes.<br />
<br />
Hay varios procesos existentes que son capaces de poner de relieve o de otra manera, un arma oculta en el equipaje, pero hasta ahora los procesos todavía requieren un operador altamente capacitado para observar la imagen y sacar las conclusiones correctas.<br />
<br />
Se intentaron tres diferentes enfoques en este proyecto.<br />
<br />
<b>El primer enfoque</b> utiliza bordecombinada con detección de coincidencia de patrón para determinar la existencia de una pistola oculta.<br />
<b>La segundo enfoque</b> empleado Daubechie wavelet, pero la resultados hasta ahora han sido concluyentes.<br />
<b>Un tercer enfoque</b> implica un algoritmo basado en la función de escala invariante.<br />
<br />
<br />
<b>Referencias:</b><br />
<br />
<ul>
<li class="UFIRow UFIComment" data-ft="{"tn":"R9"}" id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}"><div class="clearfix" id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0">
<div id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1]">
<div class="clearfix UFIImageBlockContent _42ef" id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1].0">
<div id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1].0.[1]">
<div id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1].0.[1].0">
<div class="UFICommentContent" id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1].0.[1].0.[0]">
<span data-ft="{"tn":"K"}" id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1].0.[1].0.[0].[0][2]"><span class="UFICommentBody" id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1].0.[1].0.[0].[0][2].0"><a href="http://www.csiir.ornl.gov/csiirw/09/CSIIRW09-Proceedings/Abstracts/Gesick-abstract.pdf" id=".reactRoot[651].[1][2][1]{comment529485810419657_529488423752729}.0.[1].0.[1].0.[0].[0][2].0.[4]" rel="nofollow" target="_blank">http://www.csiir.ornl.gov/csiirw/09/CSIIRW09-Proceedings/Abstracts/Gesick-abstract.pdf</a></span></span></div>
</div>
</div>
</div>
</div>
</div>
</li>
</ul>
Rene Camachohttp://www.blogger.com/profile/18156429464844796802noreply@blogger.com1