Aluno: Henrique Oliveira Waisman
Turma: CC3M
Professor: Abrantes Araújo Silva Filho
Este PSET é uma tradução da primeira tarefa de programação que os alunos da
disciplina “MIT 6.009: Fundamentals of Programming” recebem logo no primeiro
dia de aula, feita para os alunos da disciplina “Linguagens de Programação” na
Universidade Vila Velha (UVV).
Se você passar essa imagem (altura: 1 • largura: 4 • pixels: [29, 89, 136, 200]) pelo filtro de inversão, qual seria o output esperado? Justifique sua resposta.
Ao aplicar o filtro de inversão, cada pixel da imagem passará pela função:
Após toda imagem passar pelo tratamento, será esperado um output de altura: 1, largura: 4 e pixels: [226, 166, 119, 55]
Faça a depuração e, quando terminar, seu código deve conseguir passar em todos os testes do grupo de teste TestInvertida (incluindo especificamente o que você acabou de criar). Execute seu filtro de inversão na imagem test_images/bluegill.png, salve o resultado como uma imagem PNG e salve a imagem em seu repositório GitHub.
Considere uma etapa de correlacionar uma imagem com o seguinte kernel:
0.00 -0.07 0.00
-0.45 1.20 -0.25
0.00 -0.12 0.00
Aqui está uma parte de uma imagem de amostra, com as luminosidades específicas de alguns pixels:
Qual será o valor do pixel na imagem de saída no local indicado pelo destaque vermelho?
Observe que neste ponto ainda não arredondamos ou recortamos o valor, informe exatamente como você calculou.
Observação: demonstre passo a passo os cálculos realizados.
Resposta:
Ox,y = 32,76
Cálculo:
80x0 + (-0,07x53) + 99x0 +
(-0,45x129) + 127x1,20 + (-0,25x148) +
175x0 + (-0,12x174) + 193x0
+0 -3,71 +0
-58,05 +152,4 -37
+0 -20,88 +0
= 32,76
Quando você tiver implementado seu código, tente executá-lo em test_images/pigbird.png com o seguinte kernel 9 × 9:
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
Ao rodar esse kernel, salve a imagem resultante em seu repositório GitHub.
Quando você terminar e seu código passar em todos os testes relacionados ao desfoque, execute seu filtro na imagem test_images/cat.png com um kernel de desfoque de caixa de tamanho 5, salve o resultado como uma imagem PNG e faça o upload para seu repositório GitHub.
Se quisermos usar uma versão desfocada B que foi feita com um kernel de desfoque de caixa de 3 × 3, que kernel k poderíamos usar para calcular toda a imagem nítida com uma única correlação? Justifique sua resposta mostrando os cálculos.
O kernel pode ser calculado pela equação descrita na seção 5.2 do pdf:
- Sx,y = round(2Ix,y − Bx,y)
Como queremos achar o kernel de entrada, precisamos usar o kernel identidade descrito na seção 4.3.1 - 0 0 0
0 1 0
0 0 0
Multiplicando por 2 como mostrado na equação 2Ix,y − Bx,y, temos: - 0 0 0
0 2 0
0 0 0
Bastaria então fazer a subtração de 2Ix,y de 2bx, y que obteríamos o resultado esperado com uma única correlação.
Explique o que cada um dos kernels acima, por si só, está fazendo. Tente executar mostrar nos resultados dessas correlações intermediárias para ter uma noção do que está acontecendo aqui.
Kernel Kx destaca bordas no eixo X e Ky faz o mesmo no eixo Y