<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2227-1899</journal-id>
<journal-title><![CDATA[Revista Cubana de Ciencias Informáticas]]></journal-title>
<abbrev-journal-title><![CDATA[Rev cuba cienc informat]]></abbrev-journal-title>
<issn>2227-1899</issn>
<publisher>
<publisher-name><![CDATA[Editorial Ediciones Futuro]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2227-18992016000300002</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Implementación del Algoritmo de Otsu sobre FPGA]]></article-title>
<article-title xml:lang="en"><![CDATA[Otsu&#8217;s algorithm implementation on FPGA]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[López-Portilla Vigil]]></surname>
<given-names><![CDATA[Bárbaro M]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Menéndez Alonso]]></surname>
<given-names><![CDATA[Reinaldo J.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Iglesias Martínez]]></surname>
<given-names><![CDATA[Miguel E.]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad de Pinar del Río Departamento de Telecomunicaciones y Electrónica ]]></institution>
<addr-line><![CDATA[ Pinar del Río]]></addr-line>
<country>Cuba</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad de Pinar del Río Centro de Estudio de Energía y Tecnologías Sostenibles ]]></institution>
<addr-line><![CDATA[ Pinar del Río]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>09</month>
<year>2016</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>09</month>
<year>2016</year>
</pub-date>
<volume>10</volume>
<numero>3</numero>
<fpage>16</fpage>
<lpage>26</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992016000300002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992016000300002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992016000300002&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[RESUMEN En este trabajo se describe la implementación de un sistema que se emplea para la detección del umbral óptimo en imágenes en escala de grises con un tamaño de 256x256 píxeles siguiendo el algoritmo propuesto por Otsu. El sistema que se propone se basa en una implementación híbrida hardware-software, donde el módulo principal de la parte hardware es precisamente la arquitectura propuesta que se corresponde con el algoritmo de Otsu. Una de las ventajas de este diseño es que se evita el empleo de divisores y casi la totalidad de multiplicadores. En el diseño se utiliza una placa Nexys2 de Digilent que contiene un FPGA XCS500E de Xilinx. Los resultados obtenidos son satisfactorios en cuanto a exactitud y cantidad de recursos internos del FPGA ocupados.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[ABSTRACT In this paper, the implementation of a system used for detecting the optimal threshold in grayscale 256x256 images based on the Otsu's algorithm is described. The proposed system is based on a hybrid hardware-software implementation, where the main module of the hardware part is precisely the proposed architecture that corresponds with the Otsu's algorithm. One advantage of this implementation is that the use of dividers and almost all the multipliers are avoided. For the implementation a Digilent Nexys2 Board that containing a FPGA Xilinx XCS500E is used. The results are satisfactory in terms of accuracy and number of internal FPGA resources occupied.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Algoritmo de Otsu]]></kwd>
<kwd lng="es"><![CDATA[FPGA]]></kwd>
<kwd lng="es"><![CDATA[módulo IP]]></kwd>
<kwd lng="es"><![CDATA[umbral]]></kwd>
<kwd lng="en"><![CDATA[FPGA]]></kwd>
<kwd lng="en"><![CDATA[IP module]]></kwd>
<kwd lng="en"><![CDATA[Otsu's algorithm]]></kwd>
<kwd lng="en"><![CDATA[threshold]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ART&Iacute;CULO  ORIGINAL</B></font></p>     <p>&nbsp;</p>     <p><font size="4"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Implementaci&oacute;n  del Algoritmo de Otsu sobre FPGA</font></strong></font></p>     <p>&nbsp;</p>     <p><font size="3"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Otsu&rsquo;s algorithm  implementation on FPGA</font></strong></font></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">B&aacute;rbaro M. L&oacute;pez-Portilla  Vigil<strong><sup>1*</sup></strong>, Reinaldo J. Men&eacute;ndez Alonso<strong><sup>1</sup></strong>, Miguel E. Iglesias Mart&iacute;nez</font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><strong><sup>2</sup></strong></font></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><sup>1</sup>Departamento de Telecomunicaciones y Electr&oacute;nica, Universidad de Pinar  del R&iacute;o. Calle Mart&iacute; Final No. 270, Pinar del R&iacute;o, Cuba. {barbaro, rey88}  @upr.edu.cu</font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">    <br>   <sup>2</sup>Centro de Estudio de Energ&iacute;a y  Tecnolog&iacute;as Sostenibles, Universidad de Pinar del R&iacute;o. Calle Mart&iacute; Final No. 270, Pinar del  R&iacute;o, Cuba. mgi@upr.edu.cu    ]]></body>
<body><![CDATA[<br> </font></p>     <P><font face="Verdana, Arial, Helvetica, sans-serif"><span class="class"><font size="2">*Autor para la correspondencia: </font></span></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <a href="mailto:barbaro@upr.edu.cu">barbaro@upr.edu.cu</a><a href="mailto:jova@uci.cu"></a></font><font face="Verdana, Arial, Helvetica, sans-serif"><a href="mailto:losorio@ismm.edu.cu"></a> </font>     <p>&nbsp;</p>     <p>&nbsp;</p> <hr>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b> </font>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este trabajo se describe la implementaci&oacute;n de un sistema que se  emplea para la detecci&oacute;n del umbral &oacute;ptimo en im&aacute;genes en escala de grises con  un tama&ntilde;o de 256x256 p&iacute;xeles siguiendo el algoritmo propuesto por Otsu. El  sistema que se propone se basa en una implementaci&oacute;n h&iacute;brida hardware-software,  donde el m&oacute;dulo principal de la parte hardware es precisamente la arquitectura  propuesta que se corresponde con el algoritmo de Otsu. Una de las ventajas de  este dise&ntilde;o es que se evita el empleo de divisores y casi la totalidad de multiplicadores.  En el dise&ntilde;o se utiliza una placa Nexys2 de Digilent que contiene un FPGA  XCS500E de Xilinx. Los resultados obtenidos son satisfactorios en cuanto a  exactitud y cantidad de recursos internos del FPGA ocupados.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Palabras clave:</span></b></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Algoritmo de Otsu, FPGA, m&oacute;dulo IP, umbral.</font></p> <hr>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>ABSTRACT</span></b> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">In this paper, the implementation of a system used for detecting the  optimal threshold in grayscale 256x256 images based on the Otsu's algorithm is  described. The proposed system is based on a hybrid hardware-software  implementation, where the main module of the hardware part is precisely the  proposed architecture that corresponds with the Otsu's algorithm. One advantage  of this implementation is that the use of dividers and almost all the  multipliers are avoided. For the implementation a Digilent Nexys2 Board that  containing a FPGA Xilinx XCS500E is used. The results are satisfactory in terms  of accuracy and number of internal FPGA resources occupied.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Key words: </span></b>FPGA, IP module, Otsu's algorithm, threshold.</font></p> <hr>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p>&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>INTRODUCCI&Oacute;N</b></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La detecci&oacute;n de umbral de manera autom&aacute;tica es una t&eacute;cnica muy eficaz y  sencilla utilizada en los campos de procesamiento de im&aacute;genes, reconocimiento de  patrones y visi&oacute;n por computadora. Sin embargo, se requiere de un valor de  umbral adecuado para extraer objetos de inter&eacute;s en una imagen determinada, ya  que los objetos tienen sus propias distribuciones de distintos niveles de gris.  Los m&eacute;todos de detecci&oacute;n de umbral son ampliamente utilizados m&aacute;s  espec&iacute;ficamente en aplicaciones tales como, el reconocimiento &oacute;ptico de caracteres  (MITHE, 2013), la inspecci&oacute;n autom&aacute;tica de  defectos (PAK, 2016), la detecci&oacute;n de cambios en video (DEL FARO, 2013), segmentaci&oacute;n de objetos en  movimiento (OCHS, 2014) y el diagn&oacute;stico de im&aacute;genes m&eacute;dicas (SENTHILKUMARAN, 2016). Como tarea fundamental en la  etapa de pre procesamiento de una imagen, muchos investigadores prestan gran  atenci&oacute;n a la forma de determinar los umbrales apropiados (SI-QI, 2010).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Estas aplicaciones requieren de ejecuci&oacute;n en tiempo real, de ah&iacute; la  necesidad de su implementaci&oacute;n en hardware, especialmente en dispositivos FPGAs  (<em>Field Programmable Gate Array</em>) (HAHNLE, 2013). Con este tipo de dispositivo se  aumenta la eficiencia computacional de los procedimientos de detecci&oacute;n de  umbrales. Por lo tanto, la elecci&oacute;n de un m&eacute;todo para la detecci&oacute;n de umbral  como parte de una determinada aplicaci&oacute;n en un dispositivo FPGA es importante.  El m&eacute;todo de Otsu (OTSU, 1979) es una t&eacute;cnica de umbralizaci&oacute;n autom&aacute;tica  con muy buenos resultados y f&aacute;cil de asimilar, por lo que goza de gran  popularidad. Sin embargo, el c&aacute;lculo del umbral mediante el m&eacute;todo de Otsu  implica muchas operaciones aritm&eacute;ticas complejas iterativas, tales como  multiplicaciones y divisiones, que no contribuyen a una ejecuci&oacute;n de alta  velocidad y de bajo consumo de recursos.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los dispositivos FPGAs modernos  permiten empotrar muchos m&oacute;dulos IPs predefinidos, tales como elementos de  procesamiento digital de se&ntilde;ales, memorias, microprocesadores, controladores de  perif&eacute;ricos, buses, entre otros (HERN&Aacute;NDEZ, 2012). En este trabajo, se propone una arquitectura basada  en FPGA para la implementaci&oacute;n del algoritmo de Otsu. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">METODOLOG&Iacute;A COMPUTACIONAL </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El m&eacute;todo de Otsu se basa en maximizar una medida estad&iacute;stica que se  denomina varianza entre clases. Un umbral que produzca la mejor separaci&oacute;n  entre clases, en t&eacute;rminos de los valores de intensidad de estas, ser&aacute; el umbral  &oacute;ptimo (OTSU, 1979; SEZGIN, 2004; ZHIYONG, 2013). Si se tiene una  imagen en escala de grises con L niveles de intensidad de gris (0, 1, 2, &hellip;,  L-1), el n&uacute;mero de p&iacute;xeles con nivel i se denota por n<sub>i</sub> y el total del n&uacute;mero de p&iacute;xeles es</font> <img src="/img/revistas/rcci/v10n3/fo0102316.jpg" alt="fo01" width="203" height="21"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">el histograma normalizado de la imagen se obtiene de la siguiente  manera:</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0202316.jpg" alt="fo02" width="288" height="29"></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Si se supone que los p&iacute;xeles de la imagen se agrupan en dos clases C<sub>0</sub> y C<sub>1</sub> (objeto y fondo de la imagen, o viceversa) mediante un umbral de nivel  t, se tiene que la clase C<sub>0</sub> se corresponde con los p&iacute;xeles con niveles [0&hellip;t] y la clase C<sub>1</sub> se corresponde con los p&iacute;xeles con niveles [t+1,&hellip;,L-1]. Por tanto, la  probabilidad de que un p&iacute;xel sea asignado a cada una de estas clases viene dada  por (OTSU, 1979; KALATHIYA, 2014):</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0302316.jpg" alt="fo03" width="578" height="177"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Donde <img src="/img/revistas/rcci/v10n3/fo0402316.jpg" alt="fo04" width="213" height="23"> son la suma de las intensidades e intensidad promedio hasta el nivel t  respectivamente para la imagen. Mientras que <img src="/img/revistas/rcci/v10n3/fo0502316.jpg" alt="fo05" width="183" height="22">es la intensidad media global para toda la imagen. Con las definiciones  antes realizadas se cumplen las siguientes relaciones:</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0602316.jpg" alt="fo06" width="525" height="140"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Con el fin de  evaluar la factibilidad del umbral (en el nivel t), se toman las siguientes  medidas de criterio discriminante (o medidas de la separabilidad entre clases)  utilizadas en el an&aacute;lisis discriminante como se muestra en la ecuaci&oacute;n (9).</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo0702316.jpg" alt="fo07" width="334" height="33"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Entonces el  problema se reduce a un problema de optimizaci&oacute;n, el cual consiste en buscar un  umbral t que maximice las funciones de objeto (las medidas de criterio) en la  ecuaci&oacute;n (9).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este punto de vista est&aacute; motivado por el hecho de que la varianza entre  clases es una medida de la diferencia entre dos partes. Cuanto mayor sea la  varianza entre clases, mayor es la diferencia entre las dos partes. Si la  varianza entre clases disminuye, esto implica cometer un error a la hora de  extraer un objeto del fondo de la imagen.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Como resultado, se hace que la  varianza entre clases sea m&aacute;xima, lo que implica que la probabilidad de error  sea m&iacute;nima. El umbral que contribuya a la mejor separaci&oacute;n de las clases en  niveles de gris, ser&iacute;a el mejor umbral. Esta es precisamente la esencia del  algoritmo de Otsu. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El umbral &oacute;ptimo t* que maximiza <img src="/img/revistas/rcci/v10n3/fo0802316.jpg" alt="fo08" width="28" height="24">se selecciona en la siguiente b&uacute;squeda secuencial para los valores de t  de 0 a L-1 mediante el uso de las cantidades acumuladas simple <img src="/img/revistas/rcci/v10n3/fo0902316.jpg" alt="fo09" width="217" height="24">o expl&iacute;citamente usando las ecuaciones (2; 3; 4) y (5): </font></p>     ]]></body>
<body><![CDATA[<p><img src="/img/revistas/rcci/v10n3/fo1002316.jpg" alt="fo10" width="470" height="95"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la ecuaci&oacute;n  (10), se observa que el c&aacute;lculo de la varianza entre clases requiere un gran  n&uacute;mero de operaciones matem&aacute;ticas de suma, multiplicaci&oacute;n y divisi&oacute;n. En el  caso especial de la divisi&oacute;n, su implementaci&oacute;n en hardware es dif&iacute;cil y ocupa  gran cantidad de recursos. Una posible soluci&oacute;n es el empleo del logaritmo, de  esta forma las operaciones de multiplicaci&oacute;n y divisi&oacute;n se convierten en sumas  y restas respectivamente. Por lo tanto, la ecuaci&oacute;n (10) puede ser transformada  de la siguiente manera:</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo1102316.jpg" alt="fo11" width="497" height="32"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La funci&oacute;n antilogaritmo no es requerida en este caso, ya que <img src="/img/revistas/rcci/v10n3/fo1202316.jpg" alt="fo12" width="120" height="24">alcanzan su  valor m&aacute;ximo para el mismo umbral.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este caso,  el umbral &oacute;ptimo puede ser obtenido como:</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/fo1302316.jpg" alt="fo13" width="323" height="31"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En el  algoritmo de Otsu, el c&aacute;lculo de la varianza entre clases tiene que ser iterado  para los niveles de L grises, y por lo tanto, el punto cr&iacute;tico a la hora de  implementar una arquitectura hardware correspondiente a dicho algoritmo se  encuentra en el c&aacute;lculo de la varianza entre clases. De ah&iacute; la importancia de  que se desarrolle una buena arquitectura para mejorar la eficiencia de este  algoritmo.</font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Arquitectura propuesta</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La  arquitectura propuesta correspondiente al algoritmo de Otsu se basa en la  ecuaci&oacute;n (12) y se muestra en la<a href="/img/revistas/rcci/v10n3/f0102316.jpg" target="_blank"> Figura 1</a>. El hardware se implementa usando la  programaci&oacute;n VHDL (Very High  Speed Integrated Circuit Hardware Description  Language) mediante la herramienta ISE 12.1 de la compa&ntilde;&iacute;a Xilinx y como  placa de desarrollo se emplea la Nexys2 (DIGILENT INC, 2008) de la compa&ntilde;&iacute;a Digilent, la cual  posee como dispositivo central un FPGA XCS500E.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La arquitectura  consiste en algunos m&oacute;dulos. Inicialmente las memorias RAM 1 y RAM 2 reciben  simult&aacute;neamente por ADDR de manera sincronizada con el flanco de subida de la  se&ntilde;al de reloj CLK, los valores de todos los p&iacute;xeles de la imagen que se le  aplica el algoritmo de Otsu. Estas memorias son de 256x16 bits y 256x24 bits  respectivamente, pues las im&aacute;genes que se emplean son en escala de grises y  tienen un tama&ntilde;o de 256x256 p&iacute;xeles.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la memoria RAM 1 se obtiene el histograma normalizado de la imagen. Por  ejemplo, si la imagen tiene 150 p&iacute;xeles con un valor de 200, esto implica que  en la posici&oacute;n 200 (C8H) de dicha memoria se encuentra el dato 150/(256*256) =  0,002288818359375, o sea, el n&uacute;mero 150 desplazado 16 veces a la derecha (0096H).  Es necesario resaltar que solamente se almacena la parte fraccionaria. Por otro  lado, en la memoria RAM 2 se obtiene el histograma normalizado de las intensidades  medias. Si se toman los mismos datos del ejemplo antes expuesto, se tiene que  en la posici&oacute;n 200 (C8H) de esta memoria se encuentra el dato 150*200/(256*256)  = 0,457763671875, o sea, el n&uacute;mero 30000 desplazado 16 veces a la derecha  (007530H). Es necesario resaltar que los ocho bits m&aacute;s significativos del dato  almacenado corresponden a la parte entera y los restantes 16 bits a la parte  fraccionaria.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El acumulador tambi&eacute;n recibe los mismos datos que las memorias. La funci&oacute;n  de este m&oacute;dulo es acumular la suma de todos los datos que recibe, estos datos  previamente se dividen entre 256*256 de manera similar a como se explic&oacute; en el  caso de las memorias. La suma total obtenida a partir de este m&oacute;dulo equivale a  sumar todos los valores almacenados en la memoria RAM 2, o sea, la intensidad  media global de toda la imagen.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f02">Figura 2</a> se muestra un  diagrama temporal de las se&ntilde;ales para el acceso a los m&oacute;dulos antes  mencionados. Se debe resaltar que cada uno de los 65536 (256*256) valores de  los p&iacute;xeles permanecen constantes durante dos per&iacute;odos de la se&ntilde;al de reloj  CLK, pues primero se realiza el proceso de lectura y despu&eacute;s el de escritura  sobre las memorias. Durante todo este tiempo la se&ntilde;al EN permanece a nivel  bajo. </font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/f0202316.jpg" alt="f02" width="503" height="248"><a name="f02"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una vez  recibidos todos los p&iacute;xeles de la imagen, se procede a calcular los umbrales.  Inicialmente se leen de las memorias los datos almacenados desde la primera  posici&oacute;n hasta la &uacute;ltima (256 posiciones), como se muestra en la <a href="#f03">Figura 3</a>. Con  el empleo de los registros y el sumador correspondiente se logra que la lectura  sea acumulativa. Por ejemplo, cuando se lea el valor del dato almacenado en la  segunda posici&oacute;n, este valor se le suma al dato almacenado en la primera  posici&oacute;n, el cual fue previamente le&iacute;do y registrado. Durante todo este tiempo  la se&ntilde;ales EN y WE permanecen a nivel alto y bajo respectivamente.</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/f0302316.jpg" alt="f03" width="441" height="188"><a name="f03"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Posteriormente, se realizan algunas operaciones de suma, resta,  multiplicaci&oacute;n y logaritmo seg&uacute;n la ecuaci&oacute;n (12). El c&aacute;lculo de esta &uacute;ltima operaci&oacute;n  se realiza mediante un m&oacute;dulo descargado gratuitamente de (OPENCORES, 2011), el  cual es reutilizado tres veces. Estos m&oacute;dulos trabajan en punto fijo y tienen  una latencia de tres pulsos de reloj, por lo que esta se&ntilde;al es tomada  directamente de la placa que se emplea, la cual tiene una elevada frecuencia de  50 MHz. Se debe resaltar que debido a la compuerta AND de tres entradas  empleada, los m&oacute;dulos LOG 1, LOG 2 y LOG 3, s&oacute;lo van a trabajar despu&eacute;s que se  reciban todos los datos de la imagen y cuando la se&ntilde;al de reloj CLK se  encuentre a nivel alto.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El &uacute;ltimo m&oacute;dulo (MAXIMO) recibe los 256 datos resultantes de todo el  proceso antes descrito, determina cu&aacute;l de ellos es el mayor, y, por &uacute;ltimo,  muestra la posici&oacute;n de la memoria correspondiente al mismo, o sea, el umbral  &oacute;ptimo.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Debido a que el algoritmo de Otsu en muchas aplicaciones constituye  solamente una etapa de estas, se decide empaquetar la arquitectura implementada  como un m&oacute;dulo IP para su empleo en un sistema h&iacute;brido hardware-software basado  en un m&oacute;dulo IP del procesador Microblaze (XILINX INC, 2010) conectado a distintos m&oacute;dulos IP que act&uacute;an como perif&eacute;ricos. Esta  interconexi&oacute;n se realiza a trav&eacute;s de un bus de conexi&oacute;n de prop&oacute;sito general  denominado PLB (<em>Processor Local Bus</em>).  Todo este sistema se implementa mediante el entorno Xilinx Platform Studio de  la compa&ntilde;&iacute;a Xilinx.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la <a href="#f04">Figura 4</a> se muestra el diagrama de bloques de la plataforma de  desarrollo.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El perif&eacute;rico  UART se encarga de la recepci&oacute;n de la imagen que se desea procesar y una vez terminado  el procesamiento realiza la transmisi&oacute;n del resultado, ambos procesos se llevan  a cabo por v&iacute;a RS-232. El resultado tambi&eacute;n es mostrado en los diodos LEDs que  posee la placa mediante el perif&eacute;rico Puestos E/S. El Controlador de  Interrupciones se encarga de manejar las interrupciones de los perif&eacute;ricos que  as&iacute; lo requieran.</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/f0402316.jpg" alt="f04" width="368" height="229"><a name="f04"></a></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">RESULTADOS Y DISCUSI&Oacute;N </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los resultados  del dise&ntilde;o implementado se analizan en t&eacute;rminos de exactitud y cantidad de recursos  internos del FPGA consumidos. Para el primer caso, se utilizan seis im&aacute;genes  diferentes de entrada, estas im&aacute;genes son de las m&aacute;s empleadas en la literatura  especializada, las cuales se muestran en la <a href="#f05">Figura 5</a>.</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/f0502316.jpg" alt="f05" width="312" height="254"><a name="f05"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Con el  prop&oacute;sito de comparar los valores umbrales &oacute;ptimos de cada una de las seis  im&aacute;genes anteriores que se obtienen a partir del sistema dise&ntilde;ado, se emplea la  funci&oacute;n graythresh() del software Matlab. Esta funci&oacute;n tambi&eacute;n se basa en el  algoritmo de Otsu. En la Tabla 1 se muestran los resultados obtenidos empleando  ambas alternativas.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la Tabla 1 se muestra que con ambas alternativas se obtienen valores de  umbrales muy parecidos, lo cual refleja una buena exactitud de la arquitectura  propuesta. Sin embargo, si se aumenta el n&uacute;mero de bits correspondientes a la  parte fraccionaria de los m&oacute;dulos LOG 1, LOG 2 y LOG 3; entonces los resultados  obtenidos por la arquitectura propuesta pueden ser a&uacute;n m&aacute;s exactos.</font></p>     <p align="center"><img src="/img/revistas/rcci/v10n3/t0102316.jpg" alt="t01" width="278" height="168"></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un resumen de los recursos internos ocupados en el FPGA por la  plataforma de desarrollo (<a href="#f04">Figura 4</a>) se puede apreciar en la <a href="#t02">Tabla 2</a>. Los  valores que se encuentran entre par&eacute;ntesis en la segunda y cuarta columna se  refieren a la arquitectura propuesta correspondiente al algoritmo de Otsu  &uacute;nicamente (<a href="/img/revistas/rcci/v10n3/f0102316.jpg" target="_blank">Figura 1</a>).</font></p>     ]]></body>
<body><![CDATA[<p align="center"><img src="/img/revistas/rcci/v10n3/t0202316.jpg" alt="t02" width="380" height="93"><a name="t02"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Seg&uacute;n la <a href="#t02">Tabla 2</a>, la cantidad de recursos internos del FPGA que ocupa la  arquitectura propuesta en la <a href="/img/revistas/rcci/v10n3/f0102316.jpg" target="_blank">Figura 1</a> es m&iacute;nima, aun cuando se considere la  plataforma de desarrollo de la Figura 4, la cantidad de recursos ocupados no  llegan a la mitad de los disponibles. De esta forma quedan suficientes recursos  libres que pueden ser utilizados para incorporar nuevos m&oacute;dulos IP con el  prop&oacute;sito de implementar una aplicaci&oacute;n m&aacute;s compleja. En tal caso, este proceso  es muy sencillo debido a la plataforma de desarrollo escogida.</font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>CONCLUSIONES</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este trabajo se ha dise&ntilde;ado una arquitectura hardware usando el  lenguaje VHDL para el desarrollo del algoritmo de Otsu. El empleo de m&oacute;dulos  que realizan la operaci&oacute;n logaritmo es una variante para evitar divisores y  multiplicadores, aunque estos &uacute;ltimos no se pueden eliminar en su totalidad.  Esta arquitectura se convierte en un m&oacute;dulo IP para facilitar su empleo en un  sistema h&iacute;brido hardware-software, el cual tambi&eacute;n es propuesto. Los valores de  umbral generados por el sistema propuesto para distintas im&aacute;genes se comparan  con los obtenidos mediante el software Matlab y los resultados son  satisfactorios. El total de recursos internos del FPGA consumidos por la  arquitectura propuesta es bajo, aun cuando se tenga en cuenta el sistema  general no excede a la mitad de los mismos, de esta manera quedan recursos  libres suficientes para implementar nuevas aplicaciones correspondientes al  procesamiento de im&aacute;genes.</font></p>     <p>&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS  BIBLIOGR&Aacute;FICAS</B></font>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">MITHE, R., INDALKAR, S., DIVEKAR, N. Optical Character Recognition.  International Journal of Recent Technology and Engineering, 2013, 2(1): p.  72-75.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">PAK, M., KIM, S. A Study on Defect Ispection System using Efficient  Thresholding Method. INFORMATION, 2016, 19(2): p. 623-630.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">DEL FARO, M., BOSZORMENYI, L. State-of-art and future challenge in  video scene detection: a survey. Multimedia Systems, 2013, 19(5): p. 427-454.     </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">OCHS, P., MALIK, J., BROX, T. Segmentation of moving objects by long term  video analysis. IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE,  2014, 36(6): p. 1187-1200.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">SENTHILKUMARAN, N., VAITHEGI, S. Image Segmentation By Using Thresholding  Techniques For Medical Images. Computer Science &amp; Engineering: An  International Journal, 2016, 6(1).    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">SI-QI, H., LEI, W. A Survey of Thresholding Methods for Image  Segmentation. Systems Engineering and  Electronics, 2010, 24(6): p. 91-94.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">HAHNLE, A., SAXEN, F., HISUNG, M., BRUNSMANN, K. FPGA-Based Real-Time  Pedestrian Detection on High-Resolution Images. IEEE Conference on Computer  Vision and Pattern Recognition, 2013: p. 629-635.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">OTSU, N. A threshold selection method from gray-level histogram. IEEE Transactions on Systems, Man and Cybernetycs, 1979, 9(1): p. 62-66.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">HERN&Aacute;NDEZ, E., CABRERA, A., S&Aacute;NCHEZ, S. IMPLEMENTACI&Oacute;N  H&Iacute;BRIDA HARDWARE SOFTWARE DEL ALGORITMO DE DETECCI&Oacute;N DE ROSTROS DE VIOLA-JONES  SOBRE FPGA. UNIVERSIDAD, CIENCIA Y TECNOLOG&Iacute;A, 2012, 16(63): p. 114-124.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">SEZGIN, M., SANKUR, B. Survey over image thresholding techniques and  quantitative performance evaluation. Journal  of Electronic Imaging, 2004, 13(1): p. 146-165.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ZHIYONG, H., LINING, S., LIGUO, C. Fast Computation of Threshold Based on  Otsu Criterion. Acta Electronica Sinica, 2013, 41(2): p. 267-272.     </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">KALATHIYA, S., PATEL, V. Implementation of Otsu Method With Two Different  Approaches. International Journal of Software &amp; Hardware Research in  Engineering, 2014, 2(2): p. 24-28.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">DIGILENT INC. Digilent Nexys2 Board Reference Manual. [En l&iacute;nea].  2008. [Consultado el: 16 de marzo de 2015]. Disponible  en: <a href="http://digilent.org/Data/Products/NEXYS2/Nexys2_rm.pdf">http://digilent.org/Data/Products/NEXYS2/Nexys2_rm.pdf</a> </font><!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">OPENCORES. Logarithm function, base-2, single-cycle ::  Overview. [En l&iacute;nea]. 2011. [Consultado el: 20 de marzo de 2015]. Disponible en: Disponible en: <a href="http://opencores.org/project,fast_log">http://opencores.org/project,fast_log</a> </font><!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">XILINX INC. MicroBlaze Processor  Reference Guide. [En l&iacute;nea]. 2010. [Consultado el: 16 de  marzo de 2015]. Disponible en: <a href="http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_4/mb_ref_guide.pdf">http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_4/mb_ref_guide.pdf</a></font><p align="left">     <p name="_ENREF_1">&nbsp;</p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 25/03/2016    <br> Aceptado: 30/06/2016</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MITHE]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[INDALKAR]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[DIVEKAR]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Optical Character Recognition]]></article-title>
<source><![CDATA[]]></source>
<year>2013</year>
<volume>2</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>72-75</page-range></nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[PAK]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[KIM]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Study on Defect Ispection System using Efficient Thresholding Method.]]></article-title>
<source><![CDATA[]]></source>
<year>2016</year>
<volume>19</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>623-630</page-range></nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[DEL FARO]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[BOSZORMENYI]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[State-of-art and future challenge in video scene detection: a survey]]></article-title>
<source><![CDATA[]]></source>
<year>2013</year>
<volume>19</volume>
<numero>5</numero>
<issue>5</issue>
<page-range>427-454</page-range></nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[OCHS]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[MALIK]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[BROX]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Segmentation of moving objects by long term video analysis.]]></article-title>
<source><![CDATA[]]></source>
<year>2014</year>
<volume>36</volume>
<numero>6</numero>
<issue>6</issue>
<page-range>1187-1200</page-range></nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[SENTHILKUMARAN]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
<name>
<surname><![CDATA[VAITHEGI]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Image Segmentation By Using Thresholding Techniques For Medical Images.]]></article-title>
<source><![CDATA[]]></source>
<year>2016</year>
<volume>6</volume>
<numero>1</numero>
<issue>1</issue>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[SI-QI]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
<name>
<surname><![CDATA[LEI]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Survey of Thresholding Methods for Image Segmentation.]]></article-title>
<source><![CDATA[]]></source>
<year>2010</year>
<volume>24</volume>
<numero>6</numero>
<issue>6</issue>
<page-range>91-94</page-range></nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HAHNLE]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[SAXEN]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[HISUNG]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[BRUNSMANN]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
</person-group>
<source><![CDATA[FPGA-Based Real-Time Pedestrian Detection on High-Resolution Images.]]></source>
<year>2013</year>
<page-range>629-635</page-range></nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[OTSU]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A threshold selection method from gray-level histogram]]></article-title>
<source><![CDATA[]]></source>
<year>1979</year>
<volume>9</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>62-66</page-range></nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HERNÁNDEZ]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[CABRERA]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[SÁNCHEZ]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="es"><![CDATA[IMPLEMENTACIÓN HÍBRIDA HARDWARE SOFTWARE DEL ALGORITMO DE DETECCIÓN DE ROSTROS DE VIOLA-JONES SOBRE FPGA]]></article-title>
<source><![CDATA[]]></source>
<year>2012</year>
<volume>16</volume>
<numero>63</numero>
<issue>63</issue>
<page-range>114-124</page-range></nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[SEZGIN]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[SANKUR]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Survey over image thresholding techniques and quantitative performance evaluation.]]></article-title>
<source><![CDATA[]]></source>
<year>2004</year>
<volume>13</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>146-165</page-range></nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ZHIYONG]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
<name>
<surname><![CDATA[LINING]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[LIGUO]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Fast Computation of Threshold Based on Otsu Criterion]]></article-title>
<source><![CDATA[]]></source>
<year>2013</year>
<volume>41</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>p. 267-272</page-range></nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KALATHIYA]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[PATEL]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Implementation of Otsu Method With Two Different Approaches]]></article-title>
<source><![CDATA[]]></source>
<year>2014</year>
<volume>2</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>24-28</page-range></nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[DIGILENT]]></surname>
<given-names><![CDATA[INC]]></given-names>
</name>
</person-group>
<source><![CDATA[Digilent Nexys2 Board Reference Manual]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[PENCORES]]></surname>
</name>
</person-group>
<source><![CDATA[Logarithm function, base-2, single-cycle]]></source>
<year>2011</year>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[XILINX]]></surname>
<given-names><![CDATA[INC]]></given-names>
</name>
</person-group>
<source><![CDATA[MicroBlaze Processor Reference Guide]]></source>
<year>2010</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
