Gegeven is een filtertabel (een 2D NumPy-tabel) met een oneven aantal rijen ($$2M+1$$) en kolommen ($$2N+1$$). De originele figuur bestaat uit $$R$$ rijen en $$K$$ kolommen. We berekenen de 2D convolutie van deze figuur met de gegeven filtertabel, waardoor een figuur met $$R-2M$$ rijen en $$K-2N$$ kolommen onstaat.
Programmeer de functie convolutie()
met als argumenten:
figuur
: een 2D (Z/W) of 3D (kleur) NumPy-tabel die een figuur voorstelt F
: de 2D NumPy-tabel die gewenste filteroperatie voorstelt, de tabel is een tabel van float
s.
Een convolutiefilter bevat dikwijls reƫle getallen. Reken daarom de convolutie uit gebruik makend
van float
s.
sharpen = np.array([[0., -1., 0.],[-1., 5., -1.],[0., -1., 0.]]) r = np.array( [[ 0, 1, 2, 3, 4, 5, 6, 7], [ 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30, 31], [32, 33, 34, 35, 36, 37, 38, 39], [40, 41, 42, 43, 44, 45, 46, 47]]) cr = convolutie(r, sharpen) #[[ 9. 10. 11. 12. 13. 14.] # [17. 18. 19. 20. 21. 22.] # [25. 26. 27. 28. 29. 30.] # [33. 34. 35. 36. 37. 38.]]