¿Investigación en Guatemala?

July 6, 2012 5 comments

Estado de la investigación en Guatemala

Para empezar a responder la pregunta ¿cuál es el estado de la investigación en Guatemala?, tenemos que saber que ha pasado en Guatemala durante este tiempo. Hoy en día es más fácil encontrar información, sin embargo encontrar datos actualizados para Guatemala se me dificulto un poco. Sin embargo a continuación presento mis descubrimientos.

Como vemos en los gráficos de abajo, sí hay (o ha habido) investigación en nuestro país. La producción de artículos se ha incrementado durante la última década, para tener un máximo (según SCImago) de 125 documentos en 2009. Y en 2010 tuvimos un descenso de 2 artículos. (Espero que no sea la nueva tendencia.)

Además, noten que El Salvador ha empezado a tener un rápido crecimiento en el numero de artículos a partir del 2008. Será interesante ver como evoluciona esta tendencia, y ver si mantiene ese mismo ritmo. Sin duda, el líder de la región es Costa Rica con un crecimiento notable de artículos durante la última década (con un total de 531 documentos en 2010). Eso explica y promueve que grandes corporaciones decidan establecer sedes en este país en lugar de otros países de la región.

Noten que el gráfico no muestra a Honduras, ya que la herramienta me dejaba mostrar solamente 4 países para comparar, y entre Honduras y Nicaragua no había tanta diferencia. Para mayor información revisen el link del gráfico.

guate vs ca

Comparación de publicaciones en Centro América (No. de documentos por año)

Un análisis por área revela que la mayor parte de la investigación se ha concentrado en Medicina y en Agricultura y Biología. Esto no es extraño, si pensamos en las necesidades del país, la mayoría de la investigación se dedico a mejorar la producción de alimentos (como el maíz), y a mejorar el cuidado médico de la población. Por ende, estos campos florecieron, y han producido artículos en sus respectivas ramas.

Documentos por area

Documentos por area

documents vs h-index

Documentos vs. H-indice (año 2010)

Sin embargo, me sorprendió que Ingeniería no ha despegado en este periodo de tiempo. Los datos muestran que apenas hemos producido un documento por área en los pocos años que han habido publicaciones. ¿Qué sucedió? En general, el numero de publicaciones citables (estos documentos incluyen artículos, revisiones, y conferencias) tiene su máximo en 2008 con 3 documentos!

engineering docs

No. de documentos publicados en el área Ingeniería en Guatemala

Es interesante notar que a partir del año 2006, la colaboración internacional se ha incrementado. Al punto en que en 2008 todos los artículos publicados son gracias a dicha colaboración. Y de nuevo, la pregunta ¿qué sucedió en 2010?

El problema

Las publicaciones, en general, requieren tiempo y recursos (entiéndase recurso humano así como monetario). Y la mayor desventaja es que los resultados no son inmediatos. Después de un descubrimiento, en el mejor de los casos, se necesitan varios años para llevar la idea a un estado de producción donde el público pueda aprovecharla. En el peor caso, según el punto de vista de la industria, la idea es interesante y avanza el conocimiento de la humanidad, pero no puede capitalizarse en algún producto en el futuro inmediato. Este último caso es el que detiene la inversión en investigación y desarrollo, creo yo, en un ambiente como el de Guatemala.

La visión de la mayoría de empresas es copiar modelos que han sido verificados en otra parte, proveer servicios (dentro del país o la región), y rezar que el paradigma no cambie para que su modelo de negocio no se destruya.  Y así, esos mismos inversionistas y empresarios, que manejan la producción, son también los que promueven la educación superior en Guatemala. Ellos serán los que pasen los conocimientos a las siguientes generaciones. Lastimosamente, lo que no se transmite es el emprendimiento, mucho menos la investigación y el desarrollo. (Si ustedes hacen algo diferente, los invito a que compartan ese entusiasmo con otras personas y que lo multipliquen. Necesitamos más de esos locos que se atreven a llevar la contraria. Noten que lo que comento acá es mi opinión y experiencia. De igual lugar habrán lugares donde esto esta cambiando, pero no es la regla.)

