We willen een afbeelding verkleinen door elke dimensie met een vaste factor $$F$$ (geheel) kleiner te maken. Elk vierkantje van $$F \times F$$ pixels in de originele figuur wordt daarom omgezet naar 1 pixel in de nieuwe figuur. De waarde van het nieuwe pixel bereken je als gemiddelde van de originele pixelwaarden, omgezet naar een geheel getal. Indien de dimensies van de originele afbeelding geen geheel veelvoud van $$F$$ zijn, dan verwijder je een aantal kolommen rechts van het origineel en/of een aantal rijen onderaan het originele beeld.
Programmeer de functie verklein()
met als argumenten:
figuur
: een 2D (Z/W) of 3D (kleur) NumPy-tabel die een figuur voorstelt F
: de gewenste reductiefactor (geheel)
TIP
Merk op dat de functie np.average()
het gemiddelde berekent van een NumPy-tabel. Let erop dat je in het geval van een kleurfiguur dit gemiddelde NIET uitrekent over alle kleurkanalen heen, maar voor elk kleurkanaal afzonderlijk!
Vermijden van for
-lussen is hier niet evident. Spendeer hier dan ook niet teveel tijd aan.
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]]) kr = verklein(r, 2) #[[ 4 6 8 10] # [20 22 24 26] # [36 38 40 42]]