Executando verificação de segurança...
0

Segunda Unidade

16.2 Exercícios

Resultado

1* Para uma função senoidal de frequência fx, a Transformada de Fourier gera picos em +/- fx no domínio da frequência.
Se a senóide for I(x,y) = Asin(2pifxX), então sua DFT teórica é dada por:

Formula

Ou seja, o espectro terá dois picos simétricos nas coordenadas (+/-fx, 0).
Observações sobre o espectro gerado:

Devemos observar dois picos bem definidos nas posições 𝑓𝑥 e −𝑓𝑥​.
O espectro pode ter um brilho maior no centro devido ao valor DC da imagem.

3* A transformada de Fourier da senóide ideal tem picos em 𝑓𝑥 e −𝑓𝑥, então devemos observar dois picos bem definidos no espectro.

Com a nova abordagem usando ponto flutuante, esperamos que:

O espectro fique mais próximo do teórico.
Reduza artefatos numéricos e erros de quantização.
Melhore a precisão das altas frequências.

Quando a imagem era lida de um arquivo PNG/JPG, os valores estavam no formato inteiro (uint8), o que causava:

Quantização: Detalhes sutis eram perdidos.
Ruído de aliasing: Pequenos artefatos numéricos no espectro.

Agora, com valores de ponto flutuante (float32):

Maior precisão: A DFT opera diretamente nos valores reais da senóide.
Menos ruído: Artefatos são reduzidos.
Espectro mais limpo: Os picos nas frequências ±𝑓𝑥 aparecem mais nítidos.

18.2 Exercícios

Resultado

O resultado obtido mostra uma imagem binária onde os objetos são destacados em preto e o fundo em branco. Aqui estão alguns pontos para discussão:

Segmentação por Otsu:

O algoritmo de Otsu escolheu automaticamente um limiar para separar os pixels em dois grupos: fundo e objeto.
Se a imagem original tinha regiões com intensidades bem distintas, a segmentação pode ter sido eficaz.
Regiões Pretas e Brancas:

As áreas pretas representam pixels abaixo do limiar escolhido.
As áreas brancas representam pixels acima do limiar.
Qualidade da Segmentação:

Se os objetos desejados estão bem separados, o limiar de Otsu foi adequado.
Caso haja ruído ou falhas na segmentação, pode ser necessário aplicar pré-processamento, como suavização com GaussianBlur antes de aplicar threshold.
Formato dos Objetos:

Se os objetos estão bem preservados e têm contornos definidos, o algoritmo funcionou corretamente.
Se há perda de detalhes ou buracos nos objetos, pode ser necessário um ajuste no pré-processamento.

Segmentação Modificado:

Resultado

Explicação das etapas:
Filtro Gaussiano:

A imagem original é suavizada usando um filtro Gaussiano (cv.GaussianBlur). O tamanho do kernel (cv.Size(55, 55)) pode ser ajustado dependendo da resolução da imagem e da intensidade das variações de iluminação.

O filtro Gaussiano remove detalhes de alta frequência (como texturas e ruídos), mantendo apenas as variações de baixa frequência (iluminação).

Correção de Iluminação:

A imagem suavizada (que representa a iluminação) é subtraída da imagem original (cv.subtract). Isso remove o efeito da iluminação desigual, normalizando o brilho da cena.

Limiarização de Otsu:

A limiarização de Otsu é aplicada na imagem corrigida, resultando em uma segmentação mais precisa.

Ajustes:
O tamanho do kernel do filtro Gaussiano (cv.Size(55, 55)) pode ser ajustado dependendo da resolução da imagem e da intensidade das variações de iluminação. Valores maiores suavizam mais, mas podem remover detalhes importantes.

Se a imagem ainda não estiver sendo segmentada corretamente, experimente ajustar o tamanho do kernel ou aplicar técnicas adicionais de pré-processamento, como equalização de histograma.

Observação:
Certifique-se de que a biblioteca OpenCV.js está corretamente carregada no seu projeto.

O código acima assume que a imagem de entrada é carregada corretamente e que o elemento outputCanvas existe no HTML para exibir o resultado.

19.3 Exercícios

Resultado

Explicação do Código:
Detecção de Bordas com Canny:

O algoritmo de Canny é aplicado à imagem em escala de cinza para detectar bordas.

O limiar inferior de Canny é controlado por um slider, permitindo ajustar a sensibilidade da detecção de bordas.

Pontilhismo com Base nas Bordas:

Para cada ponto gerado no pontilhismo, verifica-se se ele está localizado em uma borda detectada por Canny.

Se o ponto estiver em uma borda, ele é desenhado com um raio maior (RAIO_MAX).

Caso contrário, o ponto é desenhado com um raio menor (RAIO_MIN).

Interatividade:

Um slider permite ajustar o limiar inferior de Canny em tempo real, atualizando a imagem pontilhista conforme o valor é alterado.

Exibição do Resultado:

A imagem pontilhista resultante é exibida em um usando cv.imshow.

Técnica Utilizada:
Combinação de Pontilhismo e Canny:

As bordas detectadas pelo algoritmo de Canny são usadas para destacar regiões de alto contraste na imagem.

Pontos maiores são desenhados nas bordas para enfatizar os detalhes, enquanto pontos menores são usados nas regiões suaves para criar um efeito mais uniforme.

Ajuste Dinâmico:

O limiar de Canny pode ser ajustado dinamicamente, permitindo explorar diferentes níveis de detalhes na imagem pontilhista.

Carregando publicação patrocinada...