Creo que lo que fallan en ver (de nuevo la mayoría) que al emprender con base en alguna investigación, y luego desarrollar esas ideas, tendrá beneficios a largo plazo. Primero, pone al negocio adelante de muchos otros competidores, y dificultará a los competidores a alcanzarnos. Segundo, nos posiciona en un nicho estratégico en donde no cualquiera puede entrar (de nuevo, gracias al tiempo, esfuerzo, y recursos necesarios para poder alcanzar cierto nivel dentro de la investigación). Y finalmente, al ser los dirigentes de cierta idea podemos dirigir a la masa que viene detrás de nosotros.

Ahora, podrán pensar que todo esto suena muy bonito, y que en una utopía todo eso podría funcionar. El modelo se ha visto que funciona, China inicio copiando tecnología y ahora empieza a liderar los mercados. Lo mismo se ve en India, que iniciaron como una fuente de outsourcing, y luego las compañías terminaron moviendo toda la cadena (desde lo más básico como investigación y desarrollo) a dicho país. Corea también es un ejemplo en donde la investigación logro hacer despegar al país. Lo que diferencia a estos países y Guatemala es la visión de país y el capital para invertir, podrán pensar. Y están en lo correcto. Entonces, ¿de dónde sacamos para capacitar, levantar laboratorios, y empezar a producir investigación para luego iniciar un desarrollo?

Una alternativa

El mayor problema del financiamiento de la investigación es el costo de iniciar un laboratorio, y el desarrollo de las ideas. Sin embargo, podemos pensar en las ciencias teóricas que no requieren más que recurso humano para empezar a producir ideas, aunque un poco difícil de capitalizar esas ideas posteriormente. Luego, podemos ver a las áreas de investigación cuyos experimentos pueden ser modelados dentro de una computadora. Estos son más fáciles de iniciar ya que el costo se puede distribuir dentro del equipo de simulación (que puede escalarse posteriormente y compartirse) y el recurso humano. ¿Y dónde simulamos hoy en día? En una computadora!

Esto me lleva a pensar en las áreas de investigación relacionadas a la computación. En estas áreas, para desarrollar una idea basta con tener una computadora y un investigador! (Además del costo de las publicaciones, el área de servidores para mantener las aplicaciones que funcionaran, etc. Pero esos son detalles de implementación.) Es por esto que creo que iniciar con áreas de investigación que necesiten unicamente una computadora para poder hacer simulaciones, o para evaluar algoritmos puede ser el “estartazo” que necesita Guatemala para agarrar impulso e iniciar un movimiento de investigación y desarrollo.

Además, el mercado que se tiene en las ciencias de la computación es global, y a diferencia de otras áreas de investigación cuya repercusión es local, hasta que se logre expandir la red de producción a otras áreas geográficas, el alcance de la investigación basada en computación es global instantáneamente gracias al internet. Fácilmente puedo ver como en un centro de investigación en Guatemala se puede gestar el nuevo modelo de búsqueda y almacenamiento de información a través de internet, un nuevo Google; o una nueva forma de relacionarse entre las personas y de explotar esa información, el siguiente Facebook o Google+.

Finalmente, la pieza que hace falta son las empresas que quieran subirse al barco de la investigación y desarrollo. Apostar por Guatemala y su gente; y creer que se puede hacer las cosas de una manera diferente. Entonces, un modelo donde se una la academia y la industria, para iniciar el proceso, sera necesario; para que luego el gobierno siga la inercia que se ha ganado, y se una completando la triple hélice necesaria para una función optima de la investigación y desarrollo en Guatemala.

Conclusión

En conclusión, creo que una alternativa viable para arrancar la investigación en Guatemala es apostar por áreas de investigación que puedan iniciarse con una inversión mínima, como una computadora. Uno de estos casos, es apostar por áreas en las ciencias de la computación. En este escenario, una instalación mínima de computadoras y personal capacitado puede iniciar varios proyectos que puedan capitalizarse. Además, estas áreas tienen la ventaja agregada de que el mercado en el cual se pueden explotar las ideas desarrolladas es global. Lo cual extiende los beneficios y puede atraer más inversión. Una serie de normas puede promover que los proyectos exitosos retornen cierta parte de sus ingresos (de igual manera que lo hacen las incubadoras de negocios) para poder promover otras áreas de investigación que necesiten más capital. Y así iniciar un efecto en cadena que arranque al colectivo académico de Guatemala de ese estado letárgico en el que se encuentra.

