<?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>Dilatação &#8211; Visão Computacional</title>
	<atom:link href="https://visaocomputacional.com.br/tag/dilatacao/feed/" rel="self" type="application/rss+xml" />
	<link>https://visaocomputacional.com.br</link>
	<description>Tecnologias, teorias e testes.</description>
	<lastBuildDate>Thu, 28 Aug 2025 18:27:01 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.1</generator>

<image>
	<url>https://visaocomputacional.com.br/wp-content/uploads/2021/12/cropped-logo-150x150-1-32x32.png</url>
	<title>Dilatação &#8211; Visão Computacional</title>
	<link>https://visaocomputacional.com.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Morfologia Matemática &#8211; Esqueletização de imagem</title>
		<link>https://visaocomputacional.com.br/morfologia-matematica-esqueletizacao-de-imagem/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=morfologia-matematica-esqueletizacao-de-imagem</link>
		
		<dc:creator><![CDATA[Piemontez]]></dc:creator>
		<pubDate>Thu, 18 May 2023 16:48:59 +0000</pubDate>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[Dilatação]]></category>
		<category><![CDATA[Dilate]]></category>
		<category><![CDATA[Erode]]></category>
		<category><![CDATA[Erosão]]></category>
		<category><![CDATA[Esqueletização]]></category>
		<category><![CDATA[Morfologia]]></category>
		<guid isPermaLink="false">https://visaocomputacional.com.br/?p=4294</guid>

					<description><![CDATA[<p>Uma abordagem importante, para representação da forma de um objeto, é transformá-la em uma estrutura mais simples, chamada de esqueleto.</p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/morfologia-matematica-esqueletizacao-de-imagem/">Morfologia Matemática &#8211; Esqueletização de imagem</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Uma abordagem importante, para representação da forma de um objeto, é transformá-la em uma estrutura mais simples, chamada de esqueleto. O esqueleto de um objeto pode ser obtido por meio de diversas técnicas, como transformada de distância, afinamento de objetos entre outras.</p>



<p>Neste artigo, será apresentado como utilizar a morfologia para extração do esqueleto de uma imagem binarizada. Acesse <a href="https://visaocomputacional.com.br/morfologia-matematica-para-processamento-de-imagens/">Morfologia Matemática para Processamento de Imagens</a>, para entender sobre erosão e dilatação, operações que são a base dos cálculos apresentados a seguir.</p>



<h3>Transformada do eixo-médio</h3>



<p>A transformada do eixo-médio, proposto por Blum (1967), determina o conjunto de pontos que estão mais próximos da borda do objeto. De uma maneira formal, o eixo médio de um objeto é composto pelos centros das maiores circunferências que cabem no objeto. A figura 1 ilustra essa definição para um retângulo <a href="#refs">[PS]</a>.</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-11.png" alt="" class="wp-image-4356" width="527" height="243" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-11.png 480w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-11-300x138.png 300w" sizes="(max-width: 527px) 100vw, 527px" /><figcaption>Fig 1- Esqueleto de um retângulo definido a partir da transformada do eixo-médio <a href="#refs">[RSA]</a>.</figcaption></figure></div>



<p>Embora a transformada do eixo médio resulte em um esqueleto aceitável. Sua utilização na prática resulta em um problema em termos computacionais. Tal implementação envolve o cálculo da distância entre cada ponto interior e da borda do objeto. Diversos algoritmos foram propostos para tentar melhorar a eficiência desta transformada <a href="#refs">[PS]</a>. </p>



<p>Outros exemplos de objetos e seu esqueletos são demonstrados na figura 2. Pode-se observar, nas duas primeiras imagens, que objetos e formas diferentes podem ter o mesmo esqueleto. </p>



<figure class="wp-block-image size-full"><img loading="lazy" width="840" height="703" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-8.png" alt="" class="wp-image-4295" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-8.png 840w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-8-300x251.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-8-768x643.png 768w" sizes="(max-width: 840px) 100vw, 840px" /><figcaption>Fig 2 &#8211; Ilustração de esqueleto de formas geométricas.</figcaption></figure>



<h3>Transformada de distância</h3>



<p>A transformada de distância corresponde ao mapa resultante da distância entre cada ponto interior do objeto e de sua borda mais próxima <a href="#refs">[PS]</a>. Essa transformação depende do tipo de cálculo de distância utilizado.</p>



<p>Um exemplo do processo da transformada de distância é ilustrado na figura 3, o esqueleto do objeto, formado pelos valores mais altos de distância, corresponde às regiões mais claras. O cálculo de distância utilizado é a distância euclidiana.</p>



<div class="wp-block-columns">
<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="253" height="373" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-12.png" alt="" class="wp-image-4368" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-12.png 253w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-12-203x300.png 203w" sizes="(max-width: 253px) 100vw, 253px" /></figure>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="253" height="373" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-13.png" alt="" class="wp-image-4369" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-13.png 253w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-13-203x300.png 203w" sizes="(max-width: 253px) 100vw, 253px" /><figcaption>Fig 3 &#8211; Transformada de distância. </figcaption></figure>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="253" height="373" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-14.png" alt="" class="wp-image-4370" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-14.png 253w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-14-203x300.png 203w" sizes="(max-width: 253px) 100vw, 253px" /></figure>
</div>
</div>



<p>Na figura 4, é ilustrada uma imagem binária, sua representação da transformada euclidiana e seu esqueleto criado, a partir dos valores mais altos (pontos claros).</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-15-1024x161.png" alt="" class="wp-image-4373" width="840" height="132" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-15-1024x161.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-15-300x47.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-15-768x121.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-15.png 1096w" sizes="(max-width: 840px) 100vw, 840px" /><figcaption>Fig 4 &#8211; Ilustração de transformada de distância <a href="#refs">[LQ]</a>.</figcaption></figure>



<h3>Processo de esqueletização com morfologia matemática</h3>



<p>A esqueletização de uma imagem binarizada por morfologia, apresentada a seguir, tem como base a transformada de distância. Todo o processo é bem simples, com apenas duas operações morfológicas e uma subtração, encadeadas em um laço é possível extrair o esqueleto.</p>



<p>Observe a imagem binarizada A e o elemento estruturante B, logo abaixo. Nas linhas seguintes, observe que:</p>



<ul><li>A primeira coluna apresenta a erosão por B da imagem da linha anterior;</li><li>A segunda coluna apresenta a dilatação da imagem da primeira coluna por B. A segunda coluna, também, corresponde a abertura da imagem da primeira coluna da linha anterior;</li><li>A terceira coluna apresenta a subtração da primeira coluna da linha anterior pela segunda.</li></ul>



<p>Por fim, na última linha, a imagem da terceira coluna de título &#8220;Resultado&#8221; apresentada a soma de todas as imagens da terceira coluna. Observe que essa somatória resultou no esqueleto da imagem retangular A.</p>



<div class="wp-block-columns are-vertically-aligned-center">
<div class="wp-block-column is-vertically-aligned-center">
<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image.png" alt="" class="wp-image-4333"/><figcaption><strong>A</strong><br>Imagem binarizada</figcaption></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="82" height="83" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-9.png" alt="" class="wp-image-4348"/><figcaption><strong>B</strong><br>Elemento estruturante</figcaption></figure></div>
</div>



<div class="wp-block-column is-vertically-aligned-center"></div>
</div>



<div class="wp-block-columns">
<div class="wp-block-column is-vertically-aligned-top">
<p class="has-text-align-center"><strong>Erosão por B</strong><br></p>



<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-1.png" alt="" class="wp-image-4334"/><figcaption><strong>A ⊖ B</strong><br>Erosão de A por B</figcaption></figure>
</div>



<div class="wp-block-column">
<p class="has-text-align-center"><strong>Dilatação da 1ª coluna por B</strong><br></p>



<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-3.png" alt="" class="wp-image-4337"/><figcaption><strong>A ◦ B</strong><br>= (A ⊖ B) ⊕ B<br>Abertura de A por B</figcaption></figure>
</div>



<div class="wp-block-column">
<p class="has-text-align-center"><strong>Subtração da 1ª coluna da linha anterior pela 2ª coluna</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-4.png" alt="" class="wp-image-4338"/><figcaption><strong>A &#8211; (A ◦ B)</strong><br>A subtraída pela abertura de A por B</figcaption></figure>
</div>
</div>



<div class="wp-block-columns">
<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-2.png" alt="" class="wp-image-4336"/><figcaption><strong>A ⊖ B ⊖ B</strong><br>Erosão de A por B duas vezes</figcaption></figure>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="278" height="182" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-16.png" alt="" class="wp-image-4377"/><figcaption><strong>(A ⊖ B) ◦ B</strong><br>= (A ⊖ B) ⊖ B ⊕ B<br>Erosão de A por B, seguida da abertura por B</figcaption></figure>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-6.png" alt="" class="wp-image-4341"/><figcaption><strong>A &#8211; ((A ⊖ B) ◦ B</strong>)<br>Abertura de A por B <br>subtraída pela Erosão de A por B</figcaption></figure>
</div>
</div>



<div class="wp-block-columns">
<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-7.png" alt="" class="wp-image-4343"/><figcaption><strong>A ⊖ B ⊖ B ⊖ B</strong><br>Erosão de A por B três vezes</figcaption></figure>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-7.png" alt="" class="wp-image-4343"/><figcaption><strong>(A ⊖ B ⊖ B) ◦ B</strong><br>Erosão de A por B duas vezes, seguida da abertura por B</figcaption></figure>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-2.png" alt="" class="wp-image-4336"/><figcaption><strong>A &#8211; ((A ⊖ B ⊖ B) ◦ B)</strong><br>Abertura de A por B <br>subtraída pela Erosão de A por B</figcaption></figure>
</div>
</div>



<div class="wp-block-columns">
<div class="wp-block-column"></div>



<div class="wp-block-column"></div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="250" height="178" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/image-8.png" alt="" class="wp-image-4345"/><figcaption>Resultado</figcaption></figure>
</div>
</div>



<h3>Exemplos</h3>



<p>A seguir, duas demonstrações de esqueletização, da palavra &#8220;OpenCV&#8221; e de uma imagem da digital de um dedo. O processo de extração do esqueleto da Figura 8 é carregar a imagem, suavizar a imagem com o filtro gaussiano, converter em tons de cinza, limiarizar/binarizar a imagem e extrair o esqueleto.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/opencv-300x100-1.png" alt="" class="wp-image-4399" width="426" height="142"/><figcaption>Fig 6 &#8211; Texto &#8221; OpenCV&#8221; para extração do esqueleto <a href="#refs">[FA]</a>. </figcaption></figure></div>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="341" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/skel_opencv-1024x341.png" alt="" class="wp-image-4400" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/05/skel_opencv-1024x341.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/skel_opencv-300x100.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/skel_opencv-768x256.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/skel_opencv.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption> Fig 7 &#8211; Esqueleto da palavra &#8220;OpenCV&#8221; <a href="#refs">[FA]</a>. </figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="460" src="https://visaocomputacional.com.br/wp-content/uploads/2023/05/digital-1024x460.png" alt="" class="wp-image-4401" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/05/digital-1024x460.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/digital-300x135.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/digital-768x345.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/digital-1536x691.png 1536w, https://visaocomputacional.com.br/wp-content/uploads/2023/05/digital.png 1706w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Fig 8 &#8211; Extração do esqueleto da impressão digital, utilizando morfologia matemática com a ferramenta <a href="https://opencvflow.org/en">OpenCV-Flow</a>.</figcaption></figure>



<p id="refs"><strong>Referências</strong></p>



<p>[PS] Pedrini, H.; Schwartz, W. R.; Análise de Imagens Digitais: Princípios, Algoritmos e Aplicações. Thomson Learning, 2007</p>



<p>[LQ] Li, Quannan et al. “Skeleton Extraction Using SSM of the Distance Transform.” (2008).</p>



<p>[RSA] R. Fisher, S. Perkins, A. Walker and E. Wolfart. Skeletonization/Medial Axis Transform. <a href="https://homepages.inf.ed.ac.uk/rbf/HIPR2/skeleton.htm">Acessado em 01/05/2023</a></p>



<p>[FA] Félix Abecassis &#8211; OpenCV &#8211; Morphological Skeleton. <a href="https://felix.abecassis.me/2011/09/opencv-morphological-skeleton/">Acessado em 02/05/2023</a></p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/morfologia-matematica-esqueletizacao-de-imagem/">Morfologia Matemática &#8211; Esqueletização de imagem</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Morfologia Matemática &#8211; Extração de Fronteiras / Detecção de Bordas</title>
		<link>https://visaocomputacional.com.br/morfologia-matematica-extracao-de-fronteiras-deteccao-de-bordas/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=morfologia-matematica-extracao-de-fronteiras-deteccao-de-bordas</link>
		
		<dc:creator><![CDATA[Piemontez]]></dc:creator>
		<pubDate>Wed, 26 Apr 2023 21:56:18 +0000</pubDate>
				<category><![CDATA[Conceitos básicos]]></category>
		<category><![CDATA[Processamento de imagens]]></category>
		<category><![CDATA[Bordas]]></category>
		<category><![CDATA[Dilatação]]></category>
		<category><![CDATA[Dilate]]></category>
		<category><![CDATA[Erode]]></category>
		<category><![CDATA[Erosão]]></category>
		<category><![CDATA[Fronteiras]]></category>
		<guid isPermaLink="false">https://visaocomputacional.com.br/?p=3795</guid>

					<description><![CDATA[<p>A fronteira interna é o contorno da imagem binarizada. O cálculo consiste em subtrair da imagem, o resultado da erosão da própria imagem por um elemento estruturante. </p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/morfologia-matematica-extracao-de-fronteiras-deteccao-de-bordas/">Morfologia Matemática &#8211; Extração de Fronteiras / Detecção de Bordas</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Existem diversas técnicas para detecção ou realce de bordas e extração de fronteiras. Com morfologia matemática binária é possível realizar a extração de fronteiras de forma simples e com baixo custo de processamento. Acesse <a href="https://visaocomputacional.com.br/morfologia-matematica-para-processamento-de-imagens/">Morfologia Matemática para Processamento de Imagens</a>, para entender sobre erosão e dilatação, operações que são a base dos cálculos apresentados a seguir.</p>



<p>A extração de fronteiras, com morfologia, consiste em destacar as fronteiras da área de interesse (Roi) de uma imagem. Na Fig.1 é ilustrado o resultado de uma extração interna de fronteira.</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="943" height="558" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image.png" alt="" class="wp-image-4268" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image.png 943w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-300x178.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-768x454.png 768w" sizes="(max-width: 943px) 100vw, 943px" /><figcaption>Fig 1 &#8211; Resultado da extração de fronteiras utilizando processamento morfológico. [GW] </figcaption></figure>



<p>Basicamente existem dois tipos de extração de fronteiras, as fronteiras internas e as fronteiras externas, sendo uma contraponto da outra. </p>



<h3>Fronteira interna</h3>



<p>Definição: <strong>β(A) = A &#8211;</strong> <strong>(A</strong> <strong><sub><sup>⊖</sup></sub> B) </strong></p>



<p>A fronteira interna é o contorno da imagem binarizada. O cálculo consiste em subtrair da imagem, o resultado da erosão da própria imagem por um elemento estruturante. </p>



<p>Observe nas figuras abaixo, que a partir da imagem A, foi realizada sua erosão pelo elemento estruturante B. Como resultado desta operação, temos apenas os pixels interno da imagem, conforme a imagem da terceira coluna. Com a erosão realizada, basta subtrair da imagem A por esta erosão, resultando apenas os pixels que estão na Imagem A e não estão na sua erosão.</p>



<div class="wp-block-columns">
<div class="wp-block-column" style="flex-basis:100%">
<div class="wp-block-columns">
<div class="wp-block-column">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="255" height="255" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-2.png" alt="" class="wp-image-4270" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-2.png 255w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-2-150x150.png 150w" sizes="(max-width: 255px) 100vw, 255px" /><figcaption>A<br>Imagem binarizada</figcaption></figure></div>
</div>



<div class="wp-block-column">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="86" height="85" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-6.png" alt="" class="wp-image-4274"/><figcaption>B<br>Elementro estruturante</figcaption></figure></div>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-1.png" alt="" class="wp-image-4280" width="186" height="182"/><figcaption>A <sub><sup>⊖</sup></sub> B<br>Erosão da imagem A</figcaption></figure>
</div>



<div class="wp-block-column">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="254" height="254" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-3.png" alt="" class="wp-image-4281" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-3.png 254w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-3-150x150.png 150w" sizes="(max-width: 254px) 100vw, 254px" /><figcaption>A &#8211; (A <sub><sup>⊖</sup></sub> B)<br>Fronteira interna</figcaption></figure></div>
</div>
</div>
</div>
</div>



<h3>Fronteira externa</h3>



<p>Definição: <strong>β(A) = (A <sub><sup>⊕</sup></sub> B) &#8211; A</strong></p>



<p>A fronteira externa, na imagem binarizada, cria uma camada como uma vestimenta que cobre toda a imagem. O cálculo consiste em dilatar a imagem por um elemento estruturante e subtrair pela imagem original.</p>



<p>Observe nas figuras abaixo, que a partir da Imagem A, foi realizada sua dilatação pelo elemento estruturante B. Como resultado desta operação, temos a imagem A mais uma camada externa à ela, conforme imagem da terceira coluna. Com a dilatação realizada, basta subtrair a dilatação pela Imagem A, resultando apenas nos pixels externos, que estão na imagem dilatada e não estão na imagem A.</p>



<div class="wp-block-columns">
<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="255" height="255" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-2.png" alt="" class="wp-image-4270" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-2.png 255w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-2-150x150.png 150w" sizes="(max-width: 255px) 100vw, 255px" /><figcaption>A<br>Imagem binarizada</figcaption></figure>
</div>



<div class="wp-block-column">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="82" height="80" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-4.png" alt="" class="wp-image-4283"/><figcaption>B<br>Elemento extruturante</figcaption></figure></div>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="254" height="253" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-7.png" alt="" class="wp-image-4285" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-7.png 254w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-7-150x150.png 150w" sizes="(max-width: 254px) 100vw, 254px" /><figcaption>A <sub><sup>⊕</sup></sub> B<br>Dilatação da imagem A</figcaption></figure>
</div>



<div class="wp-block-column">
<figure class="wp-block-image size-full"><img loading="lazy" width="252" height="252" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-5.png" alt="" class="wp-image-4284" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-5.png 252w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-5-150x150.png 150w" sizes="(max-width: 252px) 100vw, 252px" /><figcaption> (A <sub><sup>⊕</sup></sub> B) &#8211; A<br>Fronteira externa</figcaption></figure>
</div>
</div>



<h3>Outros exemplos</h3>



<p>Na ilustração da Tabela 01 são demonstrados os resultados das extrações de fronteiras, com os elementos estruturantes apresentados anteriormente.</p>



<figure class="wp-block-table aligncenter"><table><tbody><tr><td class="has-text-align-center" data-align="center">Imagem original</td><td class="has-text-align-center" data-align="center">Fronteira interna</td><td class="has-text-align-center" data-align="center">Fronteira externa</td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" width="248" height="249" class="wp-image-4316" style="width: 150px;" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-10.png" alt="" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-10.png 248w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-10-150x150.png 150w" sizes="(max-width: 248px) 100vw, 248px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" width="248" height="249" class="wp-image-4318" style="width: 150px;" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-12.png" alt="" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-12.png 248w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-12-150x150.png 150w" sizes="(max-width: 248px) 100vw, 248px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" width="248" height="249" class="wp-image-4319" style="width: 150px;" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-13.png" alt="" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-13.png 248w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-13-150x150.png 150w" sizes="(max-width: 248px) 100vw, 248px" /></td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" width="248" height="249" class="wp-image-4317" style="width: 150px;" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-11.png" alt="" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-11.png 248w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-11-150x150.png 150w" sizes="(max-width: 248px) 100vw, 248px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" width="248" height="249" class="wp-image-4320" style="width: 150px;" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-14.png" alt="" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-14.png 248w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-14-150x150.png 150w" sizes="(max-width: 248px) 100vw, 248px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" width="248" height="249" class="wp-image-4321" style="width: 150px;" src="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-15.png" alt="" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-15.png 248w, https://visaocomputacional.com.br/wp-content/uploads/2023/04/image-15-150x150.png 150w" sizes="(max-width: 248px) 100vw, 248px" /></td></tr></tbody></table><figcaption>Tabela 01 &#8211; Exemplos de extração de fronteiras com morfologia matemática.</figcaption></figure>



<p>A seguir, uma demonstração do resultado da extração de fronteira de uma imagem limiarizada, de um pote sobre uma mesa. O resultado desta operação, foi detectar as bordas da imagem. Esta demonstração foi realizada utilizando a IDE <a href="https://opencvflow.org/">OpenCV-Flow</a>. </p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="508" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_extracao_fronteira-1024x508.png" alt="" class="wp-image-3744" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_extracao_fronteira-1024x508.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_extracao_fronteira-300x149.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_extracao_fronteira-768x381.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_extracao_fronteira.png 1304w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2><strong>Referências:</strong></h2>



<p>[GW] GONZALEZ, R. C., WOODS, R. E. Processamento de Imagens Digitais. Editora Edgard Blucher, ISBN 978-85-8143-586-2, 3 ed., São Paulo, 2010</p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/morfologia-matematica-extracao-de-fronteiras-deteccao-de-bordas/">Morfologia Matemática &#8211; Extração de Fronteiras / Detecção de Bordas</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Programando Erosão, Dilatação, Abertura e Fechamento Morfológica com Javascript.</title>
		<link>https://visaocomputacional.com.br/programando-erosao-dilatacao-abertura-e-fechamento-morfologica-com-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programando-erosao-dilatacao-abertura-e-fechamento-morfologica-com-javascript</link>
		
		<dc:creator><![CDATA[Piemontez]]></dc:creator>
		<pubDate>Thu, 09 Feb 2023 23:03:49 +0000</pubDate>
				<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[Abertura]]></category>
		<category><![CDATA[Dilatação]]></category>
		<category><![CDATA[Dilate]]></category>
		<category><![CDATA[Erode]]></category>
		<category><![CDATA[Erosão]]></category>
		<category><![CDATA[Fechamento]]></category>
		<category><![CDATA[Morfologia]]></category>
		<guid isPermaLink="false">https://visaocomputacional.com.br/?p=3846</guid>

					<description><![CDATA[<p>Este artigo trata de como programar as operações morfológicas binárias apresentadas no post Morfologia Matemática para Processamento de Imagens. A programação foi realizada na linguagem javascript, utilizando a biblioteca opencv.js e as imagens produzidas com a IDE OpenCV-Flow. OpenCV A biblioteca opencv.js disponibiliza diversas funcionalidade prontas para o processamento de imagens e visão computacional. Para [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/programando-erosao-dilatacao-abertura-e-fechamento-morfologica-com-javascript/">Programando Erosão, Dilatação, Abertura e Fechamento Morfológica com Javascript.</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="ratio ratio-16x9"><iframe loading="lazy" title="Programando Erosão e Dilatação Morfológica com Javascript." width="800" height="450" src="https://www.youtube.com/embed/FTHAoLFlWuI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
</div></figure>



<p>Este artigo trata de como programar as operações morfológicas binárias apresentadas no post <a href="https://visaocomputacional.com.br/morfologia-matematica-para-processamento-de-imagens/">Morfologia Matemática para Processamento de Imagens</a>. A programação foi realizada na linguagem javascript, utilizando a biblioteca <a href="https://docs.opencv.org/4.x/d5/d10/tutorial_js_root.html">opencv.js</a> e as imagens produzidas com a IDE <a href="https://opencvflow.org/pt">OpenCV-Flow</a>.</p>



<h3>OpenCV</h3>



<p>A biblioteca opencv.js disponibiliza diversas funcionalidade prontas para o processamento de imagens e visão computacional. Para utilizá-la, basta incluí-la no script da página <span class="has-inline-color has-black-color">conforme descrito em <a href="https://docs.opencv.org/4.x/d0/d84/tutorial_js_usage.html">Using OpenCV.js</a></span>.</p>



<p>Utilizaremos a classe <a href="https://docs.opencv.org/4.x/de/d06/tutorial_js_basic_ops.html">Mat do OpenCV</a> para realizar a manipulação da imagem, com esta classe conseguimos construir de forma fácil imagens (coloridas e binárias) e manipular seus pixels. </p>



<h2>Erosão</h2>



<p>A erosão como apresentado no outro post citado, consiste em testar se o elemento estruturante (núcleo) se encaixa na imagem de origem, gerando uma nova imagem de destino, onde cada teste realizado com sucesso, é identificado na imagem de destino com o valor 1 e identificado com o valor 0 caso a estrutura não tenha sido localizada.&nbsp;</p>



<p>A primeira etapa que iremos realizar é criar o núcleo de operação com o formato de quadrado. O elemento estruturante deve ser uma imagem binárizada (preto e branco), como não temos imagens binárias no OpenCV, criaremos uma imagem em tons de cinza.</p>



<p>Na função nucleoFormatoCruz, abaixo, é criada uma matriz de tamanho 3&#215;3, com um canal de cor do tipo uint8, com valores entre 0 e 255: </p>



<pre class="wp-block-preformatted">function nucleoFormatoCruz() {
  return new cv.matFromArray(3, 3, cv.CV_8UC1, [
    1, 1, 1,
    1, 1, 1,
    1, 1, 1
  ]);
}</pre>



<p>Além do núcleo das operações, vamos precisar da posição central das operações, sendo que no OpenCV é utilizada a classe cv.Point para indicar posições específicas, com o objetivo de seguir o padrão, nosso código também ira utilizá-la. Para inicializar a classe, é preciso apenas informar as posições das coordenadas x e y, conforme abaixo:</p>



<pre class="wp-block-preformatted">const centro = new cv.Point(1, 1);</pre>



<p>Agora que temos nosso núcleo e sua posição, nossa função de erosão foi programada com as seguintes etapas:</p>



<ul><li>Percorre todas as posições dos pixels da imagem;</li><li>Para cara pixel da imagem, percorre todos os elementos do elemento estruturante e testa a estrutura na imagem conforme as etapas:<ul><li>Verifica-se se o elemento do núcleo possui valor e:<ul><li>Se o elemento possuir valor, verifica a posição correspondente na imagem também possui valor e:<ul><li>Se o pixel possuir valor, verifica o próximo elemento;</li><li>Se o pixel não possuir, marca o teste como negado;</li></ul></li></ul></li></ul><ul><li>Se o elemento não possui valor, verifica o próximo elemento;</li><li>Ao finalizar todos os testes dos elementos, do núcleo na região do pixel, e caso nenhum for negado, marca na imagem de destino o valor 255, do contrário marca como 0;</li></ul></li></ul>



<pre class="wp-block-preformatted">function erosao(nucleo, centro, imagem, imagemSaida) {
  //Percorre a imagem
  for (let x = centro.x; x &lt; imagem.cols; x++) {
    for (let y = centro.y; y &lt; imagem.rows; y++) {

      let hasNucleo = true;
      //Percorre o elemento estruturante (núcleo)
      for (let j = 0; j &lt; nucleo.cols; j++) {
        for (let k = 0; k &lt; nucleo.rows; k++) {
          
          //Verifica-se se o elemento do núcleo deve ser checado
          const nucleoTemValor = nucleo.ucharPtr(k, j)[0] &gt; 0;
          if (nucleoTemValor) {
            const col = x + j - centro.x;
            const row = y + k - centro.y;

            //Verifica-se se a imagem tem valor na mesma posição do núcleo
            const imagemTemValor = imagem.ucharPtr(row, col)[0] &gt; 0;
            if (!imagemTemValor) {
              hasNucleo = false;
              break;
            }
          }
        }
      }

      imagemSaida.ucharPtr(y, x)[0] = hasNucleo ? 255 : 0;
    }
  }
}</pre>



<h2>Dilatação</h2>



<p>A dilatação consiste em testar cada elemento da imagem de origem e verificar se possui valor 1, caso exista na imagem de destino, então é adicionado os valores do elemento estruturante a partir da posição central do elemento estruturante.</p>



<p>A programação da dilatação é menos complexa que a da erosão, nossa função realiza apenas as seguintes etapas:</p>



<ul><li>Percorre todas as posições dos pixeis da imagem;</li><li>Para cara pixel da imagem:<ul><li>Verifica-se se o pixel possui valor e:<ul><li>Caso possuir, percorre os elementos do núcleo e os projeta na imagem de destino;</li><li>Caso não possuir, não realiza nenhuma operação;</li></ul></li></ul></li></ul>



<pre class="wp-block-preformatted">function dilatacao(nucleo, centro, imagem, imagemSaida) {
  //Percorre a imagem
  for (let x = centro.x; x &lt; imagem.cols; x++) {
    for (let y = centro.y; y &lt; imagem.rows; y++) {

      //Verifica-se se o pixel da imagem possui valor positivo
      const pixelComValor = imagem.ucharPtr(y, x)[0] &gt; 0;
      if (pixelComValor) {

        //Percorre o elemento estruturante (núcleo)
        for (let j = 0; j &lt; nucleo.cols; j++) {
          for (let k = 0; k &lt; nucleo.rows; k++) {
            
            //Verifica-se se o elemento do núcleo tem valor positivo
            const nucleoTemValor = nucleo.ucharPtr(k, j)[0] &gt; 0;
            if (nucleoTemValor) {
              const col = x + j - centro.x;
              const row = y + k - centro.y;

              imagemSaida.ucharPtr(row, col)[0] = 255;
            }
          }
        }
      }
    }
  }
}</pre>



<h2>Abertura</h2>



<p>A abertura de uma imagem A, por um elemento estruturante B, é simplesmente a operação de erosão de A por B, seguida da dilatação de A por B. Como a abertura é apenas o encadeamento de duas operações, nosso código de exemplo faz apenas isto.</p>



<pre class="wp-block-preformatted">function abertura(nucleo, centro, imagem, imagemSaida) {
  let imgTemporaria = new cv.Mat( imagem.rows, imagem.cols, imagem.type(), new cv.Scalar(0));
  
  erosao(nucleo, centro, imagem, imgTemporaria);
  dilatacao(nucleo, centro, imgTemporaria, imagemSaida);

  imgTemporaria.delete();
}</pre>



<h2>Fechamento</h2>



<p>O fechamento de uma imagem A, por um elemento estruturante B, é simplesmente a operação de dilatação de A por B, seguida da erosão de A por B. Como o fechamento também é apenas o encadeamento de duas operações, nosso código de exemplo faz apenas isto também.</p>



<pre class="wp-block-preformatted">function fechamento(nucleo, centro, imagem, imagemSaida) {
  let imgTemporaria = new cv.Mat( imagem.rows, imagem.cols, imagem.type(), new cv.Scalar(0));

  dilatacao(nucleo, centro, imagem, imgTemporaria);
  erosao(nucleo, centro, imgTemporaria, imagemSaida);

  imgTemporaria.delete();
}</pre>



<h2>Considerações</h2>



<p>As funções programadas neste post possuem caráter de estudo, afim de entender as etapas e os processos morfológicos, pois não foram pensadas em questões como desempenho nestes exemplos. Caso você precise utilizar este tipo de operação, é recomendado que utilize uma biblioteca preparada para isso, como o OpenCV ou similar.</p>



<p>O código aqui apresentado esta disponível no link abaixo:</p>



<p>Source code: <a href="https://github.com/visaocomputacionalexemplos/morfologia/blob/main/javascript/base/morfologia.html">https://github.com/visaocomputacionalexemplos/morfologia/blob/main/javascript/base/morfologia.html</a></p>



<p></p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/programando-erosao-dilatacao-abertura-e-fechamento-morfologica-com-javascript/">Programando Erosão, Dilatação, Abertura e Fechamento Morfológica com Javascript.</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Morfologia Matemática para Processamento de Imagens</title>
		<link>https://visaocomputacional.com.br/morfologia-matematica-para-processamento-de-imagens/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=morfologia-matematica-para-processamento-de-imagens</link>
		
		<dc:creator><![CDATA[Piemontez]]></dc:creator>
		<pubDate>Sat, 04 Feb 2023 00:42:41 +0000</pubDate>
				<category><![CDATA[Conceitos básicos]]></category>
		<category><![CDATA[Processamento de imagens]]></category>
		<category><![CDATA[Abertura]]></category>
		<category><![CDATA[Closing]]></category>
		<category><![CDATA[Dilatação]]></category>
		<category><![CDATA[Dilate]]></category>
		<category><![CDATA[Erode]]></category>
		<category><![CDATA[Erosão]]></category>
		<category><![CDATA[Fechamento]]></category>
		<category><![CDATA[Morfologia]]></category>
		<category><![CDATA[Opening]]></category>
		<guid isPermaLink="false">https://visaocomputacional.com.br/?p=3633</guid>

					<description><![CDATA[<p>O estudo morfológico concentra-se na estrutura geométrica das imagens. Aplica-se morfologia em , realce, filtragem, segmentação, esqueletonização e outras operaçõe.</p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/morfologia-matematica-para-processamento-de-imagens/">Morfologia Matemática para Processamento de Imagens</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>A palavra Morfologia é originalmente um ramo da biologia, que estuda as formas e estruturas dos animais e plantas. Utilizamos esta palavra no contexto de Morfologia Matemática, como um instrumento para extração de componentes da imagem, que sejam úteis para representação e descrição da forma de uma região, como fronteiras, esqueletos, realce, filtragem, segmentação ou esqueletização <a href="#refs">[GW]</a>. </p>



<p>A morfologia<span class="has-inline-color has-vivid-red-color"> </span><span class="has-inline-color has-black-color">também pode ser utilizada</span> para extração de componentes conexos, busca de padrões específicos na imagem, delimitação de fecho convexo, extração de bordas entre outros <a href="https://visaocomputacional.com.br/wp-admin/post.php?post=3633&amp;action=edit#refs">[PS]</a>.</p>



<p>Neste post é apresentado um resumo sobre morfologia matemática, sem detalhar suas fórmulas matemáticas.</p>



<h2>Imagem Digital e Binária</h2>



<p>Uma imagem digital é formada por uma quantidade finita de amostras de uma cena, capturada pela lente de uma câmera, também pode ser chamada de imagem discreta e é representada como subconjunto do plano cartesiano Z<sup>2</sup>, onde Z representa o conjunto dos números inteiros. Cada amostra da imagem, conhecida como pixel, está localizada em uma coordenada (x, y) da imagem, associada alguma informação sobre a cor <a href="#refs">[VL]</a>.</p>



<p>Uma imagem binária é composta por dois tipos de pixels, os do plano de fundo e o plano principal, que são representados normalmente usando preto e branco, ou 0 e 1, respectivamente <a href="#refs">[VL]</a>. Normalmente representam a área de interesse durante o processamento morfológico. </p>



<p>Neste artigo<span class="has-inline-color has-black-color"> é apresentada a morfologia matemática binária (em imagens binárias).</span></p>



<h2>Elemento Estruturante</h2>



<p>Um conceito importante na morfologia matemática é a definição de elemento estruturante, também chamado de núcleo. O elemento estruturante é um vetor bidimensional pré-definido, representado por zeros (0) e uns (1), com uma coordenada indicando o centro da operação e pode assumir diversas formas e aspectos, dependendo do tipo de efeito desejado a ser aplicado na imagem.</p>



<p>A seguir, são demonstrados 3 diferentes vetores de elementos estruturantes e suas imagens representativas, com o centro de operação destacado em vermelho.</p>



<div class="wp-block-columns">
<div class="wp-block-column">
<p class="has-text-align-center">[1, 1, 1,<br> 1, <s><strong>1</strong></s>, 1,<br> 1, 1, 1]</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="129" height="130" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/nucleo-2.png" alt="" class="wp-image-3755"/><figcaption>Fig&nbsp; 1 &#8211; Elemento Estruturante Quadrado.</figcaption></figure></div>
</div>



<div class="wp-block-column">
<p class="has-text-align-center">[0, 1, 0,<br> 1, <span class="has-inline-color has-black-color"><s><strong>1</strong></s></span>, 1,<br> 0, 1, 0]</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/nucleo-3.png" alt="" class="wp-image-3756" width="129" height="130"/><figcaption>Fig&nbsp;2 &#8211; Elemento Estruturante Cruz.</figcaption></figure></div>
</div>



<div class="wp-block-column">
<p class="has-text-align-center">[1, <br> <s><strong>1</strong></s>, <br> 1]</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="84" height="130" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/nucleo-4.png" alt="" class="wp-image-3757"/><figcaption>Fig&nbsp;3 -Elemento Estruturante Linha.<br><br></figcaption></figure></div>
</div>
</div>



<p>A ideia básica da morfologia binária é sondar uma imagem com o elemento estruturante pré-definido, analisando  como essa forma se encaixa ou não nas formas da imagem. </p>



<h2>Erosão e Dilatação</h2>



<p>A erosão e a dilatação são dois operadores fundamentais em Morfologia Matemática, muitos operadores morfológicos mais sofisticados se baseiam nestas duas operações.</p>



<h3>Erosão</h3>



<p>Símbolo / Representação : <strong>⊖</strong></p>



<p>Definição: <strong>A</strong> <strong><sub><sup>⊖</sup></sub> B = { z | (B)<sub>z</sub> ∩ A<sup>c</sup> = ∅ }</strong>  </p>



<p>A erosão consiste em testar se o elemento estruturante se encaixa na imagem de origem, gerando uma nova imagem de destino, onde cada teste realizado com sucesso, é identificado na imagem de destino com o valor 1 e identificado com o valor 0 caso a estrutura não tenha sido localizada. Os valores 0 e 1 podem ser substituídos por outros valores, caso necessário.</p>



<p>O efeito prático do processo morfológico chamado erosão, consiste na modificação das feições da imagem, diminuindo-as em seu entorno, literalmente “erodindo-as” <a href="#refs">[MM]</a>.</p>



<p>Observe na ilustração a seguir, o passo a passo da erosão da imagem, de tamanho 11&#215;11, pelo elemento estruturante, de tamanho 3&#215;3. O processo inicia pelo teste do elemento estruturante na parte superior esquerda da imagem, onde é verificado se cada elemento do núcleo é encontrado da imagem. Para isso, é verificado se cada um dos elementos [1, 2, 3, 4, 5, 6, 7, 8, 9] do núcleo estão contidos nos elementos de coordenada [(1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3)] da imagem, e registrado o valor 1 (branco) na imagem de destino caso todos os elementos sejam encontrados, como o teste não passou, na imagem de destino é registrado o valor 0 (preto). Então, é deslocado a verificação do núcleo para os próximos elementos da imagem, até que todos sejam testados.</p>



<div class="wp-block-columns">
<div class="wp-block-column" style="flex-basis:33.33%">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="129" height="130" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/nucleo-2.png" alt="" class="wp-image-3755"/><figcaption>Fig 4 &#8211; Elemento Estruturante<br>(Núcleo)</figcaption></figure></div>
</div>



<div class="wp-block-column" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" width="574" height="258" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/erosao.gif" alt="" class="wp-image-3734"/><figcaption> Fig 5 &#8211;  Ilustração de Erosão.</figcaption></figure>
</div>
</div>



<p>A seguir, na ilustração da Fig. 6, é exibido um exemplo de erosão morfológica de uma imagem de placa de circuitos. Neste exemplo vamos tentar remover todos os circuitos e manter apenas suas extremidades. O primeiro processo realizado, consiste em carregar a imagem, convertê-la em tons de cinza e realizar a limiarização, para termos uma imagem em preto e branco (zeros e uns). Com a imagem limiarizada foi realizada a sua Erosão, com uma matriz 3&#215;3 de valores 1.  </p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="712" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_erosao-1024x712.png" alt="" class="wp-image-3736" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_erosao-1024x712.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_erosao-300x209.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_erosao-768x534.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/exemplo_erosao.png 1030w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption> Fig 6 &#8211;  Efeito de Erosão Morfológica em placa de circuitos.</figcaption></figure>



<p>Podemos observar pela imagem, que este simples processo eliminou todos os traços/linhas da imagem de entrada, mantendo apenas as estruturas maiores. O resultado não foi uma extração ideal de estrutura, porém, com uma única aplicação de operação morfológica foi possível remover muitas informações indesejadas. O exemplo acima foi realizado utilizando a ferramenta online <a href="https://opencvflow.org/">OpenCV-Flow</a>.</p>



<h3>Dilatação</h3>



<p>Símbolo / Representação: <strong>⊕</strong></p>



<p>Definição: <strong>A <sub><sup>⊕</sup></sub> B = { z | (^B)<sub>z</sub> ∩ A ≠ ∅ }</strong> </p>



<p>A dilatação, de certa forma, é o contraponto da erosão. Ela consiste em testar cada elemento da imagem de origem e verificar se possui valor 1, caso exista na imagem de destino, então é adicionado os valores do elemento estruturante a partir da posição central do elemento estruturante.</p>



<p>O efeito prático do processo morfológico chamado&nbsp;<em>Dilatação</em>&nbsp;consiste na modificação das feições da imagem, aumentando-as em seu entorno <a href="#refs">[MM]</a>. </p>



<p>Observe na ilustração a seguir, o resultado da aplicação do elemento estruturante (núcleo) na imagem. O núcleo de forma quadrada, com tamanho 3&#215;3, possui os valores  [1,1,1,1,1,1,1,1,1] e centro de coordenada (2,2). Note que ao aplicar o núcleo na coordenada (3,3) da imagem de entrada, resultou na imagem de saída a expansão daquele ponto, ao aplicar/copiar o elemento estruturante na imagem de saída. Todo o processo é repetido para cada elemento da imagem. </p>



<div class="wp-block-columns">
<div class="wp-block-column" style="flex-basis:33.33%">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="129" height="130" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/nucleo-2.png" alt="" class="wp-image-3755"/><figcaption> Fig 7 &#8211;  Elemento Estruturante<br>(Núcleo)</figcaption></figure></div>
</div>



<div class="wp-block-column" style="flex-basis:66.66%">
<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="574" height="258" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/dilatacao_imagem.png" alt="" class="wp-image-3749" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/01/dilatacao_imagem.png 574w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/dilatacao_imagem-300x135.png 300w" sizes="(max-width: 574px) 100vw, 574px" /><figcaption> Fig 8 &#8211;  Ilustração de Dilatação.</figcaption></figure></div>
</div>
</div>



<h2>Abertura e Fechamento</h2>



<p>Duas outras operações morfológicas importantes são a abertura e fechamento.</p>



<h3>Abertura</h3>



<p>Símbolo / Representação: <strong> ◦ </strong></p>



<p>Definição: <strong>A ◦ B = (A <sub><sup>⊖</sup></sub> B)<strong> <sub><sup>⊕</sup></sub> </strong>B</strong></p>



<p>A abertura de uma imagem A por um elemento estruturante B é simplesmente a operação de erosão de A por B, seguida da dilatação de A por B <a href="https://visaocomputacional.com.br/wp-admin/post.php?post=3633&amp;action=edit#refs">[PS]</a>.</p>



<p>Ao realizar a erosão seguida da dilatação, o efeito produzido na imagem é de abertura de pontos/ligações e remoção de ruídos. Observe na ilustração da Fig. 9, que após realizar a operação de erosão na imagem, a conexão que existia entre os retângulos foi perdida e também foram reduzidos seu tamanhos. Porém, ao aplicar a dilatação esses retângulos voltaram a ter sua forma inicial.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="1024" height="497" src="https://visaocomputacional.com.br/wp-content/uploads/2023/01/image-1-1024x497.png" alt="" class="wp-image-3798" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/01/image-1-1024x497.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/image-1-300x146.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/image-1-768x373.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2023/01/image-1.png 1210w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption> Fig 9 &#8211;  Efeito da abertura morfológica.</figcaption></figure></div>



<h3>Fechamento</h3>



<p>Símbolo / Representação:  <strong>• </strong></p>



<p>Definição: <strong>A • B = (A<strong> <sub><sup>⊕</sup></sub> </strong>B) <sub><sup>⊖</sup></sub> B</strong></p>



<p>O fechamento de uma imagem A por um elemento estruturante B é simplesmente a operação de dilatação de A por B, seguida da erosão de A por B <a href="https://visaocomputacional.com.br/wp-admin/post.php?post=3633&amp;action=edit#refs">[PS]</a> .</p>



<p>Ao realizar a dilatação seguida da erosão, o efeito produzido na imagem são o fechamento de pequenos buracos e criação de conexões. Observe na ilustração da Fig. 10, que após realizar a dilatação, com a espação dos elementos, os buracos iniciais foram fechados, e com a realização da erosão o componente voltou a ter o aspecto da sua estrutura inicial, com os pequenos buracos fechados. Porém, como consequência desta técnica os componentes que estavam próximos se conectaram.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" width="758" height="354" src="https://visaocomputacional.com.br/wp-content/uploads/2023/02/image-2.png" alt="" class="wp-image-3813" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/02/image-2.png 758w, https://visaocomputacional.com.br/wp-content/uploads/2023/02/image-2-300x140.png 300w" sizes="(max-width: 758px) 100vw, 758px" /><figcaption> Fig 10 &#8211;  Efeito do fechamento morfológica.  </figcaption></figure></div>



<h3>Filtragem morfológica</h3>



<p>As operações morfológicas podem ser utilizadas como filtros de imagem, como filtros espaciais apresentados no artigo <a href="http://dominios-de-valor-espaco-e-frequencia">Domínios de Valor, Espaço e Frequência</a>. </p>



<p>A ilustração da Fig. 11 mostra uma imagem de impressão digital corrompida por ruído, no topo a esquerda, sendo que o ruído se manifesta como elementos aleatórios claros sobre o fundo escuro e como elementos escuros sobre componentes claros na digital. O objetivo é eliminar todos os ruídos sem danificar a estrutura da digital <a href="#refs">[GW]</a>.</p>



<p>A seguir, na ilustração da Fig. 11, um exemplo de filtragem utilizando abertura seguida do fechamento morfológico, utilizando um elemento estruturante em forma de cruz.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="1024" height="468" src="https://visaocomputacional.com.br/wp-content/uploads/2023/02/image-1024x468.png" alt="" class="wp-image-3807" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/02/image-1024x468.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2023/02/image-300x137.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/02/image-768x351.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2023/02/image.png 1127w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Fig 11 &#8211; Filtragem de ruídos em impressão digital.</figcaption></figure></div>



<p>O resultado final, após o fechamento, esta quase sem ruídos, mas com algumas das cristas de impressão não totalmente reparadas e também apresenta algumas quebras, além de que algumas cristas foram conectadas e não deveriam. Isto não é inesperado utilizando esta técnica e para resolver esta situação seria necessário aplicar outras técnicas de processamento de imagens, que talvez resolveriam o problema, como realizar <a href="/?s=afinamento" target="_blank" rel="noreferrer noopener">afinamento </a>ou <a href="/s=esqueletizacao" target="_blank" rel="noreferrer noopener">esqueletização.</a> </p>



<p>Estes conceitos apresentados neste artigo são a base da morfologia matemática. Ela possui muitas outras técnicas, como extração de fronteiras, transformada acerto-ou-erro, afinamento, esqueletização, poda e extração de componentes conexos.</p>



<p id="refs"><strong>Referências:</strong></p>



<p>[GW] GONZALEZ, R. C., WOODS, R. E. Processamento de Imagens Digitais. Editora Edgard Blucher, ISBN 978-85-8143-586-2, 3 ed., São Paulo, 2010</p>



<p>[PS] Pedrini, H.; Schwartz, W. R.; Análise de Imagens Digitais: Princípios, Algoritmos e Aplicações. Thomson Learning, 2007</p>



<p>[VL]  Visual-Lab &#8211; Instituto de computação. Morfologia Matemática em Análise de Imagens. <a href="http://visual.ic.uff.br/morphology/index.html">Acessado em 30/01/2023</a>.</p>



<p>[MM] Matosak, B. M.;  Medeiros, N. G; IMGedu &#8211; Capítulo 3 Morfologia Matemática. <a href="https://menimato.github.io/IMGedu.jl/morfologia-matematica.html">Acessado em 30/01/2023</a>.</p>
<p>The post <a rel="nofollow" href="https://visaocomputacional.com.br/morfologia-matematica-para-processamento-de-imagens/">Morfologia Matemática para Processamento de Imagens</a> appeared first on <a rel="nofollow" href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
