Olha! Minha casa como está vazia. Porque tu não vieste me visitar?
Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(•...
Transcript of Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(•...
![Page 1: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/1.jpg)
Filtros e Morfologia Prof. Dr. Geraldo Braz Junior
![Page 2: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/2.jpg)
Filtragem • Operações que visam extrair informações importantes da imagem • CaracterísAcas
• Cantos, bordas, agrupamentos
• Melhoramento • reArada de ruídos, aumento de contraste, …
• O processo de filtragem forma uma nova imagem a qual é uma combinação dos pixels da imagem original
2
![Page 3: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/3.jpg)
Classi0icação • Domínio ou espaço em que atuam: da frequencia ou espacial • Tipo de frequência: • passa ou elimina baixas freqüências • passa ou elimina altas freqüências • passa ou elimina faixas de freqüências
• Linearidade: lineares e inversíveis ou não lineares • Tipos de aplicação: • suavização, contraste, globais, adaptaAvos, janelados….
3
![Page 4: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/4.jpg)
Filtros Lineares
• S é um filtro linear caso saAsfaça a seguinte condição:
4
![Page 5: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/5.jpg)
Exemplo: Filtro da Média • Um filtro da média pode ser definido como uma janela 3x3 que se move através de uma vizinhança de pixels, aplicando a seguinte fórmula
• * representa a convolução de duas funções: f e h Onde • k varia de n-‐1 a n+1, l varia de m-‐1 a m+1 • m e n são as dimensões da imagem f
5
![Page 6: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/6.jpg)
Processo de Filtragem por Média
6
![Page 7: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/7.jpg)
Processo de Filtragem por Média
7
![Page 8: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/8.jpg)
Processo de Filtragem por Média
8
![Page 9: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/9.jpg)
Processo de Filtragem por Média
9
![Page 10: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/10.jpg)
Convolução Discreta • Símbolo *
• Processo basicamente resumido nas etapas: • Posicione um filtro h[n,m] num pixel, sendo que o pixel fica na posição central
• MulAple as filtro * elementos da imagem: h[n,m] * f[k,l] • Some todos os elementos da mulAplicação • Repita o processo para todos os pontos da imagem
10
![Page 11: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/11.jpg)
o que aconteceu? • Gerou uma nova imagem g(x,y) onde cada pixel é representado pela média do pixel (x,y) e seus vizinhos diretos
• ObjeAvo • Remover caracterísAcas destacadas • Smooth
11
![Page 12: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/12.jpg)
Exemplo: Filtro da Média
12
![Page 13: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/13.jpg)
Exemplos: o que acontece?
13
![Page 14: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/14.jpg)
nada
14
![Page 15: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/15.jpg)
Exemplos: o que acontece?
15
![Page 16: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/16.jpg)
Deslocamento 1 pixel para direita
16
![Page 17: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/17.jpg)
Exemplo: suavização
17
![Page 18: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/18.jpg)
Exemplo: combinação de 0iltros?
18
![Page 19: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/19.jpg)
Exemplo: Filtro de Realce • Aumenta diferença em relação a média local • Realça alguns contornos
19
![Page 20: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/20.jpg)
O que fazer com nas bordas da imagem?
20
![Page 21: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/21.jpg)
O que fazer com nas bordas da imagem? • Somente será computado pixels que tenham representantes completos dentro do filtro
• Estratégias que podem ser adotadas • Replicar borda • Adicionar zeros • Extensão por espelho
21
![Page 22: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/22.jpg)
Filtros Passa Baixa • Principais objeAvos:
• Suavizar a imagem pela redução das variações nos de níveis de cinza que dão à aparência de “serrilhado” nos patamares de intensidade.
• Atenuar altas frequências
• Minimizar ruídos
22
![Page 23: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/23.jpg)
Filtro da Média
23
![Page 24: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/24.jpg)
Filtros: média • blur( original, resultado, Size( 3, 3 ))
• -‐ o úlAmo parâmetro define o tamanho do filtro
24
![Page 25: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/25.jpg)
Filtro Gaussiano
25
![Page 26: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/26.jpg)
Filtros: gaussiano • GaussianBlur( original, resultado, Size( 3, 3 ),1,1);
-‐ dois úlAmos: desvio padrão em x e desvio padrão em y
-‐ Caso queira o filtro em si, use a função: getGaussianKernel
26
![Page 27: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/27.jpg)
Filtros não lineares • Não preservam relação inversa
• Principais: • Bilateral • Mediana
27
![Page 28: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/28.jpg)
Filtro Bilateral • Redução de ruídos • Simplificação de estruturas • Preserva contornos
28
![Page 29: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/29.jpg)
Filtros: bilateral
• bilateralFilter(original, resultado, 15, 15*2, 15/2) • 9 = tamanho do kernel
29
![Page 30: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/30.jpg)
Filtro da Mediana • Melhor para reduzir o ruído • Ordena-‐se os vizinhos em ordem crescente. • A mediana consiste nos m elementos que estão no meio do conjunto
• Eficiente contra ruídos localizados
30
![Page 31: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/31.jpg)
Filtro: mediana • salt(original, 3000); • medianBlur(original, resultado, 3);
• *Procure implementação de sal nos exemplos
31
![Page 32: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/32.jpg)
Filtro genérico no opencv • Use a função
filter2d(imagem, saida, depth, kernel)
32
![Page 33: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/33.jpg)
Morfologia
![Page 34: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/34.jpg)
Morfologia Matemática • Não Linear
• ObjeAvo: extrair objetos baseados em alguma geometria pré-‐definida • Elemento Estruturante
• Normalmente sobre imagens binárias • representadas com apenas 2 intensidades
34
![Page 35: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/35.jpg)
Exemplo de Imagem Binária
Converte em grayscale (cvtColor(..,..,CV_BGR2GRAY) Corte: 60 < x < 255 (threshold(image, thresholded,60, 255, cv::THRESH_BINARY)) 35
![Page 36: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/36.jpg)
Operações Básicas • Dilatação • Preenche ou amplifica contornos
• Reflexão (translação) de B para a origem centralizada em um elemento x de A
• B é chamado de elemento estruturante
A⊕ B = {z | (B̂)x ∩ A ≠∅}
36
![Page 37: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/37.jpg)
Exemplos
37
![Page 38: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/38.jpg)
Exemplos
38
![Page 39: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/39.jpg)
Exemplos: line
39
![Page 40: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/40.jpg)
Exemplo: Rolling Ball
40
![Page 41: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/41.jpg)
Erode no Opencv • Mat image= cv::imread("binary.bmp"); • Mat dilated; • dilate(image,dilated,cv::Mat());
41
![Page 42: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/42.jpg)
Operações Básicas • Erosão • Reduz elementos ao elemento estruturante
• Reflexão (translação) de B para a origem centralizada em um elemento x de A tal que todos os elementos de B estejam em A
• B é chamado de elemento estruturante
A−B = {x | (B)x ⊆ A}
42
![Page 43: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/43.jpg)
Exemplos
43
![Page 44: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/44.jpg)
Exemplos
44
![Page 45: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/45.jpg)
Exemplos: separação
45
![Page 46: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/46.jpg)
Exemplos: remoção de componentes
46
![Page 47: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/47.jpg)
Erode no Opencv • Mat image= cv::imread("binary.bmp"); • Mat eroded; • erode(image,eroded,cv::Mat());
47
![Page 48: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/48.jpg)
Obtendo Elementos Estruturantes Diferentes • Quando se passa uma matriz vazia (Mat()), opencv assume um quadrado 3x3 como elemento estruturante.
Opções para isso: Mat getStructuringElement(int shape, Size ksize) • MORPH_RECT -‐ retangular • MORPH_ELLIPSE -‐ elipse • MORPH_CROSS – em cruz • CV_SHAPE_CUSTOM – especificado pelo usuário (use * para indicar presença)
• Ou simplesmente criar uma matriz • Mat element(7,7,CV_8U,cv::Scalar(1)); 48
![Page 49: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/49.jpg)
Operações mais complexas • UAlizam combinações de dilatação e erosão
• Ou
• Expansões na teoria dos conjuntos
• Exemplos: • Abertura • Fechamento • Gradiente • TopHat • Hit & Miss • Fill • Skeleton
49
![Page 50: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/50.jpg)
Abertura • Suaviza o contorno da imagem ao mesmo tempo que elimina pequenas brechas
• Uma erosão seguida de uma dilatação
A !B = (A−B)⊕ B
50
![Page 51: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/51.jpg)
Exemplo
51
![Page 52: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/52.jpg)
Abertura no Opencv • Através da função: morphologyEx
• Mat element5(5,5,CV_8U,cv::Scalar(1)); • Mat opened; • morphologyEx(image,opened,cv::MORPH_OPEN,element5); 52
![Page 53: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/53.jpg)
Fechamento • Suaviza contorno, elimina pequenos buracos, preenche fendas
• Uma dilatação seguida por uma erosão
A•B = (A⊕ B)−B
53
![Page 54: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/54.jpg)
Exemplo
54
![Page 55: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/55.jpg)
Exemplo
55
![Page 56: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/56.jpg)
Abertura e Fechamento
56
![Page 57: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/57.jpg)
Fechamento no Opencv • Através da função: morphologyEx
• Mat element5(5,5,CV_8U,cv::Scalar(1)); • Mat closed; • morphologyEx(image,closed,cv::MORPH_CLOSE,element5); 57
![Page 58: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/58.jpg)
Outras opções morphologyEx • MORPH_GRADIENT – gradiente morfológico • Para obter contornos • original – erosao(original, elemento)
• MORPH_TOPHAT -‐ “top hat” • Diferença entre original e abertura • original – open(original, elemento)
• MORPH_BLACKHAT -‐ “black hat” • Diferença entre original e fechamento • fechamento(original, elemento) -‐ original
• MORPH_HITMISS -‐ “hit and miss” 58
![Page 59: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/59.jpg)
Uma que não é nativa no opencv • Até então: skeletonização
• É uma representação da componente de sustentação de uma forma (esqueleto)
• repete-‐se n vezes: ou até que não exista mais pixels na imagem original (caso binário)
Sn (X)=(X-B)-(X-B)!B
59
![Page 60: Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante.](https://reader035.fdocument.pub/reader035/viewer/2022071109/5fe418152536c9246d6533f1/html5/thumbnails/60.jpg)
Exemplo while (countNonZero(img) != 0) { erode(img, eroded, element); dilate(eroded, temp, element); subtract(img, temp, temp); bitwise_or(resultado, temp, resultado); eroded.copyTo(img); }
60