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 expérimenté
    Inscrit en
    Mars 2008
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 209
    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 émérite 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 : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Par défaut
    Il vaut mieux utiliser une image bruitée pour bien voir l'application de ce filtre pour le "débruitage".

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, 23h04
  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, 15h32
  3. filtre median ( non-linéaire)
    Par Affaires dans le forum Images
    Réponses: 0
    Dernier message: 26/10/2011, 16h00
  4. Les filtres non-linéaires : Kramer - Bruckner
    Par benDelphic dans le forum Contribuez
    Réponses: 4
    Dernier message: 23/05/2008, 23h22
  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, 14h31

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