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 : Kramer - Bruckner


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 : Kramer - Bruckner
    " Le filtre de Kramer et Bruckner est l'un des filtres non-linéaires qu'on appelle des filtres de choc, ils réduisent l'étendue des dégradés. Ils opèrent en étendant les minima et maxima de niveaux de gris dans une image. En répétant l'application d'un tel filtre, on aboutit à une image sans le moindre dégradé, donc formée de zones constantes séparées par des marches abruptes. "
    voila donc une implémentation Delphi
    Code Delphi : 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
    procedure TForm1.KrameretBruckner1Click(Sender: TObject);
        var i,j :integer;
       intensMax, intensMin :byte;
           begin
          intensMin:= greymin(image1);
           intensMax:= greymax(image1);
    
    
            for j:=0 to image1.width do
            for i:=0 to image1.Height do
                     if getrvalue(image1.canvas.pixels[j,i])>=(intensMin+intensMax)/2
    
                        then
                       image1.canvas.pixels[j,i]:= rgb(intensMax,intensMax,intensMax) 
                       else
                       image1.canvas.pixels[j,i]:=  rgb(intensMin,intensMin,intensMin);
    
    end;
    et les deux procédures de calcul des niveaux maxima de gris :
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function greymax (i:timage):byte;
      var ik ,j :integer;
           v1,v2 :byte ;
              begin
              v2:=0;
                for j:=0 to i.width do
                for ik:=0 to i.Height do
                     begin
                     v1:= floor((getrvalue(i.Canvas.Pixels [j,ik])+getbvalue(i.Canvas.Pixels [j,ik])+getgvalue(i.Canvas.Pixels [j,ik]))/3);
                   v2:= max(v1,v2);
    end;
                  result:=v2 ;
     end;

    a noter que cette procédure marche même pour les images en RGB ( mal heureusement j'ai pas encore adapté l'algorithme lui même qui n'utilise que les images en niveaux de gris )

    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function greymin(i:timage):byte ;
      var ik,j :integer;
      v1,v2 :byte ;
        begin
        v2:=255;
           for j:=0 to i.width do
           for ik:=0 to i.Height do
           begin
             v1:= floor((getrvalue(i.Canvas.Pixels  [j,ik])+getbvalue(i.Canvas.Pixels [j,ik])+getgvalue(i.Canvas.Pixels [j,ik]))/3);
            v2:= min(v1,v2);
           end;
           result:=v2 ;
    end;
    je posterais une version Borland C++ un peu plus tard

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Est ce que tu peux nous mettre des images pour que l'on puisse comparer aux filtre de choc que millie a déjà posté ici :

    http://www.developpez.net/forums/sho...d.php?t=416703

    Si tu veux un peu plus de perf, tu peux précalculer certains termes.

  3. #3
    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
    en fait ce filtre ressemble beaucoup au filtre Mediane ...
    On obtient une image binaire , sans dégradé .
    Images attachées Images attachées   

  4. #4
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    sans dégradé .
    Le problème est que sur l'image de départ, tu n'as déjà pas de dégradé

    en fait ce filtre ressemble beaucoup au filtre Mediane ...
    Est-ce qu'il y a des cas où ils réagissent de façon très différentes. Si la réponse est non alors quel peut être l'intérêt de ce filtre ?

  5. #5
    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
    Promu@ld
    en fait il y avait un petit dégradé sur l'image dû au flou appliqué ... c'est pour cela qu 'il est intéressant de l'utiliser pour préparer l'image à d 'autres traitements ( Hough par exemple )
    voici donc les autres exemples


    après application du filtre




    pour les différences :oui il existe . déja les deux filtres sont de deux types différents , le filtre mediane est local et le filtre K-B est global .

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 : Médiane
    Par benDelphic dans le forum Contribuez
    Réponses: 1
    Dernier message: 28/05/2008, 04h12
  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