IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Les Filtres non -Linéaires : Médiane


Sujet :

Contribuez

  1. #1
    Membre actif
    Inscrit en
    Mars 2008
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 209
    Points : 227
    Points
    227
    Par défaut Les Filtres non -Linéaires : Médiane
    Voici donc un autre filtre non linéaire : La médiane . le principe est de calculer la médiane dans le voisinage de chaque pixel .

    Code en Borland Delphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    procedure TForm1.Mediane1Click(Sender: TObject);
    var i,j,k:integer;
    h:array [0..8] of double;
    b:Tbitmap;
    inter : double;
    begin
    b:=Tbitmap.create;
    b:=image1.Picture.Bitmap ;
     for j:=0 to image1.width do
    for i:=0 to image1.Height do
    begin
    h[0]:= getrvalue(image1.Canvas.Pixels[j-1,i-1] ) ;
    h[1] :=getrvalue(image1.Canvas.Pixels[j,i-1] )   ;
    h[2]:= getrvalue(image1.Canvas.Pixels[j+1,i-1])    ;
    h[3]:= getrvalue(image1.Canvas.Pixels[j-1,i]  ) ;
    h[4]:=getrvalue( image1.Canvas.Pixels[j,i])   ;
    h [5]:= getrvalue(image1.Canvas.Pixels[j+1,i])    ;
    h [6]:= getrvalue(image1.Canvas.Pixels[j-1,i+1])  ;
    h [7]:= getrvalue(image1.Canvas.Pixels[j,i+1]  );
    h [8]:=getrvalue(image1.Canvas.Pixels[j+1,i+1] ) ;
    k:=0;
       while k < 9 do
       if h[k]>h [k+1] then
       begin
       inter :=h[k];
       h[k]:=h[k+1];
       h[k+1]:=inter;
       k:=0;
       end
       else k:=k+1 ;
     b.Canvas.Pixels[j,i]:=rgb(floor(h[4] ),floor(h[4] ),floor(h[4] ));
    end;
    image1.Picture.Bitmap := b;
    b.freeimage ;
    end;

    Vu que la taille du tableau est petite ( un voisinage 3*3) j 'ai opté pour un tri
    Bubble Sort.

    application 1 fois



    application 5 fois


  2. #2
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Il vaut mieux utiliser une image bruitée pour bien voir l'application de ce filtre pour le "débruitage".
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

Discussions similaires

  1. [CR XI] Effectuer un filtre de toutes les valeurs sauf les champs non renseignés
    Par alicaime dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 08/06/2014, 22h04
  2. Filtre de Kalman Etendu pour des signaux non linéaires
    Par eeglabor dans le forum Mathématiques
    Réponses: 0
    Dernier message: 08/01/2014, 14h32
  3. filtre median ( non-linéaire)
    Par Affaires dans le forum Images
    Réponses: 0
    Dernier message: 26/10/2011, 15h00
  4. Les filtres non-linéaires : Kramer - Bruckner
    Par benDelphic dans le forum Contribuez
    Réponses: 4
    Dernier message: 23/05/2008, 22h22
  5. Le linker ignore les fonctions non implémentées
    Par Rodrigue dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/03/2005, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo