Arquivo da tag: imagej

Quick Set Scale, macro para o ImageJ!

Esse tópico é um pouco velho, pois acabei ficando sem tempo pra publicar!

Como vocês já devem ter lido por aqui, gosto e uso bastante o ImageJ, um software de processamento de imagens. Uma das tarefas que faço frequentemente é medir “coisas” que estudo. Essas coisas podem ser células, embriões, larvas, seres do plâncton, ou bolachas-do mar adultas.

Para fazer as medições você precisa calibrar a foto informando ao programa qual é o tamanho (em cm, mm, µm, etc…) de cada pixel. Por exemplo, se cada pixel equivale a 1cm e a célula que fotografei tiver 800 pixels de diâmetro, o diâmetro real desta célula é de 800cm (8 metros!).

escala

Para descobrir que valor usar é simples, tire uma foto de uma escala numérica (uma régua, ou algo que você saiba o tamanho com precisão) , e lembre-se de não alterar o zoom e posição da câmera ou aumento do microscópio quando bater suas fotos. Se precisar mudar, bata outra foto da escala com a nova configuração!

Como eu tenho imagens com diferentes aumentos, mas sempre tirados com a mesma câmera, objetivas, microscópio e lupa, fiz uma pequena macro para facilitar minha vida. A macro simplesmente calibra a foto de acordo com valores pré-determinados pelo usuário (meus equipamentos, um microscópio e uma lupa). Pra usar você precisa descobrir quais valores você deve colocar! Não use os valores que estão no código original! Tentei deixar bem fácil para alterar esses valores e adicionar outros equipamentos.

Pra usar é só salvar o código como um arquivo .txt, colocar na pasta ImageJ/macros/toolsets e reiniciar o ImageJ. Esse código foi melhorado pelo Wayne Rasband, que criou o ImageJ, quem quiser ver a versão anterior tem aqui (não use a versão anterior… é só para quem tiver curiosidade em comparar as mudanças). O Quick Set Scale foi incorporado na versão 1.39g do ImageJ!

Depois coloco umas fotos:-)

// Quick Set Scale v0.99 - 15/10/2007
// Copyleft - Bruno C. Vellutini
// Macro specific for Compound Microscope Zeiss Axioplan2 and Stereoscope Zeiss Stemi SV11 APO
// with photos taken with a Nikon Coolpix 4500 camera (max zoom)
// If you are using this macro you need to input your own values
// specific for your scope and camera set up

var global = false;

macro "Unused Tool - " {}

macro "Quick Set Scale Action Tool - C037L1cfcL1a1eLfafeL8b8dL5b5dLbbbdT0707qT4707uT8707iTa707cTe707k" {

Dialog.create("Quick Set Scale");
// Write the name of the equipments you want to quickly set scale in the array below
Dialog.addChoice("Equipment:", newArray("Microscopio Zeiss Axioplan2", "Lupa Zeiss Stemi SV11 APO"));
Dialog.show();
equip = Dialog.getChoice();

// Options for Axioplan2
if (equip=="Microscopio Zeiss Axioplan2") {
// Write the magnifications available for your equipment
magnifications = newArray("2.5x", "10x", "20x", "40x", "100x");
scales = newArray("2.0450",  "0.5277", "0.2571", "0.1333", "0.05255");
setScale("Zeiss Axioplan2", magnifications, scales);
}

// Options for Stereoscope.
if (equip=="Lupa Zeiss Stemi SV11 APO") {
magnifications = newArray("0.6x", "0.8x", "1.0x", "1.2x", "1.6x", "2.0x", "2.5x", "3.2x", "4.0x", "5.0x", "6.6x");
scales = newArray("5.788712012", "4.246284501",  "3.318620781", "2.631509697", "2.087682672",
"1.680672269", "1.353784505",  "1.06835324", "0.850340136", "0.661371287",  "0.506072874");
setScale("Lupa Zeiss Stemi SV11 APO", magnifications, scales);
}
}

function setScale(name, mag, scale) {
Dialog.create(name);
Dialog.addChoice("Objective:", mag);
Dialog.addCheckbox("Global Scale", global);
Dialog.show();
magnification = Dialog.getChoice();
global = Dialog.getCheckbox();
options = " distance=1 pixel=1 unit=micron known=";
for (i=0; i
if (magnification==mag[i]) options = options + scale[i];
}
if (global) options = options + " global";
run("Set Scale...", options);
}

Juaninhas…

Editei um vídeo. Veja o vídeo.

As fotos foram tiradas com uma câmera digital convencional apoiada numa caixa, sem tripé. O roteiro não existia, inventamos algo na hora. Sim, as joaninhas podem caminhar dando cambalhotas, todo biólogo já observou este fenômeno. ;-)

Peguei as fotos e criei uma stack (pilha/seqüência de imagens) no ImageJ. Rodei o plugin StackReg, ferramenta para alinhar uma seqüência de fotos de acordo com o conteúdo da imagem. Foi este processamento que criou a dinâmica do enquadramento, como no momento que a grande abelha entra em cena.

As imagens foram convertidas para 8bit para eu conseguir processar tudo no meu computador… não tive memória para processar as fotos coloridas! Usei alguns filtros para criar os efeitinhos de contorno, também no ImageJ. Depois importei a seqüência para o Cinelerra e fiquei experimentando… acabou saindo isso!

Aqui vão algumas imagens capturadas do vídeo que você pode ver ouvindo a música que coloquei na trilha (Green Apple do Scrambled Mache)!

Green Apple

Primeiro teste com o seam-remover no ImageJ!

A pouquíssimo tempo coloquei um vídeo sobre um novo método de redimensionar imagens digitais sem causar grandes deformações na imagem, o Seam Carving for Content-Aware Image Resizing. Imaginei que iria demorar pra que um programa fosse lançado para uso comum, e… realmente ainda não foi lançado nada.

No entanto, Johannes Schindelin acabou de divulgar um plugin do ImageJ que utiliza o mesmo conceito de omitir linhas com menor energia, ao redimensionar imagens. Essa é uma primeira versão, e como ele mesmo disse, ainda está bem crua em termos de funcionalidades, mas o fato é que… funciona!

Vejam aqui o teste que eu fiz!

Original (1280 x 800 pixels):

screenshotnelas

Original mostrando linha vertical de menor energia na janela do ImageJ:

seam marked

Imagem somente com a largura reduzida de 1280 para 800 pixels usando o plugin seam-remover:

screenseamed

Imagem redimensionada pelos métodos convencionais (mesma redução de 1280 para 800 pixels):

screenscaled

Funciona, não?

Fora alguns artefatos na barra inferior o resto até que ficou bom! O jovem exemplar de bolacha do mar (bichinho da foto) saiu quase intacto da manipulação!