ImageJ
ImageJ es un programa de procesamiento digital de imagen de dominio público programado en Java desarrollado en la agencia estadounidense Institutos Nacionales de Salud.[1] ImageJ fue diseñado con una arquitectura abierta que proporciona extensibilidad vía plugins Java y macros (macroinstrucciones) grabables.[2] Se pueden desarrollar plugins de escaneo personalizado, análisis y procesamiento usando el editor incluido en ImageJ y un compilador Java. Los plug-ins escritos por usuarios hacen posible resolver muchos problemas de procesado y análisis de imágenes, desde imágenes en vivo de las células en tres dimensiones,[3] procesado de imágenes radiológicas,[4] comparaciones de múltiples datos de sistema de imagen [5] hasta sistemas automáticos de hematología.[6] La arquitectura de plugins y entorno de desarrollo integrados de ImageJ lo han convertido en una plataforma popular para enseñar procesamiento de imagen.[7] [8]
ImageJ | ||
---|---|---|
Captura de ImageJ | ||
Información general | ||
Tipo de programa | procesamiento digital de imagen | |
Desarrollador | Wayne Rasband (NIH) | |
Licencia | Dominio público | |
Idiomas | inglés | |
Información técnica | ||
Programado en | Java | |
Plataformas admitidas | Java | |
Versiones | ||
Última versión estable | 1.54f ( 30 de junio de 2023 (1 año, 4 meses y 18 días)) | |
Enlaces | ||
ImageJ puede ejecutarse en un applet en línea, como aplicación ejecutable, o en cualquier computadora con Máquina virtual Java 5 o superior. Hay también distribuciones descargables para Microsoft Windows, Mac OS, Mac OS X, Linux, y Sharp Zaurus PDA. El código fuente de ImageJ está disponible gratuitamente.[9]
El desarrollador principal del proyecto, Wayne Rasband, está en el Research Services Branch del National Institute of Mental Health.
Características
editarImageJ puede mostrar, editar, analizar, procesar, guardar, e imprimir imágenes de 8 bits (256 colores), 16 bits (miles de colores) y 32 bits (millones de colores). Puede leer varios formatos de imagen incluyendo TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS, así como formatos RAW (formato). ImageJ aguanta pilas o lotes, una serie de imágenes que comparten una sola ventana, y es multiproceso, de forma que las operaciones que requieren mucho tiempo se pueden realizar en paralelo en hardware multi-CPU. ImageJ puede calcular el área y las estadísticas de valor de píxel de selecciones definidas por el usuario y la intensidad de objetos umbral (thresholded objects). Puede medir distancias y ángulos. Se puede crear histogramas de densidad y gráficos de línea de perfil. Es compatible con las funciones estándar de procesamiento de imágenes tales como operaciones lógicas y aritméticas entre imágenes, manipulación de contraste, convolución, análisis de Fourier, nitidez, suavizado, detección de bordes y filtrado de mediana. Hace transformaciones geométricas como ampliar, rotación y flips. El programa es compatible con cualquier número de imágenes al mismo tiempo, limitado solamente por la memoria disponible.
Historia
editarAntes del lanzamiento de ImageJ en 1997, existía un programa de análisis de imagen conocido como NIH Image desarrollado para ordenadores Macintosh de sistema operativo preMac OS X. El desarrollo de este software continúa en la forma de Image SXM, una variante para investigación física de imágenes microscópicas escaneadas. También fue desarrollada una versión para Windows – portada por Scion Corporation, llamada Scion Image for Windows. Ambas versiones están aún disponibles.[10]
Calibrado de imagen con ImageJ
editarPara calibrar una imagen hay que traducir los píxeles a distancias, respecto de algún punto de la imagen. Para ello lo que se hace es incluir en la imagen un objeto de dimensiones conocidas. Entonces, midiendo cuántos píxeles ocupa este elemento en la imagen se podrá saber cuanto mide un píxel.
Por ejemplo, utilizamos una pelota que sabemos que mide 6,7 cm. Para ver a cuántos píxeles corresponde esta medida utilizamos las siguientes herramientas de ImageJ:
Se podría simplemente ampliar la imagen en la zona de la pelota y mirar cuántos píxeles ocupa utilizando la posición del cursor en un extremo y otro de la pelota. Para ampliar utilizamos el comando de la lupa que se muestra en la Figura 1 de la barra de herramientas.
Otra opción más precisa, es trazar un perfil de intensidades sobre la pelota. Para ello seleccionamos en la barra de herramientas de ImageJ (Figura 1) el botón que tiene una línea, el quinto empezando por la izquierda.
Esta herramienta nos permite dibujar una recta sobre la imagen en la zona del objeto colocado del que sabemos su medida real y después ver qué valores toma la imagen a lo largo de dicha recta.
Una vez que trazamos la recta apretamos la combinación de teclas ctrl + k e ImageJ nos dibuja un perfil de la intensidades de la recta. Como la pelota es más oscura que el fondo, identificaremos en el perfil los píxeles de la pelota como los de menor valor de gris (Gray Value) y así determinaremos cerca de qué píxel comienza y finaliza el objeto.
Realce del contraste de una imagen con ImageJ
editarSi queremos realzar el contraste de una imagen desenfocada lo podemos conseguir haciendo que los niveles de gris de la imagen, definidos en un intervalo [Min, Max], pasen a ocupar todo el intervalo posible [0, 255].
Observamos los valores de intensidad de la imagen en la ventana del Histograma: Count, Min, Max, Mean. Count es el número de píxeles de la imagen y Mean el valor medio de la intensidad. Count*Mean es la intensidad total en la imagen.
El primer paso es restar el valor Min a toda la imagen. Con los desplegables de la barra de herramientas de la Figura 1 hacemos Process/Math/Subtract y en la casilla Value ponemos el valor de Min.
La resta se va a notar en el histograma, ya que lógicamente arrancará de cero. Ejecutamos de nuevo Analyze/Measure para comprobar que Min=0 y ver el nuevo valor de Max.
Ahora el segundo paso es reescalar el intervalo. Hacemos el cociente (256/Max) y multiplicamos toda la imagen por ese valor. Process/Math/Multiply, y en la casilla Value ponemos el valor de 256/Max. El resultado es la misma imagen pero con mayor contraste.
Para conocer la nueva intensidad total, volvemos a Analyze/Measure.
Filtrado de imagen con ImageJ
editarImageJ permite filtrar imágenes tanto en el dominio espacial como en el dominio de frecuencias.
Filtrado en el dominio espacial
editarEl primer paso para aplicar un filtro en el dominio espacial es definir una máscara de filtrado. La imagen filtrada será el resultado de convolucionar la máscara con la imagen original.
Dependiendo de cómo sea la máscara, existen distintos tipos de filtros (suavizado, realce de bordes, etc)
Ejemplos
editarFiltros de suavizado
editarFiltro de Media (Mean). Es un filtro de suavizado. Tiene una máscara uniforme, por tanto lo que hace es sustituir el valor de cada pixel de la imagen por el promedio de ese pixel y los de alrededor. El efecto de suavizado será mayor cuanto mayor sea el tamaño de la máscara.
Filtro de Mediana (Median). Igual que el anterior, tiene el efecto de suavizar los contrastes en la imagen. En este caso se sustituye el valor de cada pixel por el valor de la mediana del conjunto de píxeles que lo rodean.
Filtro Gaussiano (Gaussian Blur). La máscara tiene la forma de una gaussiana. El efecto del suavizado es mayor cuanto mayor es la sigma de la gaussiana.
Filtros de realce de bordes
editarFiltro de Sobel (Find Edges). El operador de Sobel trabaja con dos máscaras: una que realza los bordes en el eje X de la imagen y otra que hace lo propio en el eje Y
Bordes: La determinación de bordes de los elementos de una imagen se puede conseguir por diversos medios. En ImageJ se puede utilizar la función que se llama Find Edges que practica un filtro con lo Operador Sobel.
Filtro Laplaciano (Sharpen). Su objetivo es el mismo que el del filtro de Sobel: realzar los bordes de la imagen.
Filtrado en el dominio frecuencial
editarLos pasos a seguir para realizar un filtrado en el dominio frecuencial son:
1) Transformar la imagen original al dominio de frecuencias aplicando la FFT (Fast Fourier Transform) o transformada rápida de Fourier
2) Aplicar el filtrado en el dominio de frecuencias.
3) Aplicar la transformada de Fourier inversa para devolver la imagen filtrada al dominio espacial
La ventaja de filtrar en el dominio frecuencial es que es matemáticamente más sencillo, debido a que la trasformada de Fourier de la convolución de dos funciones es igual a la suma de las transformadas de Fourier de cada una de ellas.Es decir, en el dominio de frecuencias basta con sumar las transformadas de la imagen y del filtro, mientras que en el dominio espacial hay que aplicar una convolución.
Ejemplos
editarFiltrado pasa-alta en el dominio frecuencial
Un filtrado pasa-alta elimina las componentes de baja frecuencia. En la transformada de Fourier de la imagen, las componentes de baja frecuencia se encuentran en la zona central, de modo que para eliminarlas hay que poner a cero todos los píxeles de un disco central de la FFT. Calculando la transformada inversa, tendremos la imagen filtrada en el dominio espacial. Al hacer esto, estaremos eliminando también la componente de continua de la imagen, de modo que para obtener el resultado final tendremos que sumar la imagen filtrada (con realce de bordes) y la imagen original.
Macros en ImageJ
editarImageJ proporciona extensibilidad vía plugins Java y macros (macroinstrucciones) grabables. En este apartado se indica cómo grabar una macro.
La forma más sencilla de grabar una macro es la siguiente:
- Se lanza la aplicación ImageJ y en la barra de menús (Figura 1) pulsamos: Plugins/Macros/Record…
- Se abre una ventana (Figura 4) que nos permite dar el nombre a nuestra macro (prueba):
- ImageJ ha comenzado a grabar, todo lo que hagamos a partir de ahora queda registrado en la ventana en forma de instrucciones. De esta manera podemos ver como se invocan las instrucciones de ImageJ:
- Una vez terminemos lo que queremos grabar y repetir, pulsamos Create y nos permite grabar el registro de las acciones que hemos llevado a cabo en un fichero. La extensión por defecto es ijm, aunque se puede dar cualquier extensión. El fichero generado es tipo texto, de modo que con un editor de texto se puede abrir y editar.
- Es necesario instalar la macro. Para instalar la macro: Plugins/Macros/Install… Seleccionamos el fichero que hemos guardado (prueba.ijm) y el programa nos indica que la macro ha sido instalada. Podemos ver en el menú Macro que aparece el nombre de la macro instalada:
- Para ejecutar la macro podemos seleccionar el nuevo elemento creado en el menú o bien seguir los siguientes pasos: - Plugins/Macros/Run… - Seleccionamos de nuevo el fichero generado en el paso 4.
Ejemplos de instrucciones:
makeRectangle(x, y, lado_x, lado_y); Crea una ROI rectangular con el centro situado en las coordenadas (x,y), y de tamaño horizontal lado_x, y tamaño vertica lado_y.
makeOval(x, y, diam_x, diam_y); Crea una ROI circular con el centro situado en las coordenadas (x,y), y con diámetro x = diam_x, y diámetro y = diam_y.
run("Measure"); Calcula el área, la media, la desviación estándar, la moda, el mínimo y el máximo de los píxeles contenidos en una ROI. Las magnitudes calculadas se pueden configurar en la ventana Results.
Ejemplos:
Referencias
editarNotas al pie
editar- ↑ Collins TJ (julio de 2007). «ImageJ for microscopy». BioTechniques 43 (1 Suppl): 25-30. PMID 17936939. doi:10.2144/000112517.
- ↑ Girish V, Vijayalakshmi A (2004). «Affordable image analysis using NIH Image/ImageJ». Indian J Cancer 41 (1): 47. PMID 15105580.
- ↑ Eliceiri K, Rueden C (2005). «Tools for visualizing multidimensional images from living specimens». Photochem Photobiol 81 (5): 1116-22. PMID 15807634. doi:10.1562/2004-11-22-IR-377.
- ↑ Barboriak D, Padua A, York G, Macfall J (2005). «Creation of DICOM–aware applications using ImageJ». J Digit Imaging 18 (2): 91-9. PMID 15827831. doi:10.1007/s10278-004-1879-4.
- ↑ Rajwa B, McNally H, Varadharajan P, Sturgis J, Robinson J (2004). «AFM/CLSM data visualization and comparison using an open-source toolkit». Microsc Res Tech 64 (2): 176-84. PMID 15352089. doi:10.1002/jemt.20067.
- ↑ Gering E, Atkinson C (2004). «A rapid method for counting nucleated erythrocytes on stained blood smears by digital image analysis». J Parasitol 90 (4): 879-81. PMID 15357090. doi:10.1645/GE-222R.
- ↑ Burger W, Burge M (2007). Digital Image Processing: An Algorithmic Approach Using Java. Springer. ISBN 1846283795.
- ↑ Dougherty, G (2009). Digital Image Processing for Medical Applications. Cambridge University Press. ISBN 9780521860857.
- ↑ Rueden CT, Eliceiri KW (julio de 2007). «Visualization approaches for multidimensional biological image data». BioTechniques 43 (1 Suppl): 31, 33-6. PMID 17936940. doi:10.2144/000112511.
- ↑ «NIH Image: About». Consultado el 18 de noviembre de 2008.
Enlaces externos
editar- Rapidminer Image Processing Extension (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). - herramienta para procesamiento de imágenes y extracción de imágenes
- (en inglés) Página oficial de ImageJ
- (en inglés) ImageJ Documentation Wiki
- (en inglés) ImageJ User and Developer Conference
- (en inglés) ImageJ for CUDA GPUs Accelerate ImageJ using GPUs
- (en inglés) Review of ImageJ by Forrest Mims III in The Citizen Scientist, the journal of the Society for Amateur Scientists.
- (en inglés) ImageJ en línea Un recurso para ejecutar ImageJ sin instalarlo.
Distribuciones
editar- (en inglés) ImageJ para Microscopy - de McMaster Biophotonics Facility (Facultad de Biofotónica de la Universidad McMaster)
- (en inglés) Fiji (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). (Fiji is Just ImageJ): Una distribución que incluye ImageJ; soportados varios idiomas (lenguajes) de escritura (véase Scripting). Fiji se enfoca en el registro, costura (stitching), segmentación y visualización tridimensional de imágenes.
Plug-ins
editar- (en inglés) Página de ImageJ para Plugins
- (en inglés) ImageJ Plugin Project @ Sourceforge.net
- Plugins de imagen biomédica Archivado el 15 de enero de 2020 en Wayback Machine.
- The Image Stabilizer plugin Archivado el 22 de abril de 2016 en Wayback Machine.: Estabiliza lotes de imágenes inestables.
- Conjunto de plugins OptiNav: Aeroacústica, histogramas en tiempo real, deconvolutions.
- Gran conjunto de plugins por Gabriel Landini
- Plugins de morfología matemática, por Dimiter Prodanov [1]
- Plugins de edición 3D de Albert Cardona
- Plugins para superficie de evaluación de GCSCA
- TrakEM2: un plugin para minería de datos morfológicos, modelado 3D, y costura de imagen (stitching), registro, edición y anotación
- Varios plugins por Ulf Dittmer: Expression, HPGLReader, OpenGLExample, Pixellate, Seam Carving, Warp, Animated PNG Writer
- SIFT-implementation por Stephan Saalfeld: Una ligera implantación SIFT bajo GPL, véase Algoritmo SIFT
- bUnwarpJ Archivado el 14 de diciembre de 2009 en Wayback Machine. por Ignacio Arganda-Carreras: un plugin para registro consistente y elástico de imágenes.
- Plugins del Biomedical Imaging Group (EPFL)
- (en inglés) Teaching image-processing programming in Java Archivado el 6 de julio de 2011 en Wayback Machine. con plugins de ImageJ
NIH Image
editar- (en inglés) Página principal de NIH Image
- (en inglés) Descarga de Scion Image