thumb|290x290px|Página sugestiva do ImageJ com abas Desenvolvedor Wayne Rasband NIH Página
O ImageJ é um programa de computador de domínio público, feito em Java destinado a processamento de imagens. Ele foi desenvolvido no National Institutes of Health. O ImageJ foi feito para ser um programa de arquitetura aberta que pode ser expandido via Java :en:plugins e macros.
ImageJ pode rodar em Microsoft Windows, no classic Mac OS, macOS, Linux, e no Sharp Zaurus PDA, e o código fonte é de livre acesso.
O seu principal desenvolvedor, Wayne Rasband, se aposentou no National Institute of Mental Health em 2010, mas continua contribuindo para o desenvolvimento do software, que por ser de domínio público com o código fonte acessível, permite o desenvolvimento compartilhado por pessoas de todo o mundo.
O ImageJ possibilita a exibição, edição, análise, processamento além da facilidade em salvar e imprimir imagens de 8 bits, 16 bits e 32 bits. Com ele também é possível fazer a leitura de vários formatos de imagem, bem como TIFF, GIF, JPEG, BMP, DICOM, FITS e “crus”. O programa suporta “pilhas” com uma série de imagens que compartilham uma única janela. Como o software trata-se de vários segmentos, operações classificadas como demoradas como a leitura de um arquivo de imagem, pode ser executável em paralelo com outras operações.
Em razão de sua grande adaptabilidade – sendo esta, inclusive, uma das pedras fundamentais de sua elaboração -, encontra-se atualmente na internet diversas variações do ImageJ sendo utilizadas para os mais variados propósitos, adotando características únicas e muito úteis para profissionais e entusiastas do processamento de imagem. Dentre estas, cita-se o ImageJ2 - ou ImageJDev , uma nova versão da arquitetura iniciado em dezembro de 2009 e focada no trato de dados de imagem multidimensionais, contendo dentre suas funcionalidades o recurso de atualização automática e melhorada capacidade de desenvolvimento -, o Fiji – apenas um pacote de expansão do ImageJ convencional, de uma única vez plugins muito utilizados -, e o AstroImageJ – versão do software contendo plugins e macros específicos para o trato de imagens astronômicas.
História Em 1987, o programador Wayne Rasband da Research Services Branch (RSB), da NIH, lançou um programa de análise de imagem livre, chamado NIH Image, com o objectivo de permitir aos utilizadores desenvolver novos aplicativos, para as diversas áreas de análise de imagem. Este programa foi desenvolvido para o sistema operativo da Mac. Com o aumento do número de utilizadores houve a necessidade de desenvolver o programa para o sistema operativo da Microsoft, sendo este realizado pela empresa Scion Corporation. No entanto, esta adaptação não foi satisfatória, pois continha muitos “bugs” e era paga, não dando a possibilidade da comunidade de utilizadores de a corrigir. O aumento de utilizadores da Microsoft na comunidade científica e o aparecimento da linguagem de programação Java, fizeram com que o Wayne Rasband desenvolve-se um programa idêntico ao NIH Image, mas que pudesse ser utilizado nos diferentes sistemas operativos. A este novo programa o autor chamou de ImageJ, para manter a ligação ao NIH Image, com o “J” a indicar o desenvolvimento em Java.Schneider, C., Rasband, W., Eliceiri, K., NIH Image to ImageJ: 25 years of image analysis Nature Methods, vol. 9 (7), July 2012, pp: 671-675 O primeiro lançamento foi em 23 de setembro de 1997, com a versão 0.50 e, neste momento, está na versão 1.51k, lançado no dia 1 de Março de 2017.https://imagej.nih.gov/ij/notes.htmlhttp://aprendis.gim.med.up.pt/index.php/ImageJ#cite_note-25anos-4
Principais funcionalidades thumb|500px|Barra de menus do ImageJ|centro O ImageJ tem funções normais de um programa de processamento de imagens, desde funções simples como as de manipulação de arquivo, passando por funções mais simples de processamento da imagem, a funções mais elaboradas de medição de parâmetros, filtragens etc. Com ele você pode trabalhar com uma imagem colorida ou em nível de cinza, e usar diversos formatos de imagens como o TIFF, o PNG, o GIF, o JPEG, o formato BMP, DICOM, FITS e muitos outros. O ImageJ permite também que você trabalhe com um sequência, ou pilhas, além de canais de cores.
Outro artifício de especial interesse disponível no software é sua ampla gama de ferramentas voltadas à filtragem e processamento direto de imagens, tornando o procedimento mais simples que o observado através de outros meios.
Dentre as muitas metodologias disponíveis, destaca-se: o filtro de suavização – borra a imagem utilizada ou a seleção ao substituir cada pixel pela média de sua vizinhança -, o filtro de aguçamento – técnica oposta à de suavização, visando destacar elementos presentes na imagem ou seleção -, detecção de bordas, detecção de máximo – encontra o ponto máximo em uma imagem, servindo de ferramenta muito útil em técnicas de clusterização -, tratamento de contraste – atuando sobre o histograma da imagem selecionada, através do alongamento ou equalização -, ruídos – permitindo ao usuário adicionar ou suavizar os mais variados tipos de ruído em uma imagem -, produção de sombras, binarização, entre outros.
Exemplos de funções de processamento de imagens disponíveis no ImageJ:
Histograma O histograma, também conhecido como distribuição de frequências, é a representação gráfica em colunas ou em barras (retângulos) de um conjunto de dados previamente tabulado e dividido em classes uniformes ou não uniformes. No ImageJ ele mostra a frequência com que as cores aparecem na imagem utilizada.Um histograma é um gráfico de frequência com o objetivo de demonstrar como um determinado dado está distribuído em uma amostra, população, experimento, dentre outros elementos de analise, medindo o número de ocorrência desse determinado dados no meio onde é analisado. É utilizado nas mais variadas áreas para de levantar infinitos tipos de dados e com isso servir como auxilio nas tomadas de decisões pelos devidos responsáveis. Exemplos de aplicações muito usuais estão em setores administrativos, que tendem a tomar decisões para ampliar a produção, melhorar rendimento, estimular os colaboradores, no campo da computação é utilizado no processamento de imagens, determinando cores distorções, padrões, geometria, luminosidade etc.
No caso aplicado ao ImageJ o histograma calcula e exibe a distribuição dos níveis de cinza na imagem, seleção, cenas. No eixo horizontal (X; i; abscissa), estão representados os variados níveis de cinzas encontrados na imagem, logo no eixo vertical (Y, j, ordenadas) o número de pixels referente a cada nível de cinza no eixo horizontal. Analisando a imagem do histograma acima (a mesma já está em 8-bits),notamos algumas informações que o mesmo nos oferece, sendo elas, o tamanho da imagem em pixels, a quantidade de pixels (Count), média (Mean) correspondente a distribuição de 0 a 255, desvio padrão (StdDev), o valor mínimo, o valor máximo, a moda e o número de pixels que contem essa moda (Mode) e logo abaixo do gráfico uma escala em degrade da maior concentração de cinza até a menor. Ao clicar no comando List (Lista), nos é apresentada uma tabela com duas colunas e 256 linhas com os determinados níveis de cinza e a quantidade de pixels encontrados com esse valor. Algumas funções de macro como getHistogram e Plot.getValues podem ser usadas em conjunto para obtenção de valores e dados de contagem ao clicar no botão lista.
Perfil de uma linha Nessa funcionalidade o ImageJ mostra através de um gráfico a cor de cada pixel na linha marcada sobre a imagem utilizada. É possível andar com essa linha na imagem.
Pseudocor O processamento de imagem em pseudocores consiste em atribuir cores a valores de cinza om base em determinados critérios. O termo pseudo ou falsa cor é utilizados para diferenciar o processo de atribuir cores a imagem monocromáticas a partir dos processos associados a imagem de cor verdadeira. A principal utilização das pseudocores é na visualização interpretação humana de eventos, em tons de cinza, em uma imagem ou sequencia de imagens.
Corte Utilizada para retirar um pedaço de uma imagem, seja para se trabalhar somente nele ou para removê-lo da imagem a ser trabalhada. No ImageJ existem várias maneiras de se realizar isso, entre elas estão: a opção Cut, Crop, Clear e Clear Outside. Inversão de preto e branco
Em alguns casos se faz necessária a utilização da ferramenta de inversão de cores, que troca os tons de preto por tons de brancos correspondentes ou vice e versa. Dessa forma, dependendo da imagem a ser trabalhada, podem-se obter mais detalhes ou até mesmo gerar uma facilitação em sua análise com o uso dessa funcionalidade.
Primeiramente, para que seja possível o uso de tal ferramenta no ImageJ é necessário converter a imagem para 8 bits em Image – Type – 8-bit, após feita essa etapa pode-se realizar a inversão em Image – Lookup Tables – Invert LUT. centro|miniaturadaimagem|371x371px|Imagem antes do processo de inversão de preto e branco e após o processo, respectivamente.
Binarização É uma importante ferramenta para o processamento de imagens, e um passo fundamental para o processo de segmentação, ou retirada do objeto em observação do seu fundo. Operações de imagens binárias Ajuste de contraste e iluminação Torna possível o controle do contraste e da iluminação através da opção Brightness/Contrast, onde é mostrado o histograma da imagem e tem-se as opções de modificar a faixa de cores que se quer trabalhar. Filtragem espacial em processamento digital de imagem algumas operações são feitas trabalhando com os valores do pixel da vizinhança de um determinado pixel e os correspondentes valores de uma sub imagem tem as mesmas dimensões de sua vizinhança.Tal resultado é chamado de filtro o máscara.
Filtros usados no domínio espacial operam diretamente nos pixels da imagem a notação desta operação é dada por:
g(x.y)=T[f(x.y)],onde f(x,y) corresponde a imagem entrada, e g(x,y) a imagem processada pelo filtro T.
O processo consiste em mover o filtro ponto a ponto da ponto da imagem.Em cada ponto, a resposta do filtro é calculada segundo uma função pre-determinada.
os filtro podem ser divididos em duas classes:
Lineares- que são aqueles que suavizam e realçam detalhes da imagem,e reduzem os ruídos sem alterar o nível de cinza médio da imagem
Filtragem em frequência
Esse tipo de filtro é muito utilizado para a retirada de ruídos em altas ou baixas frequências. Para se trabalhar no domínio da frequência em imagens, normalmente se utiliza a transformada de Fourier. No ImageJ é possível obter a transformada de Fourier através da opção FFT. Operações de imagens Através da opção Image Calculator é possível realizar diversas operações com duas imagens, como a soma, subtração, multiplicação, divisão, diferenciação, copia, operação lógica AND, OR e XOR, entre outras. Identificação de bordas Utilizando a opção Find Edges é possível obter as bordas de um objeto em uma imagem. Quando utilizada, as bordas são marcas e tudo que não for considerado borda é retirado da imagem. Contagem de partículas Através da opção Analyse Particles é possível realizar a contagem de partículas de uma imagem, sendo possível delimitar a área mínima e a circularidade das partículas a serem contadas, também é possível modificar a forma de saída dos resultados. Medições diversas em objetos Definição de escala Essa funcionalidade permite ao usuário definir mensurar com relativa exatidão o dimensionamento de objetos presentes em determinada imagem partindo da existência de uma escala conhecida predeterminada, de forma a possibilitar a conversão de um comprimento em pixels em metros ou centímetros, por exemplo.