ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJ

ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 1 MINI Project Report Picture Filtering Function kernel Algorithm Analysis and Test« IMG_conv_3*3_i8_c8s » REALISED by : SUPERVISED by : ZOUHRI MOHAMED AMINE Prof M . NAJOUI 2019 / 2020 ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 2 Résume Dans ce travaille nous avons présente une analyse mathématique et explication d’un algorithme ‘version normale ‘ qui traite la convolution de deux matrice une est une image d’entrée de dimension quelquonque, et l’autre matrice s’appelle filtre ou bien ‘ mask ‘ de dimension 3x3 , Apres on a bien effectuer une analyse de l’algorithme optimiser toujours qui traite la convolution de deux matrice, en expliquons le principe de l’implémentation de notre algorithme optimise , et définissons les différente fonction intrinsèques qui existe , en fin en arrive de conclure la différence entre les 2 version de l’algorithme . Et vers la fin on a importé et exécute notre projet via Code Composer Studio , pour arriver bien de compares la différence entre les 2 version de l’algorithme implémenté Mot clé : Mask, the kernel convolution , pixels ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 3 Sommaire I. Introduction : ...................................................................................................................................................... 4 II. Etude et analyse mathématique de l’algorithme ( version normale ) .................................................................. 5 III. Explication de l’algorithme implémenté........................................................................................................... 7 IV. Explication détaillée de l’implémentation optimisée de l’algorithme étudié .................................................. 10 V. Importation et exécution de projet : .................................................................................................................. 17 VI. Conclusion ..................................................................................................................................................... 21 VII. Bibliographie et Webographie ....................................................................................................................... 21 ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 4 I. Introduction : Notre projet C’agit bien d’un algorithme qui utilise la convolution de kernel dans les valeur d’entre sont l’image et le filtre ‘mask ‘ , est en trouve vers la fin notre résultat qu’est bien sur une image . Avant tous le programme traite les pixels sur 8bits ( 256 couleur ) . Pour bien expliquer mathématiquement notre programme on considère une entre image sous forme d’une matrice (imgin_ptr) de dimension (n x n) et le filtre (mask_ptr) de dimension toujours (3x3) alors la dimension de la matrice de sortie est la suivant : (n-3+1) x (n-3+1 ) (nxn) * (3x3) (n-3+1) x (n-3+1 ) ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 5 II. Etude et analyse mathématique de l’algorithme ( version normale )  DEFINITION DES VARIABLES void IMG_conv_3x3_i8_c8s_cn ( const unsigned char *restrict imgin_ptr, /* la matrice de l’image d’entrée */ unsigned char *restrict imgout_ptr, /* la matrice de l’image de sortie */ short width, /* nombre des valeurs de la matrice de sortie */ short pitch, /* nombre des colonnes de la matrice d’entrée */ const char *restrict mask_ptr, /* nombre des colonnes de la matrice d’entrée */ short shift /* valeur donne par l’utilisateur pour contrôle les valeur de sorite */ )  ETUDE EST ANALYSE DE L’ALGORITHME { int i, j, k; /* pour définir i , j et que de type entier */ int sum; /* pour définir sum de type entier */ const char *mask_rot = &mask_ptr[3*3 - 1]; /* fixer la dernier adresse de la matrice mask sur la matrice mask_rot pour faire la rotation */ for ( i=0 ; i< width ; i++ ) /* une boucle pour le calcule de tous les valeurs de la matrice de sortie */ { sum = 0; /* initialise sum par la valeur 0 */ for (j=0; j<3; j++) /* le balayage des éléments par ligne */ { for (k=0; k<3; k++) /* le balayage des élément par Colonne */ sum += imgin_ptr [j * pitch + i + k] * mask_rot[-(j * 3 + k)]; La somme des produites Pour la colones de la matrice d’entrée Pour la i eme valeur de sortie Pour commencer le calcule par le dernier élément de filtre Le produit des éléments ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 6 imgout_ptr[i] = (sum > 255) ? 255 : ((sum < 0) ? 0 : sum); /* si la valeur retourner par sum est supérieur a 255 il le pixels de sortie reçoit 255 , sinon si Sum et inferieur a 0 il reçoit 0 , sinon il reçoit sum*/ } }  LES APPLICATIONS DE L’ALGORITHME : Ce Algorithme est utilisé dans le filtrage des image par des effet et chaque effets a une mask qui lui correspond Opération mask Amélioration de la netteté ( ) La détection de contours ( ) Box blur 1 /9 *( ) ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 7 III. Explication de l’algorithme implémenté The kernel convolution accepte cinq trois rangées de pixels d'entrée `` pitch '' et produit une rangée de pixels de sortie `` width '' en utilisant le masque d'entrée de 3 par 3. Cette convolution effectue une multiplication point par point de masque 3 x 3 avec l'image d'entrée. Le résultat de 9 multiplications est ensuite additionné pour produire une somme intermédiaire de convolution de 32 bits. La valeur de décalage définie par l'utilisateur est utilisée pour décaler cette somme de convolution, jusqu'à la plage d'octets et la stocker dans un tableau de sortie. Le résultat stocké est également limité entre 0 et 255 et sera saturé en conséquence. Le masque est déplacé d'une colonne à la fois, faisant avancer le masque sur toute l'image jusqu'à ce que toute la «largeur» soit couverte. Les masques sont fournis sous forme de valeurs signées 8 bits. Les pixels d'image d'entrée sont fournis en tant que pixels non signés 8 bits et les pixels de sortie seront en pixels non signés 8 bits. Pour bien expliquer l’algorithme implémente en vient de présenter un exemple d’une image avec les déférente étape et boucle de notre algorithme Prônons une matrice de dimension 4x4 ; Pitch = 4 ; with = 4 ; dimension de matrice de sortie ( 4-3+1 )x( 4-3+1) ( tableau de deux dimension ) ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 8 1er Boucle : 2eme Boucle : ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 9 3eme Boucle : 4eme Boucle : ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 10 IV. Explication détaillée de l’implémentation optimisée de l’algorithme étudié  EXPLICATION DE CHACUNE DES INSTRUCTIONS INTRINSEQUES QUI EXISTE DANS NOTRE ALGORITHME instructions explication _nassert Eviter les vérification supplémentaire effectuer par le compilateur sur l’expression passer en argument _mem4 Permet de charges les désalignements et stocker en 4 octets dans la mémoire _packlh2(src1,src2) Le demi-mot inférieur / supérieur de src2 est placé dans le demi-mot inférieur de la valeur de retour. _swap4 Échange des paires d'octets (un échange endian) dans chaque valeur de 16 bits _extu(src2,csta,cstb) Extrait le champ spécifié dans src2, étendu à zéro sur 32 bits. L'extrait est effectué par un décalage à gauche suivi d'un décalage à droite non signé; csta et cstb sont les montants de décalage vers la gauche et de droite, respectivement. _memd8 Permet de charges les désalignements et stocker en 8 octets dans la mémoire _lo Renvoie le registre bas (pair) d'une paire de registres doubles _hi Renvoie le registre haut (impair) d'une paire de registres doubles _dotpsu4(src1,src2) Pour chaque paire de valeurs à 8 bits dans src1 et src2, la valeur à 8 bits de src1 est multipliée par la valeur à 8 bits de src2. Les quatre produits sont résumés ensemble _spack2 Deux valeurs 32 bits signées sont saturées en valeurs 16 bits et regroupées dans la valeur de retour _spacku4 Quatre valeurs 16 bits signées sont saturées en valeurs 8 bits et regroupées dans la valeur de retour _amem4 Autorise le chargement et le stockage alignés de 4 octets dans le registre. Le pointeur doit être aligné sur une limite de 4 octets, donc elle va nous retourner séparément chaque pixel de sortie sur un octet. ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 11  LE PRINCIPE DE L’IMPLEMENTATION OPTIMISEE DE L’ALGORITHME ETUDIE : #pragma CODE_SECTION(IMG_conv_3x3_i8_c8s, ".text:optimized"); _nassert((int)imgout_ptr % 4 == 0); /* tableau de sortie aligné sur les mots*/ _nassert(width >= 4); /* La largeur est supérieure ou égale à 4*/ _nassert(width % 4 == 0); /* La largeur est un multiple de 4 */ ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 12 ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 13 Suit de l’algorithme : ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 14 ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 15  Suit de programme ELECTRIC ENGINEERING DEPARTMENT MINI PROJECT OF DSP SUPERVISED By Prof : M .NAJOUI 16  LES DIFFERENCES ENTRE LA VERSION NORMALE ET LA VERSION OPTIMISEE :  Un uploads/Litterature/ zouhri-mohamed-amine.pdf

  • 11
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager