60
Filtros e Morfologia Prof. Dr. Geraldo Braz Junior

Filtrose( Morfologia(geraldo/vc/4.filtros.pdf · Obtendo(Elementos(Estruturantes(Diferentes(• Quandose& passa&uma&matriz&vazia&(Mat()),&opencv&assume&um& quadrado3x3 como&elemento&estruturante

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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