Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Redimensionner une image
Chaque réseau de neurones attend ses images dans une taille précise : 224x224 pour ResNet, 416x416 pour YOLO, 299x299 pour Inception. Si tu lui donnes une photo de 4000x3000 pixels sortie de ton téléphone, il ne saura pas quoi en faire. Redimensionner, c'est l'opération que tu fais avant quasiment tout traitement en deep learning. C'est aussi ce que fait ton navigateur web des milliers de fois par jour quand il affiche des miniatures.
Imagine que tu as une photo imprimée en grand format et que tu veux la réduire pour la mettre sur une carte postale. Tu ne peux pas garder tous les détails, alors tu échantillonnes : pour chaque position sur la carte postale, tu choisis le point le plus proche sur la grande photo. C'est l'interpolation par plus proche voisin (nearest neighbor).
En pratique, tu utiliserais cv2.resize(image, (largeur, hauteur)) qui propose plusieurs méthodes d'interpolation (bilinéaire, bicubique, etc.). Ici on implémente la version la plus simple avec NumPy pour comprendre le mécanisme fondamental.
Le principe : pour chaque pixel de la nouvelle image, on calcule quel pixel de l'image originale lui correspond, et on prend sa valeur. Pour le pixel (i, j) de la nouvelle image :
Avec NumPy, on peut faire ça sans boucle en utilisant des arrays d'indices.
Écris une fonction redimensionner(image, nouvelle_hauteur, nouvelle_largeur) qui renvoie l'image redimensionnée en utilisant l'interpolation par plus proche voisin.
Exemple : img = np.zeros((10, 10, 3), dtype=np.uint8) img[0:5, 0:5] = [255, 0, 0] # quart supérieur gauche en bleu small = redimensionner(img, 5, 5) small.shape vaut (5, 5, 3) Le quart supérieur gauche de small est toujours bleu
Ce que tu devrais voir sur ta machine : l'image redimensionnée conserve les mêmes motifs mais en plus petit ou plus grand. Pour comparer, affiche l'originale et la redimensionnée côte à côte.