Image

Filtre de Sobel

Début : Mars 2013
Durée : 2 semaines
Langage : Assembleur MIPS
Bibliothèques/Outils : MARS MIPS Simulator

Lien vers le code source

Ce travail a été réalisé dans le cadre du cours « Architecture des Ordinateurs » que j’ai pu suivre à l’université de Strasbourg. Stan Wilhelm et moi-même avons travaillé en binômes sur ce projet. L’objectif était de réaliser un programme en langage assembleur permettant d’appliquer un renforcement des contours sur une image. Celle-ci devait avoir un format BMP et ses couleurs devaient être codées sur 8 bits.

Afin de renforcer les contours d’une image,  il est nécessaire d’utiliser des matrices de convolution. Ces matrices servent à obtenir deux gradients, qui sont en fait deux images contenant des informations concernant la dérivée horizontale et verticale en chaque point. L’addition de ces deux images et un seuillage des couleurs permet d’obtenir le résultat suivant :

lena256                    lena256Contour

Nous avons fait en sortes que ce programme fonctionne aussi avec les images dont les couleurs sont codées sur 4 bits et 1 bit. Nous avons aussi réalisé d’autres filtres rapides, qui n’impliquaient qu’une légère modification des matrices de convolution.

Ce projet aura vraiment été très intense. Nous n’avions en effet que 2 semaines pour appliquer ce que nous apprenions du cours sur le langage MIPS donné dans le même laps de temps. Ainsi, nous avons appris à correctement structurer notre code en blocs de fonctions au milieu du développement, ce qui nous a forcé à reprendre certaines parties du code plusieurs fois. Débugger le programme aura aussi été plus difficile qu’à l’accoutumée, bien que l’utilitaire MARS se soit avéré d’une grande aide.

Au final, je suis content d’avoir pu découvrir un code beaucoup plus bas niveau afin de mieux comprendre le fonctionnement des programmes en général. De plus, j’ai appris quelques bases sur le traitement d’images, via les divers filtres et matrices de convolution. Ce projet aura été vraiment difficile mais s’est avéré être un défi plaisant à relever.