filtre d'image en C
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

filtre d'image en C



  1. #1
    boulbidor

    filtre d'image en C


    ------

    Salut tout le monde !
    Bon voilà mon problème, je cherche à faire un filtre d'image en langage c.
    Voilà la démarche,
    -) J'ouvre mon image en mode binaire
    fichier=fopen("D:\\image.jpg", "rb")
    -) Je copie les pixels dans une matrice
    -) je fais mon traitement sur cette matrice et j'enregistre le tout dans une nouvelle image.

    Mon probleme, c'est que je ne connais pas la structure exacte (l'organisation interne) de l'image (.jpeg ou bmp).
    J'ai compris qu'il y a une partie d'entête, d'informations et autres.

    Ma question est comment faire pour copier mon image dans une matrice de pixel. Suis-je obligé d'utiliser OpenGL ou puis-je le faire moi même (2ème solution voulue).

    Merci d'avance ...

    -----

  2. #2
    pazcal

    Re : filtre d'image en C

    Citation Envoyé par boulbidor Voir le message
    Salut tout le monde !
    Bon voilà mon problème, je cherche à faire un filtre d'image en langage c.
    Voilà la démarche,
    -) J'ouvre mon image en mode binaire
    -) Je copie les pixels dans une matrice
    -) je fais mon traitement sur cette matrice et j'enregistre le tout dans une nouvelle image.

    Mon probleme, c'est que je ne connais pas la structure exacte (l'organisation interne) de l'image (.jpeg ou bmp).
    J'ai compris qu'il y a une partie d'entête, d'informations et autres.

    Ma question est comment faire pour copier mon image dans une matrice de pixel. Suis-je obligé d'utiliser OpenGL ou puis-je le faire moi même (2ème solution voulue).

    Merci d'avance ...
    C'est pas tout à fait pareil... Une image bmp est non compressée, donc tu trouveras autant de ixel dans le fichier qu'il y en a dans l'image. A l'inverse, une image jpeg, est compressée, il convient de la décompresser avant traitement. Et de la recompresser après traitement si tu veux garder le même format.
    Pour les images bitmap (bmp), facile, il suffit de lire le header de fichier pour connaitre les caractéristiques de l'image en terme de taill et d'encodage. Il est à noter que le spixels d'une image bmp sont stockés à l'envers, le premier pixel est en fin de fichier.
    Pour les images jpeg il est fortement souhaitable de faire appel à une librairie spécialisée. OpenGL ne te sera d'aucun aide.
    A plus

  3. #3
    boulbidor

    Re : filtre d'image en C

    Ok merci, en faite je compte utiliser une image bmp (paint de windows oblige).
    Donc pour cette image je peux lire les informations d'entête et faire le traitement par la suite.
    Bon une question : est-ce que les informations sur cette page me seront utiles. Ou me conseille-tu de chercher encore plus.
    D'un autre coté j'ai trouvé un petit code sur wiki où ils ont utilisés des structures et constantes. ce que j'ignore c'est est-ce que ces structures et constantes sont définis par défauts dans une librairie ou s'il faut que je les définisses moi même de la manière dont ils l'ont fais.

  4. #4
    bzh_nicolas

    Re : filtre d'image en C

    Citation Envoyé par boulbidor Voir le message
    Ok merci, en faite je compte utiliser une image bmp (paint de windows oblige).
    C'est pas pour dire, mais ça fait au moins une dizaine d'année que paint n'est plus limité aux .bmp (depuis la sortie de windows XP et peut-être même windows 2000)...

  5. A voir en vidéo sur Futura
  6. #5
    Dormeur74

    Re : filtre d'image en C

    le premier pixel est en fin de fichier
    J'ai lu un truc dans ce goût-là dans les années 80 et m'interroge encore. Cette assertion n'est valable que si on accepte l'idée que le premier pixel d'une image se situe en haut à droite et le dernier en bas à gauche (hummm pas très occidental tout ça ).

    Alors, on met les doigts dedans. On fabrique une BMP 24 bits de 2x3 pixels avec les couleurs précisées sur le côté droit de l'image. Ensuite on charge l'image sous un éditeur hexadécimal quelconque et on obtient la matrice suivante.

    Nom : bmp.jpg
Affichages : 72
Taille : 62,3 Ko

    Quelques précisions sur les octets du header dont tu vas avoir besoin Boulbidor.
    1) le 3e octet te donne le longueur du fichier (#50 = 80 octets en décimal)
    2) les octets 11 et 12 te donnent l'offset du début de l'image, en l'occurrence le 1er pixel (#36 = 54 : l'image commence sur le 55e octet). Tu fera attention aux poids faible et fort de ces deux octets.
    3) les octets 55, 56 et 57 donnent les valeurs BVR du premier pixel. Je me demande si le fait d'avoir inversé les 3 couleurs RVB n'est pas à l'origine de la confusion.
    4) tu noteras le "00 00 00" qui termine la première ligne. Cela est dû au fait que le nombre de pixels d'une ligne doit être paire. C'est le système qui ajoute ces 3 octets lorsque la condition n'est pas respectée. Il faudra en tenir compte dans ton algorithme.

    Tu as maintenant tout ce qui faut pour préparer ton filtre. Tu peux le faire octet par octet en traitant ton image comme un fichier à accès direct (alias aléatoire). Mais il y a probablement des solutions plus rapide en C/C++. Celle-là présente l'avantage de ne pas avoir de tableau à ouvrir.

    Merci de suivre ces quelques conseils pour poster une image dans le forum.

    Pour la modération,

    yoda1234.
    Dernière modification par yoda1234 ; 10/04/2011 à 04h32.

  7. #6
    pazcal

    Re : filtre d'image en C

    Citation Envoyé par boulbidor Voir le message
    Ok merci, en faite je compte utiliser une image bmp (paint de windows oblige).
    Donc pour cette image je peux lire les informations d'entête et faire le traitement par la suite.
    Bon une question : est-ce que les informations sur cette page me seront utiles. Ou me conseille-tu de chercher encore plus.
    D'un autre coté j'ai trouvé un petit code sur wiki où ils ont utilisés des structures et constantes. ce que j'ignore c'est est-ce que ces structures et constantes sont définis par défauts dans une librairie ou s'il faut que je les définisses moi même de la manière dont ils l'ont fais.

    Tu peux utiliser tes 2 liens. Le second, avec la structure peut être modifié selon tes propres besoins.
    a plus

  8. #7
    boulbidor

    Re : filtre d'image en C

    Citation Envoyé par pazcal Voir le message
    Tu peux utiliser tes 2 liens. Le second, avec la structure peut être modifié selon tes propres besoins.
    a plus
    Merci pazcal et tous les autres.
    J'ai finalement fais mon fitre sur les Images BMP niveau de Gris 8 bits.
    Mine de rien c'étais pas si compliqué que ça. les deux liens m'ont été également d'un secours.

Discussions similaires

  1. conseil choix filtre et roue a filtre
    Par invite47c25a3f dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 10
    Dernier message: 04/09/2018, 16h03
  2. L'air un filtre passe haut/ Cloison un filtre passe bas.
    Par invite92b520e9 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 27/04/2010, 09h39
  3. [MATLAB] Segmentation d'image + edition d'une matrice d'image
    Par invitef5d502cc dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 04/11/2009, 12h24
  4. Réponses: 0
    Dernier message: 31/07/2009, 14h49
  5. filtre peigne ou filtre à AO
    Par invite5d6849fa dans le forum Électronique
    Réponses: 3
    Dernier message: 04/01/2008, 09h56