Adicionalmente, es importante notar que Guatemala no va a salir adelante sino empezamos a colocar un valor agregado en nuestros productos. El vender materia prima (en bruto) no nos da una ventaja directa en comparación a otros países de la región. Sin embargo, una población educada se convierte en un recurso que puede explotarse desde cualquier parte del mundo, de forma tal que se puede iniciar a exportar la fuerza de trabajo capacitada, similarmente como lo han hecho otros países (entiéndase India).

Cleaning up…

July 5, 2012 Leave a comment

Hi, I’ve been quite busy lately. I’m cleaning up the blog, and posting a little bit about the research.

I hope to put more of the stuff I’ve been working one. I just have to find the time.

So, the “Research” menu has now its the first post (of many I hope), and I will be adding more soon.

Stay tuned…

Categories: News

Dark Image Enhancement: Channel Division

July 5, 2012 2 comments

I’ve been busy for a while working in some research topics. One of those produced some results, and the final product is a paper! (Ok, it is exciting for me :mrgreen: )

Channel Division

I designed and created the Channel Division algorithm for dark image enhancement. So, the main idea of the algorithm is to process the image, check for its contents, and build a transformation function according to such context. Thus, the algorithm is context-aware, in the sense that it adapts itself to each image.

Some results:

Street Original Street Enhanced
Girl Original Girl Enhanced
Original Channel Division

Note that the enhancement method adapts to different images, and reveals the details in the dark regions. At the same time, it maintain the colors and tries to avoid artifacts.

Paper information

AbstractCurrent contrast enhancement algorithms occasionally result in artifacts, over-enhancement, and unnatural effects in the processed images. These drawbacks increase for images taken under poor illumination conditions. In this paper, we propose a content-aware algorithm that enhances dark images, sharpens edges, reveals details in textured regions, and preserves the smoothness of flat regions. The algorithm produces an ad hoc transformation for each image, adapting the mapping functions to each image’s characteristics to produce the maximum enhancement. We analyze the contrast of the image in the boundary and textured regions, and group the information with common characteristics. These groups model the relations within the image, from which we extract the transformation functions. The results are then adaptively mixed, by considering the human vision system characteristics, to boost the details in the image. Results show that the algorithm can automatically process a wide range of images—e.g., mixed shadow and bright areas, outdoor and indoor lighting, and face images—without introducing artifacts, which is an improvement over many existing methods.

The bibliography (human readable):

Ramirez Rivera, A.; Ryu, B.; Chae, O.; , “Content-Aware Dark Image Enhancement through Channel Division,” Image Processing, IEEE Transactions on , vol.21, no.9, pp.3967-3980, Sept. 2012
doi: 10.1109/TIP.2012.2198667 (IEEExplore)

And BibTeX for those who may need it:


@ARTICLE{RamirezRivera2012,
 author={Ramirez Rivera, A. and Ryu, B. and Chae, O.},
 journal={Image Processing, IEEE Transactions on},
 title={Content-Aware Dark Image Enhancement through Channel Division},
 year={2012},
 month={sept},
 volume={21},
 number={9},
 pages={3967--3980},
 keywords={},
 doi={10.1109/TIP.2012.2198667},
 ISSN={1057-7149},}

Database

Also, we created a small database for the algorithm testing. It contains 10 different images in difficult lighting conditions. If you are interested, you can download it here.

Using TikZ Chains Library with labeled edges extension

January 19, 2012 1 comment

The other day I need to create a diagram, and went in the TikZ way. I was using the chains library to produce the diagram. But I face some problems, I needed to add labels to the edges created by the chain. However, this is not supported natively by the library.

I found a cool code that exemplifies how to add the edges to the chain, but it removes the old notation

\chainin (node) [join=with srcNode by style]

and make you use a new definition. However, I still need to use the styles and the source node notation. So, I start digging in the chains library code and modify it to allow the use of the label notation from other examples. The fix is

