<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>ImageSurvey</title>
	
	<link>http://www.imagesurvey.com.br</link>
	<description>Processamento de imagens na prática</description>
	<lastBuildDate>Wed, 21 Jul 2010 13:10:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/imagesurvey" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="imagesurvey" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">imagesurvey</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><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>0</slash:comments>
		</item>
		<item>
		<title>Anima contando objetos!</title>
		<link>http://www.imagesurvey.com.br/2010/07/anima-contando-objetos/</link>
		<comments>http://www.imagesurvey.com.br/2010/07/anima-contando-objetos/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 13:47:56 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Novidades]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Anima]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2101</guid>
		<description><![CDATA[Há algum tempo tenho trabalhado, junto com meus colegas da Animati, em um software de código aberto para processamento e análise de imagens &#8211; o Anima. Ele ainda está nas versões &#8220;alpha&#8221;, mas já temos algumas funções em pleno funcionamento. Para mostrar um pouco do Anima, revisitei o primeiro tutorial deste blog: Como contar objetos. [...]]]></description>
			<content:encoded><![CDATA[<p>Há algum tempo tenho trabalhado, junto com meus colegas da <a href="http://www.animati.com.br" target="_blank">Animati</a>, em um software de código aberto para processamento e análise de imagens &#8211; o <a href="http://www.animati.com.br/anima" target="_blank">Anima</a>. Ele ainda está nas versões &#8220;alpha&#8221;, mas já temos algumas funções em pleno funcionamento.</p>
<p>Para mostrar um pouco do Anima, revisitei o primeiro tutorial deste blog: <a href="http://www.imagesurvey.com.br/2008/10/tutorial-imagej-como-contar-objetos-parte-i/" target="_blank">Como contar objetos.</a> O resultado coloquei num vídeo.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/0I0nUq62VCE&amp;hl=pt_BR&amp;fs=1?rel=0&amp;color1=0x402061&amp;color2=0x9461ca"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/0I0nUq62VCE&amp;hl=pt_BR&amp;fs=1?rel=0&amp;color1=0x402061&amp;color2=0x9461ca" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>A interface ainda tem seus defeitos (como o fato dos diálogos não abrirem onde querem, às vezes fora da janela principal), mas estamos trabalhando nisso também.</p>
<p>O importante neste projeto é que está sendo construído como uma plataforma de testes e desenvolvimento, isto é, <strong>arquitetura de software favorecendo a extensão</strong>.</p>
<p>Por enquanto, é um software mais para desenvolvedores, e &#8220;beta-testers&#8221;, mas pretendemos facilitar as coisas para o usuário comum, com dicas e informações na interface. Alguns alunos do <a href="http://www.lacawebportal.com.br" target="_blank">LaCA</a> já estão utilizando o Anima para implementar seus projetos de pesquisa e as novas ferramentas estão por vir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/07/anima-contando-objetos/feed/</wfw:commentRss>
		<slash:comments>2</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>0</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>2</slash:comments>
		</item>
		<item>
		<title>Mean-shift: segmentação em cores</title>
		<link>http://www.imagesurvey.com.br/2010/05/mean-shift-segmentacao-em-cores/</link>
		<comments>http://www.imagesurvey.com.br/2010/05/mean-shift-segmentacao-em-cores/#comments</comments>
		<pubDate>Wed, 12 May 2010 12:00:21 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[cor]]></category>
		<category><![CDATA[detecção de bordas]]></category>
		<category><![CDATA[ImageJ]]></category>
		<category><![CDATA[Mean-Shift]]></category>
		<category><![CDATA[segmentação de imagens]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2031</guid>
		<description><![CDATA[Mean-shift é um método de segmentação baseado em cores, ou seja, no caráter multidimensional das imagens coloridas. Hoje vou mostrar um exemplo de uso, com um plugin do ImageJ. A teoria toda não cabe num post, por isso deixo para mais adiante. Uma Imagem Já trabalhei com a imagem escolhida em outro post (sobre como [...]]]></description>
			<content:encoded><![CDATA[<p>Mean-shift é um método de segmentação baseado em cores, ou seja, no caráter multidimensional das imagens coloridas. Hoje vou mostrar um exemplo de uso, com um plugin do ImageJ. A teoria toda não cabe num post, por isso deixo para mais adiante.<br />
<span id="more-2031"></span></p>
<h2>Uma Imagem</h2>
<p><img class="alignright size-medium wp-image-530" title="contornos de lapis" src="http://www.imagesurvey.com.br/wp-content/uploads/2008/11/contornosdelapis-300x169.jpg" alt="" width="300" height="169" />Já trabalhei com a imagem escolhida em outro post (sobre como <a href="http://www.imagesurvey.com.br/wp-admin/post.php?action=edit&amp;post=526">agrupar imagens em pilhas</a>), e naquela a segmentação não ficou tão boa, no final. é uma imagem difícil justamente por causa da variedade de cores.</p>
<p>Vamos considerar que, no exemplo de hoje, meu interesse á contar quantos lápis aparecem na imagem. Por uma questão de amostragem, vou contar apenas aqueles em que a parte colorida (a que desenha) ficou inteira dentro do enquadramento.</p>
<h2>O plug-in</h2>
<p>O plug-in que vamos usar pode ser obtido em <a href=" http://rsb.info.nih.gov/ij/plugins/mean-shift.html">http://rsb.info.nih.gov/ij/plugins/mean-shift.html</a>, e foi desenvolvido por Kai Uwe Barthel (thanks!), de Berlin, na Alemanha.</p>
<p>Instruções de instalação estão lá no link também (se você tem Ubuntu, vai querer dar uma olhada <a href="http://www.imagesurvey.com.br/2009/07/plugins-do-imagej-no-ubuntu/">aqui</a>).</p>
<h2>O processo de segmentação</h2>
<h3 style="clear: none;">Passo 1: Mean-shift</h3>
<p>Se a instalação do plugin funcionou, você vai encontrar um item Mean Shit na parte de baixo do Menu plugin. Clique aí.<br />
<a href="http://www.imagesurvey.com.br/wp-content/uploads/2010/05/Lapis_after_MS.jpg"><img class="alignleft size-medium wp-image-2036" title="Lapis_after_MS" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/05/Lapis_after_MS-300x169.jpg" alt="" width="300" height="169" /></a><br />
O diálogo que aparece pede dois valores:  <strong>Spatial Radius</strong> e <strong>Color Distance</strong>. Como não vou entrar na teoria agora, não tenho como explicar o que cada um faz, mas pense que alterá-los muda um pouco o resultado, e que se você tem uma imagem diferente da minha provavelmente vai querer testar algumas combinações escolher a que der um resultado melhor.</p>
<p>Eu fiquei com <strong>Spatial Radius = 7</strong> e <strong>Color Distance = 25</strong>.</p>
<h3>Passo 2:  Filtro de mediana</h3>
<p>O resultado do mean-shift foi bom, mas aqueles<strong> pontinhos escuros e ranhuras </strong>nos lápis podem atrapalhar a deteção de bordas (passo 3), então usei um <a href="http://www.imagesurvey.com.br/2010/03/filtro-de-mediana/">filtro de mediana</a> (valor 7 resolve) pra eliminá-los.</p>
<h3>Passo 3:  Detecção de bordas</h3>
<p>Se o ImageJ tivesse um algoritmo de rotulagem para imagens coloridas poderíamos usá-lo aqui e estaria tudo pronto. Mas não tem, então precisamos de alguns passos adicionais, só para chegarmos lá com as ferramentas que temos.</p>
<p>Use a <a href="http://www.imagesurvey.com.br/2010/03/2009/10/deteccao-de-bordas/">detecção de bordas</a> a partir do menu Process &#8211;&gt; Find Edges. O resultado pode ser visto na primeira imagem da montagem abaixo.</p>
<h3>Passo 4:  Elimine as cores</h3>
<p><img class="alignright size-full wp-image-2037" title="Montage_MSresult" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/05/Montage_MSresult.png" alt="" width="226" height="382" />O threshold só funciona em tons de cinza, então converta esta imagem par a 8-bits, usando Image &#8211;&gt; Type &#8211;&gt; 8-bit.</p>
<h3 style="clear: none;">Passo 5:  Treshold</h3>
<p>Ache um ponto de threshold em que as linhas dos objetos que interessam (a parte interna dos lápis) ficam tem nítidas. Será necessário selecionar a opção &#8220;Dark backgroud&#8221;  no diálogo de treshold para que as linhas fiquem brancas e todo o resto, preto.</p>
<h3 style="clear: none;">Passo 6: Análise</h3>
<p>Use o <a href="http://www.imagesurvey.com.br/2010/03/2008/10/tutorial-imagej-como-contar-objetos-parte-ii/">Particle Analyser</a> para rotular e obter o número de objetos.</p>
<p>O truque aqui é preencher os buracos (isso vai pintar dentro das bordas) e limitar a partículas com circularidade alta, (usei 0.9) &#8211; o que elimina tudo que não for muito parecido com um círculo.</p>
<p>O resultado é perfeito &#8211; 14 bolinhas, que representam os 14 lápis que apareceram no enquadramento da foto.</p>
<p>A tabela de resultados mostra todas as 14 regiões e seus valores de área o outro que tenham sido pedidos.</p>
<h2>Crédito da imagem:</h2>
<p><em>A imagem dos lápis é de <a href="http://www.flickr.com/photos/luchilu/">*L*u*z*a*</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/05/mean-shift-segmentacao-em-cores/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Tipos de características das imagens</title>
		<link>http://www.imagesurvey.com.br/2010/04/tipos-de-caracteristicas-das-imagens/</link>
		<comments>http://www.imagesurvey.com.br/2010/04/tipos-de-caracteristicas-das-imagens/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 12:26:39 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Conceitos em PDI]]></category>
		<category><![CDATA[Padrões para imagens]]></category>
		<category><![CDATA[classificação de imagens]]></category>
		<category><![CDATA[cor]]></category>
		<category><![CDATA[matriz de co-ocorrência]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2017</guid>
		<description><![CDATA[Chama-se de extração de características todo o conjunto de operações de processamento e análise de imagens realizadas com a finalidade de obter valores numéricos que caracterizam as imagens ou partes delas. Este artigo fala do universo de características que podemos extrair das imagens, e de como encontrar o conjunto delas que vai ser importante para [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left; padding: 5px;"><a href="http://www.researchblogging.org"><img alt="ResearchBlogging.org" src="http://www.researchblogging.org/public/citation_icons/rb2_large_gray.png" style="border:0;"/></a></span>Chama-se de extração de características todo o conjunto de operações de processamento e análise de imagens realizadas com a finalidade de obter valores numéricos que caracterizam as imagens ou partes delas. Este artigo fala do universo de características que podemos extrair das imagens, e de como encontrar o conjunto delas que vai ser importante para cada situação.<span id="more-2017"></span></p>
<p>Este texto aqui (baseado nos conceitos desenvolvidos em um trabalho de Rodenacker e Bengtsson (2003)) eu tenho copiado/colado em vários outros trabalhos depois que escrevi para a minha dissertação de mestrado. O alto nível de reciclagem indica que ele é extremamente útil, por isso resolvi publicá-lo aqui (com as devidas adaptações).</p>
<h2>Extração de Características</h2>
<p><strong>Rodenacker e Bengtsson (2003)</strong> publicaram um estudo sobre técnicas de extração de características que, embora tenha sido motivado pela pesquisa em citologia, serve como referência para quaisquer aplicações de análise de imagens. Nele os autores apresentam um sistema de taxonomia para as características que podem ser extraídas das imagens digitais. O sistema usa <strong>padrões claros de nomenclatura e definição de características</strong>, e eu acabei adotando de modo generalizado.</p>
<p>As características são agrupadas em quatro grandes categorias:</p>
<h2>a) Características Morfológicas</h2>
<p>São as <strong>medidas da forma</strong> dos objetos que compõem a imagem. Elas não levam em conta a intensidade dos pixels e podem ser calculadas sobre imagens binárias que resultam do processamento das imagens coloridas.</p>
<p>Circularidade, área, largura, etc.</p>
<h2>b) Características Cromáticas</h2>
<p>São as que <strong>descrevem a cor</strong>, ou composição espectral da radiação emitida ou refletida dos objetos, quantificada pela intensidade dos pixels em diferentes bandas espectrais (que significa&#8230; cor). </p>
<p>Medidas estatísticas das intensidades, como média, mediana, desvio-padrão, e outras, são usadas para caracterizar os pixels pertencentes a cada objeto. Estas características podem ser extraídas diretamente de cada banda que compõe a imagem.</p>
<h2>c) Características Texturais</h2>
<p>São medidas que caracterizam a variabilidade local das intensidades dos pixels. Dentre as várias formas de medir texturas, há os métodos que utilizam a de <a href="http://www.imagesurvey.com.br/2010/03/2008/09/matriz-de-co-ocorrencia-o-que-e-e-como-se-faz/">matriz de co-ocorrência</a>, dos quais já falei aqui no blog.</p>
<h2>d) Características Estruturais ou Contextuais</h2>
<p>Estes descrevem a relação entre um ou mais objetos que compõem a imagem, com por exemplo, a posição do núcleo de uma célula com relação à sua membrana. Lembro que este conceito foi o mais difícil de entender quando tive esta aula, mas pode ser que um exemplo sirva para amenizar a confusão. </p>
<p>No post da semana passada, que analisava um caso de <a href="http://www.imagesurvey.com.br/2010/04/problema-do-mundo-real-pinos-dentarios-em-microscopia-eletronica/">segmentação em uma imagem de um pino em um dente</a>, precisamos segmentar apenas as áreas que estavam dentro de uma camada. Para isso precisamos identificar a camada em questão e as áreas de cor branca. <strong>Eram necessários dados de duas regiões para decidir se uma delas seria incluída na amostra</strong> &#8211; isto marca uma característica estrutural.</p>
<h2>Na prática</h2>
<p>Na prática percebi que esta classificação não tem só o sentido semântico bem organizado &#8211; ela ajuda na implementação da classificação também. </p>
<p>C. <strong>Morfológicas</strong> podem ser obtidas usando só o perímetro de uma área; as <strong>Cromáticas</strong> precisam das 3 bandas da imagem; <strong>Texturais</strong> são normalmente de processamento mais lento (só use-as quando nada mais funcionar); e as <strong>Estruturais</strong> usam informações já calculadas dentro dos outros grupos de características.</p>
<h2>Referência:</h2>
<p><span class="Z3988" title="ctx_ver=Z39.88-2004&#038;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&#038;rft.jtitle=Analytical+cellular+pathology+%3A+the+journal+of+the+European+Society+for+Analytical+Cellular+Pathology&#038;rft_id=info%3Apmid%2F12590175&#038;rfr_id=info%3Asid%2Fresearchblogging.org&#038;rft.atitle=A+feature+set+for+cytometry+on+digitized+microscopic+images.&#038;rft.issn=0921-8912&#038;rft.date=2003&#038;rft.volume=25&#038;rft.issue=1&#038;rft.spage=1&#038;rft.epage=36&#038;rft.artnum=&#038;rft.au=Rodenacker+K&#038;rft.au=Bengtsson+E&#038;rfe_dat=bpr3.included=1;bpr3.tags=Computer+Science%2CGraphics%2C+Algorithms">Rodenacker K, &#038; Bengtsson E (2003). A feature set for cytometry on digitized microscopic images. <span style="font-style: italic;">Analytical cellular pathology : the journal of the European Society for Analytical Cellular Pathology, 25</span> (1), 1-36 PMID: <a rev="review" href="http://www.ncbi.nlm.nih.gov/pubmed/12590175">12590175</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/04/tipos-de-caracteristicas-das-imagens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problema do mundo real: pinos dentários em microscopia eletrônica</title>
		<link>http://www.imagesurvey.com.br/2010/04/problema-do-mundo-real-pinos-dentarios-em-microscopia-eletronica/</link>
		<comments>http://www.imagesurvey.com.br/2010/04/problema-do-mundo-real-pinos-dentarios-em-microscopia-eletronica/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 11:28:55 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ImageJ]]></category>
		<category><![CDATA[microscopia]]></category>
		<category><![CDATA[reconhecimento de padrões]]></category>
		<category><![CDATA[threshold]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=2004</guid>
		<description><![CDATA[Uma leitora me enviou uma imagem na semana passada, perguntando como resolver um problema de segmentação. Ela permitiu o uso da imagem neste post, por isso, mãos à obra! Trata- se de uma imagem obtida por microscopia eletrônica, de um pino dentário. Não pude automatizar a solução do problema, mas a análise e a solução [...]]]></description>
			<content:encoded><![CDATA[<p>Uma leitora me enviou uma imagem na semana passada, perguntando como resolver um problema de segmentação. Ela permitiu o uso da imagem neste post, por isso, mãos à obra! Trata- se de uma imagem obtida por microscopia eletrônica, de um pino dentário. Não pude automatizar a solução do problema, mas a análise e a solução manual podem orientar um caminho.<span id="more-2004"></span></p>
<h2>O problema</h2>
<div id="attachment_2005" class="wp-caption alignright" style="width: 310px"><a href="http://www.imagesurvey.com.br/wp-content/uploads/2010/04/9-U100-cervical-2-x50.png"><img class="size-medium wp-image-2005" title="9 U100 cervical (2) x50" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/04/9-U100-cervical-2-x50-300x225.png" alt="" width="300" height="225" /></a><p class="wp-caption-text">Pino de fibra dentro de um dente</p></div>
<p>Esta imagem é o corte de um dente no qual foi inserido um pino de fibra. A parte de fora é o dente; a de dentro com pequenas fibras circulares, é o pino de fibra, e circulando este pino há uma camada de adesivo. Em um mundo ideal a camada de adesivo aderiria completamente ao dente, mas isso não acontece, e as falhas na aderência aparecem em branco.</p>
<p>Em um mundo ideal também não haveria falhas [brancas] no dente ou na fibra para atrapalhar a segmentação. Isso são coisas que só acontecem no mundo real&#8230;</p>
<p>O objetivo aqui é quantificar as falhas na aderência do pino, que aparecem em branco, apenas na parte de fora da camada que uni o dente ao pino.</p>
<h2>Traduzindo o problema</h2>
<p>Com a explicação acima você provavelmente já identificou de que regiões, na imagem, eu estou falando.  Apesar de esta explicação ser suficiente para humanos ela não funciona para máquinas.</p>
<p><strong>Queremos as regiões brancas&#8230; mas não todas&#8230; só as que estão na parte da fora da camada adesiva.</strong></p>
<p>Desta afirmação tiramos duas características:</p>
<p><strong>Regiões brancas: </strong>Característica colorimétrica; diz respeito ao valor de intensidade dos pixels. Como a diferença de intensidade entre as regiões de interesse e <strong>quase todo</strong> o restante da imagem é grande, um dos métodos de segmentação que provavelmente funcionará é o <a href="http://www.imagesurvey.com.br/2010/03/2008/09/threshold-simples-e-funciona-mas-nao-para-todos/">threshold</a>.</p>
<p><strong>Contidas na parte de fora da camada adesiva:</strong> Característica estrutural (diz respeito ao arranjo das regiões, umas em relação às outras &#8211; este tipo de característica é um pouco mais complexo que os outros). A presença de uma característica espacial indica que não será suficiente reconhecer só as regiões de interesse &#8211; <strong>precisaremos conhecer a localização de outras estruturas também</strong>.</p>
<h2>Escala e outros ajustes</h2>
<p>Antes de mais nada, <a href="http://www.imagesurvey.com.br/2010/03/2009/05/como-captar-imagens-para-processamento-usando-sua-camera-digital/">ajuste a escala</a>. Use barra horizontal na parte de baixo, que conforme está anotado abaixo dela, tem exatamente 500 micrômetros.</p>
<p>Agora ajuste as cores usadas pelo ImageJ: <em>Edit &#8211;&gt; Options&#8230;</em> Em Foreground, selecione White (branco); em Background, selecione Black (preto). Isso vai evitar muita confusão adiante.</p>
<h2>Identificando a estrutura de interesse</h2>
<p>Vamos usar seleção manual desta vez. Não achei nenhuma solução automatizada, mas imagino que possa-se encontrar algo dedicando algum tempo à pesquisa.</p>
<div id="attachment_2009" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-2009" title="Editando seleção circular" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/04/selecao-300x229.jpg" alt="" width="300" height="229" /><p class="wp-caption-text">Editando seleção circular.</p></div>
<p>Escolha a seleção circular na barra de ferramentas e use-a para desenhar um círculo na parte de fora da camada adesiva. As seleções, no ImageJ facilitam a vida, deixando que <strong>mudemos a localização dos pontos de referência com o mouse</strong>: é só arrastar.</p>
<p>Quando ficar feliz com o limite externo, vá em <em>Edit &#8211;&gt; Clear Outside</em>. A parte de fora da seleção vai ficar toda em preto.</p>
<p>Depois ajuste a seleção para a parte de dentro da camada adesiva, só que desta vez use <em>Edit &#8211;&gt; Clear</em>, para tornar preta a área dentro da seleção.</p>
<h2>Agora, threshold</h2>
<p>Depois de ficar só com a estrutura de interesse, e o resto da imagem preta,<strong> ajuste o threshold manualmente</strong> para que fiquem só as áreas brancas, e clique em Aply. Isso deve gerar uma imagem com fundo branco e as áreas (que antes eram brancas), em preto. (Na verdade acho que essas cores não fazem muito sentido, mas é assim que o ImageJ funciona)</p>
<h2>Medição da área</h2>
<p>Já escrevi de forma detalhada <a href="http://www.imagesurvey.com.br/2010/03/2008/10/tutorial-imagej-como-contar-objetos-parte-ii/">como usar o Particle Analyzer</a> do ImageJ, então qualquer dúvida é só dar uma olhada lá.</p>
<p>Em <em>Analyse &#8211;&gt; Set Measurements</em>, selecione Área.</p>
<p>Vá em <em>Analyse &#8211;&gt; Analyse Particles&#8230;</em> para abrir o diálogo do analisador.</p>
<p>Tudo fica como está, apenas selecione <em>Display Results</em> e <em>Summarize</em>, para poder ver os resultados.</p>
<p><strong>Resultado:</strong></p>
<p>A tabela <em>Results </em>vai mostrar a <strong>área de cada partícula medida</strong>, e é útil se você quiser identificar as áreas ou mesmo eliminar algumas. No entanto, se for importante identificar regiões em separado, seria bom usar uma <a href="http://www.imagesurvey.com.br/2010/03/2008/12/abertura-e-fechamento/">operação de fechamento</a>, já que nesta escala as regiões ficaram muito finas e acabam se separando.</p>
<p>As áreas estão em micrômetros, como já ajustamos a escala no início.</p>
<p>Na tabela <em>Summary</em>, ficam os resultados gerais. De lá você consegue a <strong>área total</strong>.</p>
<h2>Automatização</h2>
<p><strong>Automatizar o processo exige um pouco mais de pesquisa</strong>. O maior problema é identificar a camada adesiva sem que as falhas influenciem na segmentação. Eu consegui alguns resultados interessantes usando filtro de mínima, mas não chegou a ficar bom.</p>
<h2>Créditos</h2>
<p>A imagem é de <strong>Danielson Pontes</strong>; e quem enviou as informações foi <strong>Fabiola Silva</strong>.</p>
<p><strong>Hei! Este é o post de número 101, e eu nem tinha percebido&#8230; <img src='http://www.imagesurvey.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/04/problema-do-mundo-real-pinos-dentarios-em-microscopia-eletronica/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>As cores</title>
		<link>http://www.imagesurvey.com.br/2010/04/as-cores/</link>
		<comments>http://www.imagesurvey.com.br/2010/04/as-cores/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 12:38:22 +0000</pubDate>
		<dc:creator>Gabriela Bauermann</dc:creator>
				<category><![CDATA[Conceitos em PDI]]></category>

		<guid isPermaLink="false">http://www.imagesurvey.com.br/?p=1982</guid>
		<description><![CDATA[Cores é outro tema que eu vinha protelando. Mas um dia desses uma daquelas piadas de &#8220;meninas contra meninos&#8221; me deu um caminho para abordar o assunto de uma forma mais leve. Prometo não falar agora dos &#8220;cones e bastonetes&#8221; &#8211; tem bastante sobre eles na wikipedia. Vou falar só das cores. Num feed compartilhado [...]]]></description>
			<content:encoded><![CDATA[<p>Cores é outro tema que eu vinha protelando. Mas um dia desses uma daquelas piadas de &#8220;meninas contra meninos&#8221; me deu um caminho para abordar o assunto de uma forma mais leve. Prometo não falar agora dos &#8220;cones e bastonetes&#8221; &#8211; tem bastante sobre eles na wikipedia. Vou falar só das cores.<span id="more-1982"></span></p>
<p><img class="alignleft size-full wp-image-1987" title="cores" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/03/colores.jpg" alt="" width="477" height="447" /><br />
Num feed compartilhado pelo <a href="http://www.google.com.br/reader/view/user/06834435385572115292/state/com.google/broadcast" target="_blank">Hémerson Hernandez</a> achei esta imagem interessantíssima, e lembrei da primeira aula do <a href="http://w3.ufsm.br/juca/">Juca</a> sobre cores.</p>
<p>Ele apontou para a parede e perguntou de que cor ela era. Os homens responderam em coro: &#8220;Branca!&#8221;. As duas mulheres da turma (eu e minha colega Marlise) tiveram que pensar um pouco&#8230; &#8220;Bege claro?&#8221; &#8220;Talvez gelo&#8230; não, bege claro.&#8221;</p>
<p>Não vou falar aqui sobre quem sabe mais de cores &#8211; <strong>o fato de os times de futebol preferirem cores básicas não me deixa dúvidas</strong>. Vou falar sobre o <strong>motivo pelo qual as pessoas discordam sobre cores</strong>. Porque aquela cor que fica entre o verde e o azul é chamada de verde por uns e de azul por outros?</p>
<p>Bom, é porque, se considerarmos a cor como uma grandeza, ela é uma <strong>grandeza contínua e multidimensional</strong>. (não lembro de ter lido isso em nenhum livro, vou explicar)</p>
<h2>Grandeza Contínua</h2>
<div id="attachment_1992" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-1992" title="sky" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/04/sky-300x201.jpg" alt="" width="300" height="201" /><p class="wp-caption-text">Azul contínuo do céu.</p></div>
<p>Na matemática, dizemos que uma grandeza é algo que pode ser medido. Se é algo que só existem em intervalos definidos, é uma <strong>grandeza discreta</strong>; o que pode ter qualquer valor é uma <strong>grandeza contínua</strong>. Quantidade de pessoas, por exemplo, é uma grandeza discreta, porque não existe 0,5 pessoa. Quantidade de água é uma grandeza contínua, como a cor.</p>
<p>Compare duas folhas de papel de marcas diferentes e verá uma pequena variação no tom de branco.</p>
<p>Quando damos nomes às cores, é para facilitar a linguagem coloquial, já que na maioria das vezes não interessa qual o valor de cor específico, mas se é verde como uma planta, ou azul como o céu. Mas &#8220;azul&#8221; representa um <strong>intervalo de cor</strong>, com limites não muito bem definidos.</p>
<p>Quando os fabricantes de tinta dão números às cores, estão <strong>discretizando</strong> a grandeza contínua, para poder padronizar seus produtos.</p>
<h2>Multidimensional</h2>
<p><img class="alignleft size-medium wp-image-1994" title="sombrinhas coloridas" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/04/2072864524_88974e661a-300x282.jpg" alt="" width="300" height="282" />A maiorias das imagens coloridas com que lidamos no computador estão no <strong>modelo RGB</strong>. Isso significa que a cor é representada por três valores em cada pixel: um para R (vermelho), um para G (verde) e um para B (azul). Este é um modelo de cor, que usa três dimensões para representá-la.</p>
<p>A <strong>cor é representada em modelos de três a quatro dimensões</strong> desde quando Leonardo da Vinci começou a estudar as cores para pintar melhor (ou talvez antes). Nesta época eles usavam o modelo dos pintores, ou roda dos pintores, que pode ser encontrada até hoje nas aulas de pintura.</p>
<p>As tentativas de reduzir as cores a uma dimensão simplesmente não vingaram.</p>
<p>Uma boa ferramenta pra ver a cor em três dimensões é o Color Inspector 3D, do <a href="http://pacific.mpi-cbg.de/wiki/index.php/Main_Page">Fiji</a> (fica no menu Analyse). Esta ferramenta localiza cada pixel da imagem no lugar que ele ocupa no espaço tridimensional de cor. Você ainda pode mudar o modelo de cor para ver como cada um deles representa a imagem de forma diferente.</p>
<div id="attachment_1997" class="wp-caption alignleft" style="width: 610px"><img class="size-full wp-image-1997" title="color inspector 3d" src="http://www.imagesurvey.com.br/wp-content/uploads/2010/04/color-inspector-3d.png" alt="" width="600" height="215" /><p class="wp-caption-text">Imagem das sombrinhas representada no Color Inspector 3D: nos modelos RGB, Lab e HSB (da esquerda para a direita).</p></div>
<h2>So, what?</h2>
<p>Tudo isso para concluir que:</p>
<ul>
<li>Os homens só discretizam as cores um pouco (hehehe) mais que as mulheres.</li>
<li>Não adianta perguntar: &#8220;como eu faço para diferenciar entre a parte mais verde e a parte menos verde das minhas algas?&#8221; &#8211; mais verde e menos verde são palavras que não significam nada sem que as duas pessoas estejam olhando para a mesma imagem.</li>
<li>A maiorias dos métodos de segmentação que já expliquei aqui usam apenas uma dimensão de intensidade dos pixels, dispensando parte da informação de cor. Isto funciona para muitos casos e é mais simples de entender e implementar. <strong>Existem métodos que usam toda a informação de cor para segmentar a imagem</strong>, e ainda vou falar de alguns deles, mas eles são bem mais complexos de entender e levam mais tempo para executar.</li>
</ul>
<h2>Créditos das imagens:</h2>
<p>Cores para homens e mulheres &#8211; Eu tirei <a href="http://testosterona.blog.br/2010/03/18/o-nome-das-cores-para-homens-e-mulheres/">daqui</a>; Se quiser saber o autor original vai ter que seguir os links (eu tentei, mas são muitos&#8230;).<br />
Céu azul &#8211; de <a href="http://www.flickr.com/photos/aloshbennett/">aloshbennett</a>.<br />
Sombrinhas coloridas &#8211; por <a href="http://www.flickr.com/photos/gagilas/">gagilas</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.imagesurvey.com.br/2010/04/as-cores/feed/</wfw:commentRss>
		<slash:comments>2</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>1</slash:comments>
		</item>
	</channel>
</rss>
