﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ImageSurvey &#187; Métodos</title>
	<atom:link href="http://www.imagesurvey.com.br/category/metodos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.imagesurvey.com.br</link>
	<description>Processamento de imagens na prática</description>
	<lastBuildDate>Sat, 06 Aug 2011 14:14:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Debye-Scherrer Diffractogram</title>
		<link>http://www.imagesurvey.com.br/2010/10/debye-scherrer-diffractogram/</link>
		<comments>http://www.imagesurvey.com.br/2010/10/debye-scherrer-diffractogram/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 17:24:19 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Anima]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2183</guid>
		<description><![CDATA[Em Agosto deste ano o Anima &#8211; plataforma de pesquisa e desenvolvimento em processamento de imagens recebeu uma contribuição de um estudante de mestrado, que deu origem a uma funcionalidade bem particular, com aplicação na física de materiais &#8211; o Debye-Scherrer Diffractogram. O autor do trabalho á Diego Martins &#8211; ele pesquisou e desenvolveu o [...]]]></description>
			<content:encoded><![CDATA[<p>Em Agosto deste ano o <a href="http://www.animati.com.br/anima" target="_blank">Anima &#8211; plataforma de pesquisa e desenvolvimento em processamento de imagens</a> recebeu uma contribuição de um estudante de mestrado, que deu origem a uma funcionalidade bem particular, com aplicação na física de materiais &#8211; o <strong>Debye-Scherrer Diffractogram.</strong><span id="more-2183"></span></p>
<p>O autor do trabalho á <strong>Diego Martins</strong> &#8211; ele pesquisou e desenvolveu o método durante a conclusão da graduação, em 2007. Como trabalhos de graduação não entram no banco de teses e dissertações, colocamos o arquivo no site do Anima, na página de <a href="http://projetos.animati.com.br/projects/anima/wiki/Produ%C3%A7%C3%A3o_Cient%C3%ADfica#Gradua%C3%A7%C3%A3o">Produção Científica</a>.</p>
<h2>Sobre o método de captação da imagem</h2>
<blockquote><p>A câmera de Debye-Scherrer e outras variações do método dos pós são largamente usados, especialmente em metalurgia e geologia. Os principais méritos deste método são (1) a pequena quantidade de amostra necessária (menos de 0,1mg pode ser usado), (2) a cobertura praticamente completa das reflexões produzidas pela amostra e (3) a relativa simplicidade que o aparato e a técnica requerem [KLUG].<br />
Na câmera de Debye-Scherrer o espectro de difração do material é marcado em um filme fotográfico, disposto ao longo de uma câmera cilíndrica. Deste filme podemos extrair dois tipos de informação, a saber, as posições angulares dos máximos de difração, relacionadas com os espaços interplanares das reflexões, e as intensidades relativas destas linhas, que estão relacionadas com a composição da amostra.</p></blockquote>
<p>O importante aqui é saber que esta câmera produz uma imagem assim:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-2187" title="Debye-Scherrer" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/10/Deb.png" alt="" width="647" height="80" /></p>
<p><strong>Estas linhas mais claras são o que precisamos medir</strong>, as suas intensidades estão relacionadas à composição química do material.</p>
<h2>A medição</h2>
<p>Tradicionalmente, usa-se marcar um retângulo na região de interesse, e medir com uma ferramenta chamada de &#8220;profile&#8221;. Ela está presente em muitos programas de processamento de imagem, inclusive no ImageJ.</p>
<p>O problema é que o &#8220;profile&#8221; desconsidera a curvatura das linhas, gerando um resultado aproximado, mas não o melhor que se pode obter.</p>
<p>O método implemetado no Anima foi construido para <strong>considerar a curvatura das linhas</strong>, medindo as intensidades <strong>com mais precisão</strong>.</p>
<h2>Como se faz&#8230;</h2>
<p>Se você ainda não conhece o Anima, <a href="http://projetos.animati.com.br/projects/anima/wiki/Downloads">acesse a última versão em Webstart aqui</a>.</p>
<p>Se tudo correu bem, o programa pediu permissão, se instalou e já abriu. Se não, envie uma mensagem para mim (queremos corrigir os problemas que aparecerem!).</p>
<p>Usei a mesma imagem do post para os printscreens que você vai encontrar a seguir:</p>
<p>Primeiro abri a imagem e selecionei marcando a caixa de seleção da miniatura (o Anima funciona assim porque foi projetado para trabalhar imagens em lotes).</p>
<p><img class="aligncenter size-full wp-image-2192" title="Captura_de_tela" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/10/Captura_de_tela.png" alt="" width="444" height="301" /></p>
<p>Depois selecionei <em>Debye-Scherrer Diffractogram</em> no menu <em>Análise</em>. O método abre uma segunda janela com a imagem e dois círculos coloridos. Ajuste o tamanho para ver a imagem toda na janela.</p>
<p><img class="aligncenter size-full wp-image-2194" title="Captura_de_tela-1" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/10/Captura_de_tela-1.png" alt="" width="600" height="104" /></p>
<p>Agora vem o trabalho manual: você precisa mover os pontos nas extremidades das linhas para encontrar o centro e a curvatura da elipse que coincide com o formato das linhas.</p>
<p><img class="aligncenter size-full wp-image-2196" title="Captura_de_tela-2" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/10/Captura_de_tela-2.png" alt="" width="600" height="227" /></p>
<p>Quando ficar contente com o resultado, clique OK.</p>
<p>O resultado é um <strong>gráfico</strong> conhecido como <strong>difratograma</strong>, que representa a composição química do objeto que foi analisado. Este resultado também aparece em formato de <strong>tabela</strong> (à direita) e pode ser salvo em um <strong>arquivo texto</strong>, para importar na planilha eletrônica que preferir.</p>
<p><img class="aligncenter size-full wp-image-2200" title="Captura_de_tela-3" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/10/Captura_de_tela-3.png" alt="" width="600" height="467" /></p>
<h2>Referências</h2>
<p>Diego Schmaedech Martins. IMPLEMENTAÇÃO DE UM MÉTODO DE ANÁLISE DE IMAGENS PARA INTEGRAÇÃO DA INTENSIDADE DE RAIOS X ESPALHADOS EM UMA CÂMERA DE DEBYE-SCHERRER.<br />
Trabalho de Graduação, UFSM, 2007. Download: <a href="http://projetos.animati.com.br/attachments/download/35">tg-schmaedech.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/10/debye-scherrer-diffractogram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Segmentação de Ácinos</title>
		<link>http://www.imagesurvey.com.br/2010/07/segmentacao-de-acinos/</link>
		<comments>http://www.imagesurvey.com.br/2010/07/segmentacao-de-acinos/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 13:10:05 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>
		<category><![CDATA[cor]]></category>
		<category><![CDATA[detecção de bordas]]></category>
		<category><![CDATA[Gimp]]></category>
		<category><![CDATA[ImageJ]]></category>
		<category><![CDATA[morfologia matemática]]></category>
		<category><![CDATA[segmentação de imagens]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2108</guid>
		<description><![CDATA[Este post é uma análise de tentativas, não uma solução. Nele discuto algumas opções para resolver um problema de segmentação bem difícil, em uma lâmina de ácinos. Mas&#8230; o que são ácinos? Bom, eu também tive que perguntar: são &#8220;pequenas cavidades glandulares arredondadas, em forma de fundo-de-saco, que desemboca num canal excretor. Pode ser alveolar, [...]]]></description>
			<content:encoded><![CDATA[<p>Este post é uma análise de tentativas, não uma solução. Nele discuto algumas opções para resolver um problema de segmentação bem difícil, em uma lâmina de ácinos. Mas&#8230; o que são ácinos? Bom, eu também tive que perguntar: são &#8220;pequenas cavidades glandulares arredondadas, em forma de fundo-de-saco, que desemboca num canal excretor. Pode ser alveolar, salivar e etc&#8230;nesse caso é prostático.&#8221; Quem respondeu foi o Jorge Alves, que também permitiu o uso as imagens e forneceu o motivo deste texto.<span id="more-2108"></span></p>
<h2>A Imagem</h2>
<p><a href="http://www.imagesurvey.com.br/wp-content/uploads/2010/07/acinos.jpg"><img class="alignright size-full wp-image-2110" title="Ácinos" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/07/acinos.jpg" alt="" width="400" height="301" /></a>Esta imagem foi obtida a partir de uma lâminda de ácinos prostáticos em microscópio ótico. Os ácinos são as estruturas delimitadas pelas bordas arroxeadas, e vamos precisar contá-las, medir a área interna e total de cada uma delas.</p>
<p><strong>Repare no detalhe das linhas brancas quebrando as bordas</strong>. Este vai ser um grande problema&#8230;</p>
<p>Também não há uma escala nesta imagem, por que o método de captação do laboratório usa uma <strong>escala pré-definida</strong>, ou seja, eles fotografaram uma escala usando cada um dos aumentos do microscópio, e então é possível fazer a correspondência com as imagens que serão estudadas. Mas atenção: esta método só funciona quando se usa sempre a mesma câmera!</p>
<h2>Primeira tentativa</h2>
<p><img class="alignright size-full wp-image-2116" title="Montage_color" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/07/Montage_color.jpg" alt="" width="278" height="167" /><br />
Para amenizar o problema das linhas brancas, escolhi um <a href="http://www.imagesurvey.com.br/2010/03/filtro-de-mediana/">filtro de mediana</a> de tamanho 5. Foi o tamanho máximo que consegui usar sem destruir os limites das bordas.</p>
<p>Depois escolhi a banda verde, que mostrou maior contraste entre os elementos, e apliquei um <strong>threshold por média</strong>. Como o resultado foram bordas intermitentes, apliquei <a href="http://www.imagesurvey.com.br/2008/12/abertura-e-fechamento/">fechamento morfológico</a> em 6 iterações, para <strong>tentar fechar as bordas</strong>. O que aconteceu na realidade foi que acabei fundindo as bordas adjacentes entre si, obtendo as <strong>áreas internas dos ácinos</strong>, e mais alguns artefatos pequenos.</p>
<p style="text-align: center;"><img class="size-large wp-image-2119 aligncenter" title="Binarização" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/07/Montage2-1024x256.jpg" alt="" width="717" height="179" /></p>
<p>Apliquei o <em>Analyze Particles</em> nesta última imagem e o programa foi capaz de detectar todas as áreas internas de ácinos que não ficaram cortadas pela borda da imagem. Ainda assim um dos ácinos (mais ou menos no centro do quadrante inferior esquerdo) é menor do que um dos artefatos da segmentação, então descartar por tamanho não resolve o problema, mas pode ser que descartar por <strong>tamanho e circularidade</strong> resolva.</p>
<p>Mesmo sendo possível medir a área interna, esta estratégia não me dá nenhuma chance de medir o tamanho total dos ácinos (área interna + borda), já que funde as bordas de ácinos adjacentes.</p>
<h2>Outros métodos investigados</h2>
<p><strong>Crescimento de regiões</strong> e <strong>Mean-shift</strong> esbarraram no mesmo problema: as linhas brancas quebrando as bordas. Usar outros filtros de desfocar no lugar do filtro de mediana também não melhorou o resultado final.</p>
<p><img src="http://www.imagesurvey.com.br/wp-content/uploads/2010/07/Figura-002diferencapeq-300x201.jpg" alt="" title="Detacção de bordas com Gimp." width="300" height="201" class="alignleft size-medium wp-image-2124" /> A imagem ao lado foi obtida com o <a href="http://www.imagesurvey.com.br/2008/12/eu-uso-gimp/">Gimp</a>, usando uma detecção de bordas e sobrepondo o resultado à imagem original com uma operação de diferença. O resultado é interessante, mas ainda não resolve o problema.</p>
<p>Também procurei algumas demonstrações de contornos ativos, mas não encontrei nada que pudesse usar.</p>
<h2>Caminhos&#8230;</h2>
<p>Uma forma de analisar o problema seria partir da forma como nós, seres humanos conseguimos ver o contorno dos ácinos nesta imagem. Nós <strong>&#8220;sabemos&#8221;</strong> que eles são <strong>formados por uma área interna e uma borda</strong>. Então, para cada área interna (mais fácil de diferenciar), sabemos que há uma borda, <strong>com espessura mais ou menos homogênea e curvas suaves</strong>.</p>
<p>Isto implica em usar características estruturais, partindo de um objeto para encontrar outro. O problema com esta solução é que não há nada pronto &#8211; <strong>é preciso implementar</strong>. E só vai ser possível testar depois de gastar um bom tempo implementando&#8230;</p>
<p>Se o problema em questão envolve processar apenas algumas imagens (20, 30, ou até um pouco mais) pode ser que pintar a área total de cada ácino à mão seja um método aceitável. Tudo depende dos objetivos a longo prazo.</p>
<p>Se alguém tiver alguma ideia diferente por favor use os comentários!</p>
<h2>Até mais!</h2>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/07/segmentacao-de-acinos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Diâmetro de Feret</title>
		<link>http://www.imagesurvey.com.br/2010/06/diametro-de-feret/</link>
		<comments>http://www.imagesurvey.com.br/2010/06/diametro-de-feret/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 12:44:49 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>
		<category><![CDATA[feret]]></category>
		<category><![CDATA[ImageJ]]></category>
		<category><![CDATA[medidas morfológicas]]></category>
		<category><![CDATA[reconhecimento de padrões]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2083</guid>
		<description><![CDATA[Diâmetro de Feret é uma medida que ganhou importância na análise de partículas durante os últimos&#8230; 80 anos, pelo menos. É uma forma de caracterizar tamanho, que não depende da posição do objeto na imagem. Apesar da definição aparentemente simples, a evolução do conceito criou um conjunto de medidas. Feret Máximo e Feret Mínimo passaram [...]]]></description>
			<content:encoded><![CDATA[<p>Diâmetro de Feret é uma medida que ganhou importância na análise de partículas durante os últimos&#8230; 80 anos, pelo menos. É uma forma de caracterizar tamanho, que não depende da posição do objeto na imagem. Apesar da definição aparentemente simples, a evolução do conceito criou um conjunto de medidas. Feret Máximo e Feret Mínimo passaram a  ser usados amplamente como medidas que descrevem comprimento e largura de partículas.<span id="more-2083"></span></p>
<p>(Este artigo é inspirado em uma pergunta do leitor Grégori Troina &#8211; <strong>Obrigada!</strong>)</p>
<div id="attachment_2086" class="wp-caption alignright" style="width: 249px"><a href="http://commons.wikimedia.org/wiki/File:Diam%C3%A8tre_de_feret.jpg"><img class="size-medium wp-image-2086" title="Diamètre_de_feret" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/06/Diamètre_de_feret-239x300.jpg" alt="" width="239" height="300" /></a><p class="wp-caption-text">Diâmetro de Feret</p></div>
<p>Aparentemente a origem desta medida está em um artigo de 1931, publicado em Zurich por Feret, L. R., e <a href="http://www.nature.com/nature/journal/v162/n4113/abs/162329b0.html" target="_blank">neste artigo da Nature</a>, aparece como uma das alternativas para a medição de partículas. Se é esta a origem, o termo correto é Diâmetro de Feret, não Diâmetro de Ferret, como já usei em outro artigo. Mas ao pesquisar é bom procurar pelas duas formas, já que a última é bem comum também.</p>
<p>O motivo de procurar a origem é para dar uma ideia de como as ciosas acontecem na ciência. Provavelmente o cientista que primeiro documentou esta medida não sabia se ela seria útil para mais alguém, mas logo outros descobriram e passaram a usar, <strong>então o próprio conceito evoluiu</strong>.</p>
<p>No artigo da Nature (do qual só li o resumo porque tem que comprar para ler inteiro), a definição que aparece no resumo é <strong>&#8220;the perpendicular distance between parallel tangents touching opposite  sides of the profile&#8221;</strong>. Esta definição aparece também em trabalhos mais recentes, com pequenas variações, e no Help do ImageJ está assim:</p>
<blockquote><p><strong>The longest distance between any two points along the selection  boundary, also known as maximum caliper.</strong></p></blockquote>
<p>Seguindo o rastro das definições ao longo do tempo, pude perceber que, no início, a definição fazia menção à medida em qualquer direção, ou &#8220;uma direção arbitrária&#8221;. Então alguns pesquisadores, para conseguir uma medida independente da posição do objeto, passaram a usar o que chamaram de <strong>Feret Máximo</strong>, que é o Diâmetro de feret máximo que se pode encontrar na partícula.</p>
<p>Esta medida passou a ter mais valor que o Feret de direção arbitrária, e passou a ser conhecida, ela mesma, como <strong>Diâmetro de Feret</strong>.</p>
<p>Obs: Isto é só o que eu acho que aconteceu, baseado em alguns dos artigos que parei para ler, entre as mais de 1 600 ocorrências desta expressão do Google Scholar. Para um artigo científico eu teria que pesquisar bem mais.</p>
<p>A medida perpendicular ao Feret Máximo (ou simplesmente Feret) é o <strong>Feret Mínimo</strong>. Note que este não é o diâmetro mínimo encontrado na partícula, e sim a <strong>medida perpendicular ao máximo</strong>.</p>
<h2>Um exemplo no ImageJ</h2>
<p>O ImageJ tem esta medida implementada (na versão moderna). A sequencia de imagens abaixo é para dar uma ideia de como cheguei na imagem segmentada, mas não vou entrar em detalhes aqui. Vamos direto para a tabela de resultados.</p>
<div id="attachment_2091" class="wp-caption aligncenter" style="width: 701px"><img class="size-full wp-image-2091" title="Sementes" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/06/Montage-4.png" alt="" width="691" height="230" /><p class="wp-caption-text">Segmentação da imagem: canal verde; threshold, watershed.</p></div>
<p>Nas versões mais recentes do ImageJ, a documentação sobre Feret não cobre mais todos os resultados que aparecem na tabela. Outro dia um leitor me perguntou o que eram o <strong>FeretX</strong> e o <strong>FeretY</strong>, e eu fiquei tentando descobrir.</p>
<div id="attachment_2094" class="wp-caption aligncenter" style="width: 727px"><img class="size-large wp-image-2094 " title="esquema_feret" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/06/text_feret-1024x586.png" alt="" width="717" height="410" /><p class="wp-caption-text">Esquema dos resultados mostrados pelo ImageJ, relativos ao diâmetro de feret.</p></div>
<p>FeretX e FeretY são as coordenadas do primeiro ponto da linha que representa do Feret Máximo (que no ImageJ é chamado simplesmente de Feret). Isto tem utilidade mais para desenhar a linha do que qualquer outra coisa.</p>
<p>O <strong>FeretAngle</strong> é o ângulo formado entre o plano horizontal e a linha do Feret Máximo, no sentido anti-horário. E o <strong>Feret Mínimo</strong> é a medida perpendicular ao Feret Máximo, que inclui toda a partícula. É como se desenhássemos duas linhas paralelas ao ferret máximo, uma de cada lado, tangenciando a partícula, e medíssemos a distância entre elas.</p>
<p>Tudo explicado.<br />
Até mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/06/diametro-de-feret/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Inversão de imagens</title>
		<link>http://www.imagesurvey.com.br/2010/06/inversao-de-imagens/</link>
		<comments>http://www.imagesurvey.com.br/2010/06/inversao-de-imagens/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 12:35:51 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[JAI]]></category>
		<category><![CDATA[Métodos]]></category>
		<category><![CDATA[cor]]></category>
		<category><![CDATA[imagens binárias]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2066</guid>
		<description><![CDATA[Inversão de imagens é um tema bem simples, mas qual foi a minha surpresa ao perceber que a JAI, biblioteca de processamento de imagens da Sun, não lida com isso de forma tão simples como eu pensava. Não tem muito o que explicar sobre inversão, mas quero deixar claro a diferença entre inverter o valor [...]]]></description>
			<content:encoded><![CDATA[<p>Inversão de imagens é um tema bem simples, mas qual foi a minha surpresa ao perceber que a JAI, biblioteca de processamento de imagens da Sun, não lida com isso de forma tão simples como eu pensava. Não tem muito o que explicar sobre inversão, mas quero deixar claro a diferença entre inverter o valor dos pixels e inverter uma tabela de cores, e as consequências para o uso da segunda como artifício de otimização.<span id="more-2066"></span></p>
<h2>A teoria</h2>
<p>Inverter uma imagem é fazer com os valores dos pixels invertam seus valores, na escala em que estão. Em imagens tons de cinza de 8-bits os valores dos pixels vão de 0 a 255. A inversão faz com que os pixels que têm valor 0, passem a valer 255, os que tem valor 1 passem a valer 254, e assim por diante. Normalmente representa-se esta operação por uma fórmula simples:</p>
<p>pixel_resultado = valor_máximo &#8211; pixel</p>
<p>No caso de imagens RGB (ou muiti-canais em geral), inverte-se cada canal como está descrito acima, e no caso de imagens binárias o zero vira um e o um vira zero.</p>
<div id="attachment_2077" class="wp-caption aligncenter" style="width: 622px"><img src="http://www.imagesurvey.com.br/wp-content/uploads/2010/06/inversao-de-grilos.png" alt="Inversão de imagens RBG, cinza e binária." title="Inversão de imagens RBG, cinza e binária." width="612" height="309" class="size-full wp-image-2077" /><p class="wp-caption-text">Inversão de imagens RBG, cinza e binária.</p></div>
<p>A imagem dos grilos é do <a href="http://www.flickr.com/photos/taeb/sets/72157622992773151/">Thiago Gama Oliveira</a>.</p>
<h2>Na JAI</h2>
<p>A JAI tem a operação &#8220;invert&#8221;, que à primeira vista parece resolver isso tudo&#8230; mas não é bem assim. Em imagens binárias, o &#8220;invert&#8221; não modifica os pixels, modifica o mapa de cores. Isto significa que os píxels continuam tendo os mesmos valores que os originais, mas a aparência deles (a cor exibida no monitor) muda.</p>
<p>Na documentação da JAI isto quase não aparece, ou é citado rapidamente como um recurso de otimização. E não seria mesmo algo ruim se todos os usuários estivessem interessados somente no visual da imagem. Mas quando precisa-se dos valores dos pixels para cálculos posteriores a coisa complica.</p>
<p>Procurando por uma solução achei este <a href="https://jai-core.dev.java.net/issues/show_bug.cgi?id=70" target="_self">registro de bug</a> de 2006 lá na JAI, com tudo explicado, inclusive exemplo, e uma tentativa de solução que deveria funcionar, mas não funciona. O registro está lá, mas não foi resolvido ainda &#8211; e pela idade acho que não vai ser resolvido nunca.</p>
<p>Em resumo, a JAI inverte a tabela de cores, e não os pixels. Mas ao usar a imagem invertida para outras operações ela desconsidera a tabela de cores! Assim, inverter a imagem e depois somar com outra tem o mesmo resultado de somar as duas sem inverter antes. A operação &#8220;not&#8221;, que é um tipo de inversão específica para imagens binárias, tem o mesmo problema.</p>
<p><strong>Conclusão: a JAI não inverte imagens binárias corretamente.</strong></p>
<p>Depois de algumas semanas de pesquisa, e daquela conhecida frustração de achar que era eu que não sabia usar os métodos corretamente, resolvi partir para uma implementação independente da inversão. Não ficou otimizada, nem eu me dei ao trabalho de implementá-la estendendo a JAI, como manda o figurino, mas funciona.</p>
<p>Na verdade usei alguns artifícios dos quais não me orgulho, mas fiz porque não encontrei alternativas mais elegantes &#8211; provavelmente vou encontrar, a aí publico o código novamente. Mas por hora incluí a minha classe aqui para quem quiser utilizar (com licença GPL).</p>
<p><a href='http://www.imagesurvey.com.br/wp-content/uploads/2010/06/BinaryInvert.zip'>BinaryInvert.java</a><br />
Obs: O arquivo está &#8220;zipado&#8221; porque <code>.java</code> aparentemente é uma ameaça de segurança para o meu provedor.</p>
<p>Bom, se alguém olhar e achar que tem uma foma beeeeem mais fácil de fazer isso, não pense que vai me ofender &#8211; por favor me diga! Na verdade estou torcendo para que isto aconteça&#8230;</p>
<p>Até mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/06/inversao-de-imagens/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mean-shift: explicando</title>
		<link>http://www.imagesurvey.com.br/2010/05/mean-shift-explicando/</link>
		<comments>http://www.imagesurvey.com.br/2010/05/mean-shift-explicando/#comments</comments>
		<pubDate>Wed, 19 May 2010 11:00:50 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>
		<category><![CDATA[cor]]></category>
		<category><![CDATA[Mean-Shift]]></category>
		<category><![CDATA[RGB]]></category>
		<category><![CDATA[segmentação de imagens]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2045</guid>
		<description><![CDATA[Finalmente tomei coragem e escrevi. Esta é uma tentativa de explicar o Mean Shift. Venho adiando isso há tempos porque é um tema complexo, mas na semana passada escrevi um tutorial, e o leitor JanKees Poel deu a cutucada que faltava&#8230; (Obrigada!) Fundamentos O trabalho original, de Fukunaga e Hostetler em 1975 não está disponível [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente tomei coragem e escrevi. Esta é uma tentativa de explicar o Mean Shift. Venho adiando isso há tempos porque é um tema complexo, mas na semana passada escrevi um tutorial, e o leitor <cite>JanKees Poel</cite> deu a cutucada que faltava&#8230; (Obrigada!)<span id="more-2045"></span></p>
<h2>Fundamentos</h2>
<p>O trabalho original, de Fukunaga e Hostetler em 1975 não está disponível on-line. Há outros trabalhos científicos, com explicações matemáticas completas, mas não eles não deixam nada fácil de entender, então vou partir de uma definição simples e depois explicar melhor.</p>
<p>Definição da wikipedia:</p>
<blockquote><p><a href="http://en.wikipedia.org/wiki/Mean-shift">Mean shift </a>is a procedure for locating the maxima of a density function given discrete data sampled from that function.</p></blockquote>
<p><del datetime="2010-05-23T15:21:48+00:00">:Mean shift é um processo para localizar a máxima densidade de uma função, dada uma amostra discreta desta.</del><br />
<del datetime="2010-05-23T15:21:48+00:00">Eu trocaria máxima por moda, nesta definição, mas por enquanto está bom.</del></p>
<p>Tradução corrigida pelo <a href="http://w3.ufsm.br/juca/">Juca</a> (muito obrigada!):</p>
<blockquote><p>Mean shift é um procedimento para localizar OS MÁXIMOS de um função densidade a partir de dados discretos amostrados desta função.<br />
Saindo do inglês para a matemática, observe que a idéia é mesmo uma busca NO PLURAL por todos os máximos existentes na função densidade de pontos no espaço de características (clusters of sampled data).</p></blockquote>
<h2>Mais simples</h2>
<p>Procurando no meu material de pesquisa de uns dois anos atrás, achei uma apresentação que fez sucesso na aula porque conseguia explicar isso tudo de uma forma simples e bem visual. Infelizmente ela não estava assinada, e eu não encontrei uma versão on-line para citar aqui, mas me baseei fortemente nela para a animação abaixo (se o autor reconhecer, por favor entre em contato para que eu possa atribuir os devidos créditos).</p>
<p>A animação parte de uma amostra de duas dimensões para facilitar, mas <strong>não há um limite de dimensões para este método</strong>. Imagine que estes pontos são o gráfico de dispersão de pontos de um conjunto de dados qualquer.</p>
<p>O algoritmo parte de cada ponto (a animação mostra apenas um), delimita uma região em torno dele e calcula o <a href="http://pt.wikipedia.org/wiki/Centro_de_massas" target="_blank">centro de massa</a>. Este é um conceito físico, que se transfere para este exemplo com a média aritmética dos valores de cada variável nos pontos que estão dentro do <strong>kernel</strong> (representado por um círculo).</p>
<p>Encontrado o centro de massa, ele<strong> &#8220;move&#8221; o centro de sua região para o centro de massa calculado</strong>, e calcula o novo centro de massa para o conjunto de dados que agora está dentro do kernel. Encontrado o centro de massa, ele move o centro novamente, e assim segue em passos <strong>até que o centro de massa passe a &#8220;cair&#8221; sempre no mesmo lugar</strong>.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/kmaQAsotT9s&amp;hl=pt_BR&amp;fs=1&amp;color1=0x234900&amp;color2=0x4e9e00" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/kmaQAsotT9s&amp;hl=pt_BR&amp;fs=1&amp;color1=0x234900&amp;color2=0x4e9e00" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Este é um exemplo simples quem tem o objetivo de elucidar o conceito. Ele usa um conjunto de dados em duas dimensões, ou seja, <strong>dados descritos por duas variáveis</strong>. Mas é possível executar a mesma rotina com um número ilimitado de dimensões.</p>
<p>Além disso, o exemplo tem apenas uma moda, ou seja, apenas uma região em que se concentram mais pontos, que é a região para onde vão convergir todos os pontos. <strong>Em imagens reais há várias modas (e não apenas uma máxima), e cada moda &#8220;atrai&#8221; uma parte dos pontos para si</strong>.</p>
<h2>Uso em segmentação de imagens</h2>
<p>Como vimos no artigo sobre <a href="http://www.imagesurvey.com.br/2010/04/as-cores/">cores</a>, imagens podem ter três ou mais dimensões. Assim, o mean-shift realizado em uma <strong>imagem RGB usa o processo descrito acima em um conjunto de dados tridimensional</strong>, formado pelas intensidades dos pixels nos três canais de cor. Veja os gráficos no link sobre cores para entender como isso fica.</p>
<p>Além disso, a maioria dos trabalhos que li entendem que o <strong>componente espacial</strong> da imagem não deve ser negligenciado &#8211; o que acontece quando usa-se só as 3 dimensões de cor.</p>
<p><a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?reload=true&amp;arnumber=1000236" target="_blank">Comaniciu</a> propõe que depois de realizado todo o processo com os canais de cor, despreze-se as regiões de tamanhos muito pequenos. Isso foi mais ou menos o que eu fiz com o filtro de mediana no <a href="http://www.imagesurvey.com.br/2010/05/mean-shift-segmentacao-em-cores/">tutorial do Mean-shift</a>, na semana passada.</p>
<p>Já a implementação usada no plugin do ImageJ que usei neste mesmo artigo ,adiciona as duas dimensões espaciais ao processo, usando um kernel para as dimensões de cor (Color Distance, no diálogo do plugin) e outro diferente para as dimensões espaciais (Spacial Radius). Alterar o tamanho do <strong>Color Distance</strong> tem o efeito que se pode esperar olhando a animação acima &#8211; mais pontos convergem para a mesma moda. Já o <strong>Spacial Radius</strong>, quando usado em um tamanho próximo ao tamanho das estruturas que se procura encontrar na imagem, força a atração de pontos a modas mais próximas espacialmente, formando regiões (obs: esta é a minha opinião, já que o autor da implementação não documentou duas decisões).</p>
<p>Este mesmo plugin também seque uma das tendências das publicações: não usa a imagem no espaço de cor RGB, e sim no <strong>YIQ</strong>. Isto melhora os resultados em muitas situações, embora, como tudo em processamento de imagens, não tenha o mesmo resultado para todas as aplicações.</p>
<h2>Vou parar por aqui&#8230;</h2>
<p> porque já ficou longo demais. Se tiver perguntas, por favor use a área de comentários, quem sabe respondo em um post &#8220;parte II&#8221;&#8230;</p>
<p>Até mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/05/mean-shift-explicando/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Filtro de mediana</title>
		<link>http://www.imagesurvey.com.br/2010/03/filtro-de-mediana/</link>
		<comments>http://www.imagesurvey.com.br/2010/03/filtro-de-mediana/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 13:02:38 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=1955</guid>
		<description><![CDATA[Tem algumas ferramentas que são como coringas &#8211; acho que toda atividade tem disso. Bom, o filtro de mediana é um dos coringas para processamento de imagens. Não para grandes feitos, mas para os pequenos: quando a segmentação deu quase certo, só precisa de um empurrãozinho. Vamos ver uma imagem Escolhi a imagem da superfície [...]]]></description>
			<content:encoded><![CDATA[<p>Tem algumas ferramentas que são como coringas &#8211; acho que toda atividade tem disso. Bom, o filtro de mediana é um dos coringas para processamento de imagens. Não para grandes feitos, mas para os pequenos: quando a segmentação deu <strong>quase</strong> certo, só precisa de um empurrãozinho. <span id="more-1955"></span></p>
<h2>Vamos ver uma imagem</h2>
<div id="attachment_1957" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-1957" title="Surface (road), de Alice N Wondrind." src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/road-300x266.jpg" alt="" width="300" height="266" /><p class="wp-caption-text">Surface (road), de Alice N Wondrind.</p></div>
<p>Escolhi a imagem da superfície de uma rua ou estrada, que encontrei no Flickr. Ela tem dois tipos de superfície bem distintos, um mais claro e outro mais escuro. Mas apesar de isso ficar muito claro para nossos olhos, a segmentação por threshold não é perfeita. <strong>A parte clara tem ranhuras que ficam escuras, e a parte escura tem pontos mais claros, onde a luz reflete na superfície granulada</strong>.</p>
<p>A imagem é de <a href="http://www.flickr.com/photos/alicenwondrlnd/" target="_blank">AliceNWondrlnd</a>.</p>
<h2>Compare os resultados</h2>
<div id="attachment_1960" class="wp-caption aligncenter" style="width: 542px"><img class="size-full wp-image-1960" title="Comparação" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/Montage-road.jpg" alt="" width="532" height="470" /><p class="wp-caption-text">Comparação: imagem original e o resultado do threshold (esquerda); imagem após filtro de mediana com tamanho 5 (direita).</p></div>
<p>Na tentativa sem usar o filtro, o resultado vem com muito ruído. É possível tratá-lo com uma sucessão de <a href="http://www.imagesurvey.com.br/2008/12/abertura-e-fechamento/">Aberturas e Fechamentos</a>, mas é preciso bastante cuidado para que a linha divisória permaneça no mesmo lugar. O resultado produzido com o uso do filtro ficou bem mais nítido. Ainda será necessária uma pequena correção com operações morfológicas, mas nada muito complexo.</p>
<h2>O filtro de Mediana</h2>
<p>O artigo <a href="http://en.wikipedia.org/wiki/Median_filter" target="_blank">Median Filter</a> na wikipédia em inglês tem boas informações, mas em português não há nada ainda.</p>
<p><a href="http://pt.wikipedia.org/wiki/Mediana_%28estat%C3%ADstica%29" target="_blank">Mediana</a> é uma <strong>medida estatística</strong>, que caracteriza uma tendência central para um conjunto de dados. No processamento de imagens, o nosso conjunto de dados vem da imagem.</p>
<p>O filtro tem lá sua definição matemática, mas por agora <strong>vamos definir um filtro como um operador</strong>, que tem um tamanho definido, um centro, e que &#8220;aplicado&#8221; sobre a imagem em todas as posições possíveis, como se fosse um &#8220;carimbo&#8221; especial. Fica mais fácil com um exemplo:</p>
<p>Esta será nossa imagem (os valores dos pixels):</p>
<p>0   0   5   3   5   5</p>
<p>1   1   5   2   5   5</p>
<p>1   2   1   5   4   5</p>
<p>E vamos <strong>aplicar um filtro de mediana, no tamanhos 3X3</strong>. A primeira posição é a que coloca o centro do filtro sobre o primeiro pixel da imagem: os valores dentro do filtro são:</p>
<p>x   x   x</p>
<p>x   0   0</p>
<p>x   1    1</p>
<p>coloquei x nos lugares em que não há pixels, mas vamos substituí-los por zeros  e calcular a mediana (a mediana se calcula <strong>ordenando os dados e pegando o do meio</strong>):</p>
<p>[0, 0, 0, 0, <span style="color: #ff0000;"><strong>0</strong></span>, 0, 0, 1, 1]  -&gt; mediana = 0.</p>
<p>Então o valor do primeiro pixel nesta imagem será 0. Vamos fazer o mesmo com o segunto pixel:</p>
<p>[0, 0, 0, 0, <span style="color: #ff0000;"><strong>0</strong></span>, 1, 1, 5, 5] -&gt; zero de novo.</p>
<p>O terceiro pixel:</p>
<p>[0, 0, 0, 0, <span style="color: #ff0000;"><strong>1</strong></span>, 2, 3, 5, 5] -&gt; mediana = 1.</p>
<p>O resultado final vai ser:</p>
<p>0   0   1   3   3   0</p>
<p>0   1   2   5   5   5</p>
<p>0   1   1   2   4   0</p>
<h2>Outras informações</h2>
<p>A principal utilidade do filtro de mediana é diminuir o ruído na imagem, principalmente quando ele é formado por &#8220;pontinhos&#8221; (também conhecido como &#8220;salt and peper&#8221;, ou sal e pimenta). Mas ele também é útil para tornar bordas mais nítidas em algumas situações. Parece pouco, mas muitas vezes é o que faz a diferença.</p>
<p>Os <strong>filtros de mínima e de máxima</strong> funcionam da mesma forma.</p>
<p>O <strong>filtro de média</strong> também tem o mesmo funcionamento, mas não as mesmas propriedades. Ao invés de criar contornos nítidos, ele &#8220;borra a imagem&#8221;.</p>
<p>O ImageJ tem estes quatro filtros, assim como alguns outros, no menu <strong>Process &#8211;&gt; Filters</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/03/filtro-de-mediana/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ImageSurvey &#8211; Índice</title>
		<link>http://www.imagesurvey.com.br/2010/03/imagesurvey-indice/</link>
		<comments>http://www.imagesurvey.com.br/2010/03/imagesurvey-indice/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 13:03:44 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Conceitos em PDI]]></category>
		<category><![CDATA[Métodos]]></category>
		<category><![CDATA[imagens médicas]]></category>
		<category><![CDATA[ImageSurvey]]></category>
		<category><![CDATA[processamento de imagens]]></category>
		<category><![CDATA[visão computacional]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=1934</guid>
		<description><![CDATA[Este post é para organizar as coisas. Estou aqui pensando em um assunto para abordar hoje e frequentemente me pergunto: já não falei sobre isso demais? Bom, vamos ver do que falei demais ou de menos. Introdução ao Processamento de imagens Visão Computacional – extensão da visão biológica. Gestalt – porque somos melhores que as [...]]]></description>
			<content:encoded><![CDATA[<p>Este post é para organizar as coisas. Estou aqui pensando em um assunto para abordar hoje e frequentemente me pergunto: já não falei sobre isso demais? Bom, vamos ver do que falei demais ou de menos.<span id="more-1934"></span></p>
<ol>
<li>Introdução ao Processamento de imagens
<ol>
<li><a href="../2008/09/visao-computacional-extensao-da-visao-biologica/">Visão Computacional – extensão da visão biológica.</a></li>
<li><a href="../2008/12/gestalt-porque-somos-melhores-que-as-maquinas/">Gestalt – porque somos melhores que as máquinas?</a></li>
<li><a href="../2008/12/uso-de-gestalt-na-pesquisa-de-visao-computacional-survey/">Uso de Gestalt na pesquisa de Visão Computacional: Survey.</a></li>
<li><a href="../2008/09/taxonomia-de-imagens-digitais/">Taxonomia de imagens digitais</a></li>
<li><a href="../2009/03/resolucao-espacial-ou-o-tamanho-do-pixel-em-imagens-digitais/">Resolução espacial, ou o tamanho do pixel em imagens digitais</a></li>
<li><a href="../2008/11/quem-usa-imagens-de-satelite/">Quem usa imagens de satélite?</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/04/problema-do-mundo-real-pinos-dentarios-em-microscopia-eletronica/">Problema do mundo real: pinos dentários em microscopia eletrônica</a></li>
<li><a href="../2008/12/falsas-miniaturas-em-video/">Falsas miniaturas em vídeo</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/04/as-cores/">As cores</a></li>
</ol>
</li>
<li>Captação de Imagens
<ol>
<li><a href="../2008/09/o-que-sao-sensores-ccds-e-como-eles-funcionam/">O que são sensores CCDs e como eles funcionam?</a></li>
<li><a href="../2008/09/ccd-ou-cmos-qual-a-diferenca-afinal/">CCD ou CMOS: qual a diferença, afinal?</a></li>
<li><a href="../2009/05/como-captar-imagens-para-processamento-usando-sua-camera-digital/">Como captar imagens para processamento usando sua câmera digital</a></li>
<li><a href="../2009/09/camera-fotografica-open-source/">Câmera fotográfica Open Source</a></li>
<li><a href="../2009/03/ultrassonografia/">Ultrassonografia</a></li>
</ol>
</li>
<li>Armazenamento de imagens
<ol>
<li><a href="../2008/10/como-escolher-o-formato-de-arquivo-para-suas-imagens/">Como escolher o formato de arquivo para suas imagens</a></li>
<li><a href="../2008/10/tiff-formato-de-imagens-sob-medida-para-aplicacoes-cientificas/">TIFF – formato de imagens sob medida para aplicações científicas.</a></li>
<li><a href="../2008/10/formato-png-web-edicao-e-processamento-de-imagens/">Formato PNG – Web, Edição e Processamento de Imagens.</a></li>
<li><a href="../2008/11/jpeg-imagens-para-ver-e-enviar/">JPEG – imagens para ver e enviar</a></li>
<li><a href="../2008/11/qual-o-formato-de-arquivo-de-imagem-mais-usado-na-internet/">Qual o formato de arquivo de imagem mais usado na internet?</a></li>
<li><a href="../2008/11/formato-de-arquivos-dicom/">Formato de arquivos DICOM</a></li>
</ol>
</li>
<li>Processamento de imagens
<ol>
<li><a href="../2008/11/tutorial-imagej-agrupando-imagens-em-pilhas/">Tutorial ImageJ – agrupando imagens em pilhas.</a></li>
<li><a href="../2008/12/tutorial-imagej-processamento-em-lote/">Tutorial ImageJ – Processamento em lote.</a></li>
<li><a href="../2008/12/ja-pensou-em-alterar-o-tamanho-das-suas-imagens-sem-deforma-las/">Já pensou em alterar o tamanho das suas imagens sem deformá-las?</a></li>
<li><a href="../2009/01/seam-carving-com-gimp-tutorial-parte-i/">Seam Carving com Gimp – tutorial parte I</a></li>
<li><a href="../2009/01/seam-carving-com-gimp-tutorial-parte-ii/">Seam Carving com Gimp – tutorial parte II</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/06/inversao-de-imagens/">Inversão de imagens</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/03/filtro-de-mediana/">Filtro de mediana</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/09/contador-manual-de-celulas/">Contador manual de células</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/08/usando-escala-pre-definida-em-microscopia-otica-digital/">Usando escala pré-definida em microscopia ótica digital</a></li>
</ol>
</li>
<li>Processamento: Morfologia Matemática
<ol>
<li><a href="../2008/11/um-pouco-de-morfologia-matematica/">Um pouco de morfologia matemática</a></li>
<li><a href="../2008/12/abertura-e-fechamento/">Abertura e Fechamento</a></li>
</ol>
</li>
<li>Segmentação
<ol>
<li><a href="../2008/10/o-desafio-da-segmentacao/">O desafio da segmentação</a></li>
<li><a href="../2009/11/objeto-ou-superficie/">Objeto ou superfície?</a></li>
<li><a href="../2008/09/threshold-simples-e-funciona-mas-nao-para-todos/">Threshold – Simples e funciona, mas não para todos…</a></li>
<li><a href="../2008/10/survey-para-threshold-de-imagens/">Survey para Threshold de imagens</a></li>
<li><a href="../2009/03/watershed-em-imagens-binarias-e-um-exemplo-util-com-imagej/">Watershed em imagens binárias, e um exemplo útil com ImageJ</a></li>
<li><a href="../2009/04/survey-da-pesquisa-sobre-segmentacao-por-watershed/">Survey da pesquisa sobre Segmentação por Watershed</a></li>
<li><a href="../2009/10/deteccao-de-bordas/">Detecção de bordas – Sobel</a></li>
<li><a href="../2010/03/crescimento-de-regioes-usando-fiji/">Crescimento de Regiões usando Fiji</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/05/mean-shift-segmentacao-em-cores/">Mean-shift: segmentação em cores</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/05/mean-shift-explicando/">Mean-shift: explicando</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/07/segmentacao-de-acinos/">Segmentação de Ácinos</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/08/mimetismo-de-borboleta/">Mimetismo de borboleta</a></li>
</ol>
</li>
<li>Extração de características
<ol>
<li><a href="http://www.imagesurvey.com.br/2010/04/tipos-de-caracteristicas-das-imagens/">Tipos de características das imagens</a></li>
<li><a href="../2008/10/tutorial-imagej-como-contar-objetos-parte-i/">Tutorial ImageJ – Como contar objetos. Parte I</a></li>
<li><a href="../2008/10/tutorial-imagej-como-contar-objetos-parte-ii/">Tutorial ImageJ – Como contar objetos. Parte II</a></li>
<li><a href="../2009/02/tutorial-imagej-medicao-de-area-foliar/">Tutorial ImageJ – medição de área foliar</a></li>
<li><a href="../2009/05/tutorial-diametro-de-esferas-com-imagej/">Tutorial: Diâmetro de esferas, com ImageJ</a></li>
<li><a href="../2009/05/tutorial-imagej-como-medir-a-cor-dos-objetos/">Tutorial ImageJ: como “medir a cor” dos objetos</a></li>
<li><a href="../2008/09/matriz-de-co-ocorrencia-o-que-e-e-como-se-faz/">Matriz de co-ocorrência – o que é e como se faz.</a></li>
<li><a href="../2008/09/survey-para-matriz-de-co-ocorrencia-um-metodo-de-caractarizacao-de-texturas-em-imagens-digitais/">Survey para matriz de co-ocorrência – um método de caractarização de texturas em imagens digitais</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/06/diametro-de-feret/">Diâmetro de Feret</a></li>
</ol>
</li>
<li>Classificação (ou Reconhecimento de Padrões)
<ol>
<li><a href="../2009/05/introducao-a-classificacao-de-imagens/">Introdução à Classificação de Imagens</a></li>
<li><a href="../2009/06/classificacao-de-objetos-por-centro-de-classe-parte-i/">Classificação de objetos por centro de classe – parte I</a></li>
<li><a href="../2009/06/classificacao-de-objetos-por-centro-de-classe-parte-ii/">Classificação de objetos por centro de classe – parte II</a></li>
<li><a href="../2009/06/classificacaosegmentacao-no-mundo-real-florestas/">Classificação/Segmentação no mundo real: florestas</a></li>
<li><a href="../2009/07/recuperacao-imagens-semelhanca-mestrado/">Recuperação de Imagens por semelhança – Dissertação de Mestrado de Juliano Weber</a></li>
<li><a href="../2009/11/tutorial-imagej-selecao-manual-roi-manager/">Tutorial ImageJ – usando seleção manual e ROI Manager</a> &#8211; exemplo de reconhecimento de padrões: quantificar o crescimento de algas em uma placa de petri usando a cor da imagem.</li>
</ol>
</li>
<li>Uso de imagens na medicina
<ol>
<li><a href="../2008/11/radiologia-e-diagnostico-por-imagens/">Radiologia e diagnóstico por imagens</a></li>
<li><a href="../2008/11/o-padrao-dicom/">O padrão DICOM</a></li>
<li><a href="../2008/11/formato-de-arquivos-dicom/">Formato de arquivos DICOM</a></li>
<li><a href="../2009/08/exames-em-dicom/">Exames em DICOM</a></li>
<li><a href="../2009/01/dia-da-abreugrafia-mas-o-que-e-isso/">Dia da Abreugrafia… mas o que é isso?</a></li>
<li><a href="../2009/03/ultrassonografia/">Ultrassonografia</a></li>
<li><a href="../2009/09/densidade-radiologica/">Densidade Radiológica</a></li>
<li><a href="../2009/02/deteccao-de-fraturas-por-processamento-de-imagens/">Detecção de fraturas por processamento de imagens</a></li>
<li><a href="../2009/12/pneumonia-e-o-diagnostico-auxiliado-por-computador/">Pneumonia e o diagnóstico Auxiliado por computador</a></li>
</ol>
</li>
<li>Software livre para processamento de imagens
<ol>
<li><a href="../2008/12/eu-uso-gimp/">Eu uso Gimp</a></li>
<li><a href="../2009/01/imlab-software-experimental-para-processamento-de-imagens/">ImLab: software experimental para processamento de imagens</a></li>
<li><a href="../2009/02/como-usar-o-imagej/">Como usar o ImageJ</a></li>
<li><a href="../2009/03/tutorial-imagej-macros/">Tutorial ImageJ: Macros</a></li>
<li><a href="../2009/12/imagej-evolution/">ImageJ evolution!</a></li>
<li><a href="../2009/02/survey-no-sourceforgenet-busca-por-software-para-processamento-de-imagens/">Survey no SourceForge.net – busca por software para processamento de imagens.</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/07/anima-contando-objetos/">Anima contando objetos!</a></li>
</ol>
</li>
<li>Desenvolvimento de software
<ol>
<li><a href="../2009/02/como-desenvolver-sistemas-de-software-para-processamento-de-imagens-parte-i-entre-a-engenharia-de-software-e-as-linhas-de-producao-de-software/">Como desenvolver sistemas de software para processamento de imagens? Parte I: Entre a engenharia de software e as linhas de produção de software</a></li>
<li><a href="../2009/03/quando-vamos-ver-o-potencial-dos-games-na-ciencia/">Quando vamos ver o potencial dos games na ciência?</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/03/como-eu-comecei-a-usar-a-jai/">Como eu comecei a usar a JAI</a></li>
<li><a href="http://www.imagesurvey.com.br/2010/03/metodos-ageis-de-desenvolvimento-para-software-cientifico/">Métodos ágeis de desenvolvimento para software científico</a></li>
</ol>
</li>
</ol>
<p>Nada mal&#8230; podia ser um livro! OK, um livro pequeno <img src='http://www.imagesurvey.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , ainda. Vai continuar crescendo:<br />
<strong><a href="http://feeds.feedburner.com/imagesurvey">Assine o RSS do ImageSurvey!</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/03/imagesurvey-indice/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Crescimento de Regiões usando Fiji</title>
		<link>http://www.imagesurvey.com.br/2010/03/crescimento-de-regioes-usando-fiji/</link>
		<comments>http://www.imagesurvey.com.br/2010/03/crescimento-de-regioes-usando-fiji/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 14:07:23 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[crescimento de regiões]]></category>
		<category><![CDATA[Fiji]]></category>
		<category><![CDATA[segmentação de imagens]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=1902</guid>
		<description><![CDATA[Dizem que o ano só começa mesmo depois do carnaval&#8230; então vamos começar o ano! Hoje estou mais para tutorial, então vou usar um exemplo e vamos ver como funciona o algoritmo de crescimento de regiões implementado no Fiji, por Johannes Schindelin. Uma imagem legal&#8230; Se quiser acompanhar o tutorial, obtenha a imagem no tamanho [...]]]></description>
			<content:encoded><![CDATA[<p>Dizem que o ano só começa mesmo depois do carnaval&#8230; então vamos começar o ano! Hoje estou mais para tutorial, então vou usar um exemplo e vamos ver como funciona o algoritmo de crescimento de regiões implementado no Fiji, por Johannes Schindelin.<span id="more-1902"></span></p>
<h2>Uma imagem legal&#8230;</h2>
<p><img class="alignleft size-full wp-image-1904" title="follhas de outono" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/outono.jpg" alt="" width="300" height="200" /></p>
<p>Se quiser acompanhar o tutorial, <a href="http://www.flickr.com/photos/marufish/2630373665/" target="_blank">obtenha a imagem no tamanho original</a>.</p>
<p>O objetivo será <strong>separar as folhas do fundo</strong>. Dificultam a segmentação aqui a <strong>irregularidade na iluminação do primeiro plano e as cores do fundo</strong>. Quem tentar com <a href="http://www.imagesurvey.com.br/2008/09/threshold-simples-e-funciona-mas-nao-para-todos/">threshold simples</a> vai descobrir que não é possível manter todas as folhas e retirar todo o fundo ao mesmo tempo.</p>
<p>Vamos tentar com crescimento de regiões.</p>
<h2>Já falei do Fiji?</h2>
<p>Como eles dizem: <em>&#8220;<a href="http://pacific.mpi-cbg.de/wiki/index.php/Main_Page" target="_blank">Fiji</a> is just ImageJ, batteries included.&#8221;</em></p>
<p>É como se fosse uma distribuição diferente do ImageJ, que já vem com vários plugins e tem uma documentação própria.</p>
<p>Download em: <a href="http://pacific.mpi-cbg.de/wiki/index.php/Downloads" target="_blank">http://pacific.mpi-cbg.de/wiki/index.php/Downloads</a><br />
Para quem tem Ubuntu, use um dos links na sessão &#8220;Package for Debian/ Ubuntu&#8221;. Eu usei o de 64 bits e está funcionando bem.</p>
<h2>Crescimento de Regiões</h2>
<p>Crescimento de regiões, ou Region Growing, ou ainda Region Merging é um método de segmentação para imagens em tons de cinza (uma banda), que usa a <strong>variação da intensidade dos pixels e a proximidade geométrica</strong> entre eles para produzir regiões.</p>
<p>Ele começa em um ponto (usualmente no canto superior esquerdo) e vai &#8220;expandindo&#8221; pixel a pixel. Se unir o próximo aos já computados não modificar a média mais de um certo valor, então ele é incluído na região. Se a média mudas mais que o fixado, ele será o início de uma nova região. Algumas implementações deixam o usuário escolher este valor. A implementação usada no Fiji deixa o usuário escolher um <strong>fator de complexidade</strong>, que é usado para calcular esta diferença.</p>
<p>Como o projeto é de código aberto, quem tiver curiosidade pode dar uma espiadinha nele <a href="http://pacific.mpi-cbg.de/cgi-bin/gitweb.cgi?p=fiji.git;a=blob;f=src-plugins/Statistical_Region_Merging/SRM_.java;h=597dd318e79e0e786204b97933d103106db21faf;hb=10ec8be6204f3536dd34acbe01f042599536d0af" target="_blank">neste link</a>.</p>
<h2>O exemplo</h2>
<p>Primeiro <strong>precisamos que a nossa imagem seja de uma só banda</strong>. Podemos fazer isso apenas convertendo para 8 bits ou escolhendo a banda de maior contraste. Na minha experiencia a segunda opção sempre traz vantagens, mas vamos ver aqui&#8230;</p>
<div id="attachment_1912" class="wp-caption aligncenter" style="width: 706px"><img class="size-full wp-image-1912" title="alternativas em tons de cinza" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/Montage_outono.png" alt="" width="696" height="115" /><p class="wp-caption-text">Alternativas para conversão em tons de cinza: convertido para 8bits; banda R; banda G; banda B.</p></div>
<p>A imagem em que <strong>as folhas estão mais escuras e o fundo mais claro</strong> é a banda G (verde). É com essa que eu fico.</p>
<p><strong>Agora o Crescimento de Regiões:</strong> mantenha apentas a imagem escolhida aberta, para evitar confusão. No menu <em>Plugins &#8211;&gt; Segmentation &#8211;&gt; Statistical Region Merging</em>. Aparecerá um diálogo que permite<strong> escolher o valor &#8220;Q&#8221;</strong> (é o valor de complexidade de que falei antes) e a optar por &#8220;Show averages&#8221; (mostrar médias) que influencia na maneira que você vai ver o resultado &#8211; eu prefiro deixar marcado.</p>
<p>Quanto ao valor de Q, o default é 25, e vou tentar primeiro com este. Ele gerou mais regiões do que eu gostaria, por isso <strong>vou tentar alguns mais baixos </strong>(mais tarde vamos comparar o resultado final). Minhas outras tentativas foram 15 e 5.</p>
<div id="attachment_1915" class="wp-caption aligncenter" style="width: 715px"><img class="size-full wp-image-1915 " title="Imagem após crescimento de regiões" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/Montage_outono_regioes.png" alt="" width="705" height="156" /><p class="wp-caption-text">Imagem após crescimento de regiões: Q = 25; Q = 15; Q = 5.</p></div>
<p>Para o resultado final ainda precisamos de um <strong>último passo</strong>: o velho threshold:</p>
<div id="attachment_1917" class="wp-caption aligncenter" style="width: 715px"><img class="size-full wp-image-1917" title="comparação de resultados" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/Montage_outono_regioes_binarizada.png" alt="" width="705" height="156" /><p class="wp-caption-text">Comparação dos resultados: mesma ordem da ilustração anterior.</p></div>
<div id="attachment_1918" class="wp-caption alignright" style="width: 378px"><img class="size-full wp-image-1918  " title="Segmentada por threshold" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/outono_binarizada.jpg" alt="" width="368" height="245" /><p class="wp-caption-text">Imagem segmentada diretamente por threshold.</p></div>
<p>Repare no canto superior esquerdo da primeira imagem: ainda temos <strong>um pouco de fundo</strong>. Há poucas deferenças entre a segunda (Q = 15) e a terceira (Q = 5), mas a última incluiu um pouco de fundo entre algumas folhas próximas. Mas a tentativa de segmentar diretamente por threshold não chegou nem perto da primeira&#8230;</p>
<p>Só para terminar com uma imagem bonita, vou usar o <em>Image Calculator</em> (Operação <em>transparent-zero</em>) entre a imagem segmentada e a original.</p>
<p style="text-align: center;">
<div id="attachment_1921" class="wp-caption aligncenter" style="width: 624px"><img class="size-full wp-image-1921 " title="Resultado" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/Result-of-outno.jpg" alt="" width="614" height="409" /><p class="wp-caption-text">Só as folhas...</p></div>
<h2>Créditos</h2>
<p>Imagem de <a href="http://www.flickr.com/photos/marufish/2630373665/" target="_blank">Marufish</a>.</p>
<p>O algoritmo de crescimento de regiões implementado no Fiji está descrito em: R. Nock, F. Nielsen: <strong>Statistical Region Merging. </strong>IEEE Trans. Pattern Anal. Mach. Intell. 26(11): 1452-1458 (2004).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/03/crescimento-de-regioes-usando-fiji/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Detecção de bordas &#8211; Sobel</title>
		<link>http://www.imagesurvey.com.br/2009/10/deteccao-de-bordas/</link>
		<comments>http://www.imagesurvey.com.br/2009/10/deteccao-de-bordas/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 13:10:24 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[detecção de bordas]]></category>
		<category><![CDATA[ImageJ]]></category>
		<category><![CDATA[segmentação de imagens]]></category>
		<category><![CDATA[Sobel]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=1778</guid>
		<description><![CDATA[Venho ensaiando um post sobre detecção de bordas há algum tempo, mas ele acaba ficando para depois por dois motivos: primeiro porque é um tema enorme, segundo porque o ImageJ não é muito bom nisso. Resolvi começar, e vamos ver aonde consigo chegar em um post. O conceito de borda É até estranho pedir para [...]]]></description>
			<content:encoded><![CDATA[<p>Venho ensaiando um post sobre detecção de bordas há algum tempo, mas ele acaba ficando para depois por dois motivos: primeiro porque é um tema enorme, segundo porque o ImageJ não é muito bom nisso. Resolvi começar, e vamos ver aonde consigo chegar em um post.<span id="more-1778"></span></p>
<h2>O conceito de borda</h2>
<div id="attachment_1781" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-1781" title="Balantidium coli" src="http://www.imagesurvey.com.br/wp-content/uploads/2009/10/Balantidium-coli-300x294.jpg" alt="Balantidium coli, por Ed Uthman, MD." width="300" height="294" /><p class="wp-caption-text">Balantidium coli, por Ed Uthman, MD.</p></div>
<p>É até estranho pedir para alguém definir a palavra borda, já que é um conceito daqueles que se formam quando ainda estamos aprendendo a ver (isso é lá pelos primeiros meses de vida). A <strong>nossa visão é especialista em detectar descontinuidades</strong>, mesmo pequenas, e são estas descontinuidades que chamamos de bordas, e muitas (mas não todas) representam os <strong>limites entre os objetos</strong>.</p>
<p>Como cada um de nós tem lá seus anos de experiência em identificar bordas (se você pode ler, tem pelo menos 7, e se está tentando descobrir como fazer seu TCC tem pelo menos 20&#8230;), não pensamos muito sobre como identificamos descontinuidades. Na maioria das vezes processamos a informação até ela ter significado prático para nós, chagando a considerar apenas as descontinuidades que representam limites de um objeto.</p>
<h2>Ok, agora traduza isso para uma linguagem que o computador entenda&#8230;</h2>
<div id="attachment_1807" class="wp-caption alignright" style="width: 307px"><img class="size-medium wp-image-1807" title="aplicacao filtro sobel" src="http://www.imagesurvey.com.br/wp-content/uploads/2009/11/sobelImageJ-297x300.jpg" alt="Aplicação do filtro Sobel diretamente sobre a imagem original, usando ImageJ" width="297" height="300" /><p class="wp-caption-text">Aplicação do filtro Sobel diretamente sobre a imagem original, usando ImageJ</p></div>
<p>A forma mais comum de detecção de bordas é baseada em <strong>filtros</strong>. É como funciona, por exemplo, a única função de detecção de bordas do ImageJ. Ela se resume a um filtro Sobel de tamanho 3&#215;3, aplicado por convolução em duas variações (horizontal e vertical). Depois as duas imagens são combinadas usando a raiz quadrada da soma dos quadrados.</p>
<pre>     1  2  1     1  0 -1
     0  0  0     2  0 -2      Duas variações do filtro Sobel
    -1 -2 -1     1  0 -1</pre>
<p>Aplicando este método diretamente na imagem original (<em>Menu Process &#8211;&gt; Find Edges</em>) obtive um resultado nada útil. O <strong>filtro realçou todas as bordas, mesmo aquelas que nossa visão desconsidera</strong>. Isso acontece com muita frequência, por isso é comum usar um filtro de média, mediana, ou outro método de &#8220;borrar&#8221; a imagem, para que as bordas menos significativas desapareçam.</p>
<h2>Para obter um resultado melhor</h2>
<p><div id="attachment_1810" class="wp-caption alignright" style="width: 443px"><img src="http://www.imagesurvey.com.br/wp-content/uploads/2009/11/Montage.jpg" alt="Sequência de imagens produzidas pelos quatro passos." title="aplicacao filtro sobel" width="433" height="447" class="size-full wp-image-1810" /><p class="wp-caption-text">Sequência de imagens produzidas pelos quatro passos.</p></div>Usei os quatro passos que estão descritos a seguir:</p>
<p><strong>1.</strong> Borrar a imagem, diminuindo a quantidade de bordas: usei o filtro de mediana, que está em <em>Process &#8211;&gt; Filters &#8211;&gt; Median</em>.</p>
<p><strong>2.</strong> Aplicar o detector de bordas na imagem borrada: <em>Process &#8211;&gt; Find Edges</em>.</p>
<p><strong>3.</strong> Transformar a imagem para tons de cinza (para poder aplicar o threshold no passo seguinte). <em>Image &#8211;&gt; Type &#8211;&gt; 8bits</em>.</p>
<p><strong>4.</strong> Aplicar <a href="http://www.imagesurvey.com.br/2008/09/threshold-simples-e-funciona-mas-nao-para-todos/">threshold</a>, descartando o máximo as bordas inúteis e mantendo apenas a informação que interessa.</p>
<p>Repare que o resultado não é uma borda completa fechando o objeto de interesse. Talvez usando alguma outra técnica de suavização no início até melhore o resultado, mas ele não vai ficar perfeito. <strong>Isto porque o objeto não tem uma borda sólida que o circula!</strong> Repare bem na parte de baixo&#8230;</p>
<h2>Entre o filtro e o olho humano</h2>
<p>A aplicação de filtros por convolução é uma operação de processamento de imagens que considera informações de apenas alguns pixels por vêz, e <strong>realça elementos que estão presentes na imagem</strong>. Os filtros não interpretam informação. Por isso não é possível<strong> preencher</strong> a descontinuidade de uma borda usando filtros.</p>
<p>A visão humana, por outro lado, é especialista em preencher falhas e interpretar imagens (veja <a href="http://www.imagesurvey.com.br/2008/12/gestalt-porque-somos-melhores-que-as-maquinas/">Gestalt &#8211; porque somos melhores que as máquinas?</a>). Por isso a diferença entre o resultado atingido neste post e a nossa percepção.</p>
<p>Já existem métodos que se aproximam mais da nossa capacidade de encontrar bordas completas (mesmo onde elas estão incompletas) &#8211; um bom grupo deles é conhecido como <a href="http://delicious.com/gabibau/snakes">snakes</a>. E a <a href="http://www.imagesurvey.com.br/2008/11/um-pouco-de-morfologia-matematica/">morfologia matemática</a> tem ferramentas para completar descontinuidades de poucos pixels. No entanto ainda não foi possível imitar totalmente a visão humana&#8230; estamos tentando!</p>
<h2>Créditos</h2>
<p>Impossível deixar de elogiar o <a href="http://www.flickr.com/photos/euthman/sets/72057594114099781/">Specimens Set</a>, de Ed Uthman, MD. Fazia tempo que eu procurava por boas imagens de microscopia com licença Creative Commons para usar aqui, e em pesquisas. Espero que outros profissionais sigam o exemplo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2009/10/deteccao-de-bordas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recuperação de Imagens por semelhança &#8211; Dissertação de Mestrado de Juliano Weber</title>
		<link>http://www.imagesurvey.com.br/2009/07/recuperacao-imagens-semelhanca-mestrado/</link>
		<comments>http://www.imagesurvey.com.br/2009/07/recuperacao-imagens-semelhanca-mestrado/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 19:53:15 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Métodos]]></category>
		<category><![CDATA[Novidades]]></category>
		<category><![CDATA[CBIR]]></category>
		<category><![CDATA[classificação de imagens]]></category>
		<category><![CDATA[correção de iluminação]]></category>
		<category><![CDATA[detecção de cantos]]></category>
		<category><![CDATA[Harris]]></category>
		<category><![CDATA[Mean-Shift]]></category>
		<category><![CDATA[pesquisa de imagens por conteúdo]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=1697</guid>
		<description><![CDATA[Nesta semana assisti a uma defesa de Mestrado do recém criado Programa de Pós-graduação em Informática da UFSM (não tem link porque a página ainda não existe – mais informações na página do LaCA/UFSM). O trabalho do Juliano Gomes Weber tem o título &#8216;Técnicas de Clusterização baseadas em Características de Cor para Classificação de Imagens&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Nesta semana assisti a uma defesa de Mestrado do recém criado Programa de Pós-graduação em Informática da UFSM (não tem link porque a página ainda não existe – mais informações na página do <a href="http://www.lacawebportal.com.br/" target="_blank">LaCA/UFSM</a>).</p>
<p>O trabalho do Juliano Gomes Weber tem o título <strong>&#8216;Técnicas de Clusterização baseadas em Características de Cor para Classificação de Imagens&#8217;</strong> e foi orientado pelo Prof. Dr. Eng. Marcos C. d’Ornellas. O objetivo: encontrar imagens coloridas por semelhança com precisão e resposta rápida.<span id="more-1697"></span></p>
<h2>O método</h2>
<div id="attachment_1703" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-1703" title="Ponte" src="http://www.imagesurvey.com.br/wp-content/uploads/2009/07/ponte300.jpg" alt="Uma das imagens do banco de imagens." width="300" height="226" /><p class="wp-caption-text">Uma das imagens do banco de imagens.</p></div>
<p>O método que o Juliano implementou tem duas fases: a de <strong>pré-processamento</strong> e a de <strong>comparação</strong> com a imagem escolhida. Para testar o método, ele escolheu um banco de imagens mantido pela Universidade de Washington: o <a href="http://www.cs.washington.edu/research/imagedatabase/" target="_blank">Ground Truth Database</a>, que possui 1085 imagens classificadas em 20 categorias.</p>
<p>Ele implementou seu método e colocou em uma página web: <a href="http://www.ijui.inf.br/cbir/" target="_blank">http://www.ijui.inf.br/cbir/</a></p>
<h2>Pré-processamento</h2>
<div id="attachment_1706" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-1706" title="correção de iluminação" src="http://www.imagesurvey.com.br/wp-content/uploads/2009/07/ponte_ilum300.jpg" alt="Imagem após a correção de iluminação." width="300" height="226" /><p class="wp-caption-text">Imagem após a correção de iluminação.</p></div>
<p>Esta etapa é feita uma vez só para um determinado conjunto de imagens, e não precisa ser repetida. Nela as imagens passam por 3 métodos de processamento: o <strong>Mean-Shift</strong>, para reduzir o número de cores e separar regiões homogêneas; uma <strong>correção de iluminação</strong> para descartar as sombras e um método de <strong>detecção de cantos</strong> (conhecido como <a href="http://en.wikipedia.org/wiki/Corner_detection#The_Harris_.26_Stephens_.2F_Plessey_corner_detection_algorithm" target="_blank">Harris</a>), que é a estrela do trabalho.</p>
<p>A saída desta sequência de processamentos são as <strong>coordenadas dos cantos</strong> encontrados na em cada uma das [1028] imagens. Elas são armazenadas em um banco de dados especialmente estruturado para facilitar (acelerar) a comparação destas coordenadas, entre uma imagem e outra.</p>
<h2>Comparação</h2>
<div id="attachment_1708" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-1708" title="mean-shift" src="http://www.imagesurvey.com.br/wp-content/uploads/2009/07/ponte_ilum_ms300.jpg" alt="Mesma imagem, após a correção de iluminação e o Mean-shift." width="300" height="226" /><p class="wp-caption-text">Mesma imagem, após a correção de iluminação e o Mean-shift.</p></div>
<p>Quando você entra no site do Juliano e escolhe uma imagem para encontrar outras semelhantes, o programa identifica a imagem que você escolheu (que já tem as coordenadas dos cantos calculadas e armazenadas). Os cantos das outras imagens são comparados com os da sua, e o programa exibe as imagens em ordem de semelhança (dos cantos).</p>
<h2>Resultado!</h2>
<p>Se eu falar de um método que identifica imagens com cantos posicionados de forma semelhante, muitas pessoas dirão: e daí?</p>
<p>Mas o fato é que a posição dos cantos tem a var com a <strong>forma</strong>, e com o <strong>nível de detalhes</strong> presentes em uma imagem. Em um grupo de imagens do mesmo assunto, este agrupamento por forma pode ficar bem próximo do que nós, humanos, consideramos <strong>semelhança</strong>.</p>
<p>É claro que não dá certo com qualquer grupo de imagens (e nem o google conseguiu isso ainda), mas tem potencial de aplicação em áreas específicas. Quais? Quaisquer áreas em que a forma dos objetos seja importante&#8230; um osso quebrado tem mais cantos que um inteiro, certo? Células têm formatos diferentes quando vistas ao microscópio, e micro-organismos também.</p>
<h2>Ah, o resultado da defesa&#8230;</h2>
<p>Como todo bom programador, o Juliano levou puxão de orelha porque não escreve direito, e foi aprovado [ <strong>Parabéns!</strong> ], contato que faça algumas (3254363665) modificações no texto do trabalho, que deve chegar no <a href="http://bdtd2.ibict.br/" target="_blank">BDTD</a> em dois ou três meses.</p>
<p>Eu propus, e ele concordou em incluir o <strong>código</strong> como anexo, ou disponibilizá-lo na internet (afinal, código deve ser o que ele escreve melhor&#8230;). Fiquei curiosa sobre como ele implementou o Mean-shift, e sobre o método de correção de iluminação que ele usou.</p>
<p>Quando eu tiver o código volto a falar nestes assuntos.</p>
<h2>Para fazer mestrado&#8230;</h2>
<p>Se você gostou o que leu, e pensa sobre fazer um mestrado nessa área, <a href="http://www.lacawebportal.com.br/2009/07/laca-tera-3-vagas-no-ppgep-para-o-primeiro-semestre-de-2010/" target="_blank">tem vaga para 2010</a>. A continuidade deste trabalho, seja melhorando o método ou aplicando em alguma <em>situação da vida real</em>, é só um dos temas que você pode escolher.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2009/07/recuperacao-imagens-semelhanca-mestrado/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