\makeatletter
\def\tikz@lib@parse@join#1{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \tikz@lib@parse@join@by by \pgf@stop%
  \else%
    \pgfutil@in@{with }{#1}%
    \ifpgfutil@in@% 'with [by] [label]'
      \pgfutil@in@{by }{#1}%
      \ifpgfutil@in@% 'with by [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'with by label'
          \tikz@lib@parse@join@with@by@label#1\pgf@stop%
        \else% 'with by'
          \tikz@lib@parse@join@with@by#1\pgf@stop%
        \fi%
      \else% 'with [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'with label'
          \tikz@lib@parse@join@with@label#1\pgf@stop%
        \else% with
          \tikz@lib@parse@join@with@by#1 by \pgf@stop%
        \fi%
      \fi%
    \else% '[by] [label]'
      \pgfutil@in@{by }{#1}%
      \ifpgfutil@in@% 'by [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'by label'
          \tikz@lib@parse@join@by@label#1\pgf@stop%
        \else% 'by'
          \tikz@lib@parse@join@by#1\pgf@stop%
        \fi%
      \else% '[label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'label'
          \tikz@lib@parse@join@label#1\pgf@stop%
        \else%
          \tikz@lib@parse@join@by#1 by \pgf@stop%
        \fi%
      \fi%
    \fi%
  \fi%
}
\def\tikz@lib@parse@join@with@by@label with #1 by #2 label #3\pgf@stop{%
  \tikzset{after node path={(#1)edge[every join,#2]#3(\tikzchaincurrent)}}%
}
\def\tikz@lib@parse@join@with@label with #1 label #2\pgf@stop{%
  \tikzset{after node path={(#1)edge[every join]#2(\tikzchaincurrent)}}%
}
\def\tikz@lib@parse@join@by@label by #1 label #2\pgf@stop{%
  \tikzset{after node path={\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)edge[every join,#1]#2(\tikzchaincurrent)\fi}}%
}
\def\tikz@lib@parse@join@label label #1\pgf@stop{%
  \tikzset{after node path={\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)edge[every join]#1(\tikzchaincurrent)\fi}}%
}
\makeatother

This allows one to use the chains like:

\chainin (node) [join=with anotherNode by myStyle label {node[above] {some Tag}}];
\chainin (node) [join=by myStyle label {node[above] {some Tag}}];

Note that the order needs to be maintained, so you can use [with] [label] [tag] and omit any of those, while the order is maintained. A minimal working example is below:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes,% for the rectangle
                chains,% provides the chains
                scopes}% allows to replace \begin{scope} \end{scope} with {}

\makeatletter
\def\tikz@lib@parse@join#1{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \tikz@lib@parse@join@by by \pgf@stop%
  \else%
    \pgfutil@in@{with }{#1}%
    \ifpgfutil@in@% 'with [by] [label]'
      \pgfutil@in@{by }{#1}%
      \ifpgfutil@in@% 'with by [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'with by label'
          \tikz@lib@parse@join@with@by@label#1\pgf@stop%
        \else% 'with by'
          \tikz@lib@parse@join@with@by#1\pgf@stop%
        \fi%
      \else% 'with [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'with label'
          \tikz@lib@parse@join@with@label#1\pgf@stop%
        \else% with
          \tikz@lib@parse@join@with@by#1 by \pgf@stop%
        \fi%
      \fi%
    \else% '[by] [label]'
      \pgfutil@in@{by }{#1}%
      \ifpgfutil@in@% 'by [label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'by label'
          \tikz@lib@parse@join@by@label#1\pgf@stop%
        \else% 'by'
          \tikz@lib@parse@join@by#1\pgf@stop%
        \fi%
      \else% '[label]'
        \pgfutil@in@{label }{#1}%
        \ifpgfutil@in@% 'label'
          \tikz@lib@parse@join@label#1\pgf@stop%
        \else%
          \tikz@lib@parse@join@by#1 by \pgf@stop%
        \fi%
      \fi%
    \fi%
  \fi%
}
\def\tikz@lib@parse@join@with@by@label with #1 by #2 label #3\pgf@stop{%
  \tikzset{after node path={(#1)edge[every join,#2]#3(\tikzchaincurrent)}}%
}
\def\tikz@lib@parse@join@with@label with #1 label #2\pgf@stop{%
  \tikzset{after node path={(#1)edge[every join]#2(\tikzchaincurrent)}}%
}
\def\tikz@lib@parse@join@by@label by #1 label #2\pgf@stop{%
  \tikzset{after node path={\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)edge[every join,#1]#2(\tikzchaincurrent)\fi}}%
}
\def\tikz@lib@parse@join@label label #1\pgf@stop{%
  \tikzset{after node path={\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)edge[every join]#1(\tikzchaincurrent)\fi}}%
}
\makeatother

\begin{document}
\begin{tikzpicture}[
  nonterminal/.style={
    rectangle,
    minimum size=6mm,
    very thick,
    draw=red!50!black!50,
    top color=white, % a shading that is white at the top...
    bottom color=red!50!black!20, % and something else at the bottom
    font=\itshape
  },
  terminal/.style={
    rectangle,minimum size=6mm,rounded corners=3mm,
    very thick,draw=black!50,
    top color=white,bottom color=black!20,
    font=\ttfamily
  },
  every on chain/.style={join}, every join/.style={->}
]

\matrix[column sep=4mm] {
  % First row:
  & & & & \node (plus) [terminal] {+};&\\
  % Second row:
  \node (ui1)   [nonterminal] {unsigned integer};&
  \node (dot)   [terminal]    {.};               &
  \node (digit) [terminal]    {digit};           &
  \node (e)     [terminal]    {E};               &
  & % space in between
  \node (ui2) [nonterminal] {unsigned integer};\\
  % Third row:
  & & & & \node (minus)[terminal] {-};&\\
  };

{ [start chain]
  \chainin (ui1);
  \chainin (dot);
  \chainin (digit);
  \chainin (e);
  { [start branch=plus]
    \chainin (plus) [join=label {node[above left]{a label}}];
  }
  { [start branch=minus]
    \chainin (minus);
  }
  \chainin (ui2) [join=with chain/plus-end label {node[above right] {plus label}}, join=with chain/minus-end by dashed label {node [below right]{minus label}}];
}
\end{tikzpicture}
\end{document}

MWE of the code aboveHTH… :mrgreen:

PS. This post was inspired by this TeX.SX question, and I put this answer also there. You can found more about (La)TeX there.

MATLAB to PSTricks

November 4, 2011 Leave a comment

So, I’ve been trying to include more good looking figures into \LaTeX. I came across an script to convert from MATLAB to pstricks. However, it looks like it is not maintained anymore.

However, I made some little changes and fix a bug that I found. So, I want to put it here for anyone who is interested in use it.

The changes from the original:

  • The standalone file generation uses the standalone package, so (in theory) can compile faster. Because, for some strange reason, when I include these files into any document it takes forever to compile.
  • Now, the script can set any option from the options data structure (see the file to understand what I’m saying) individually, instead of passing the whole thing.
  • I fix a bug for data points outside of the axes not appearing.

The script is really good, although it has some limitations. Still, I will try to keep this entry up to date if I made some changes to the file.

So the script is here: fig2texps. To use the script easily call

h = figure; % a handle for the figure
plot(...);  % your figure here
fig2texps(h,'file.tex'); % basic invocation

To check all the options you can set see the globals struct in line 187.

Hope that helps… :mrgreen:

Updates:

(07.11.11) I found one bug, if the legend is outside of the figure the labels were place improperly. I hope it is fixed now.

(16.11.11) Fix bug when lines are out of the axis box. If two points were above or below the axis a line was drawn. Now, it is not.

Decimal alignment in LaTex tables

October 11, 2011 1 comment

So, I always look for this when I need it. However, I always keep forgetting it. So I decide to put it here for a little reminder.

Have you tried to align decimal in LaTex before? Did you do like this:

\begin{tabular}{r@{.}l}
  Heading\\
  3&14159\\
  16&2\\
  123&456\\
\end{tabular}

Have you try to type a lot of numbers using this notation? Painful, isn’t it? Is there an easier way?, you may ask. Yes there is, dcolumn to the rescue! The package dcolumn can save you a lot of typing time. The way to use it is really simple.

\usepackage{dcolumn}
\begin{tabular}{D{.}{.}{3.5}}
  \multicolumn{1}{c}{Heading}\\
  3&14159\\
  16&2\\
  123&456\\
\end{tabular}

Notice that in this example you need to use \multicolumn in the heading of that column. Nevertheless, dcolumn has a big notation, but you can replace it by a new definition using the \newcolumntype command. Then you would have something like this:

\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\begin{tabular}{d{3.5}}
  \multicolumn{1}{c}{Heading}\\
  3&14159\\
  16&2\\
  123&456\\
\end{tabular}

Hope this helps! :mrgreen:

Remove white space from figures in MATLAB

August 17, 2011 7 comments

Today I was struggling again with those annoying white spaces around the figures in MATLAB when you convert the figure to EPS, TIFF, PNG, JPEG or any other format. After some time, I discover the LooseInset property. This command will remove the white spaces and tight  the image borders.


set(gca,'LooseInset',get(gca,'TightInset'))

So, this will make the process of creating EPS figures in MATLAB easier. Sadly, it only work for square figures.

Hope that helps. :mrgreen:

%d bloggers like this: