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

Images Discussion :

comparaison entre l'image d'une vidéo et une image .jpg et sélection de zone dans une image


Sujet :

Images

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 49
    Points
    49
    Par défaut comparaison entre l'image d'une vidéo et une image .jpg et sélection de zone dans une image
    bonjour,
    mon PFE consiste à détecter des fuites dans des tubes à l'aide de cameras de surveillance.
    je vais donc comparer la vidéo à une image ou il y a pas de fuite.
    ainsi lorsqu'il y a une fuite il y a une différence entre les deux images je vais donc afficher un message d'alerte par exemple.

    ma question est comment comparer l'image d'une vidéo et une image . jpg ?
    et comment faire la comparaison dans une zone bien déterminée (au niveau des tubes dans l'image) ?

    merci d'avance pour vos réponses!

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    dans matlab, tes deux images auront le même format si ce sont 2 images rgb : tu auras des tableaux de Mlignes x Ncolonnes x 3composantes.

    Pour ta comparaison, si ta caméra est fixe, tu peux juste faire la différence de tes images?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    j'ai d'un coté la vidéo:

    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
     
    function axes1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to axes1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: place code in OpeningFcn to populate axes1
    % Create a video input object.
    vid = videoinput('winvideo');
     
    % Create the image object in which you want to display 
    % the video preview data. Make the size of the image
    % object match the dimensions of the video frames.
     
    vidRes = get(vid, 'VideoResolution');
    nBands = get(vid, 'NumberOfBands');
    hImage = image( zeros(vidRes(2), vidRes(2), nBands) );
    start(vid)
    % Display the video data in your GUI.
     
    preview(vid, hImage);
    et de l'autre l'image:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function axes2_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to axes2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: place code in OpeningFcn to populate axes2
    img=imread('pfeimage.jpg'); 
    imshow(img);
    j'ai pensé à ajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    data=getsnapshot(vid);
    imgv=image(data);
    et utiliser ce code pour la différence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    diff= imadd(imgv,-img);
    vous en pensez quoi?
    si c'est bon il me reste un autre problème c'est celui de faire la différence dans des zones bien précises de l'image..

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'en pense que tu devrais déjà essayer au lieu de nous poser la question
    Et regarder la documentation de la fonction image.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Points : 49
    Points
    49
    Par défaut Après plusieurs heures de recherche et d'essais ..
    bon toujours pas trouvé ce que je voulais! en fait je sais pas comment coder ce que je veux..

    j'ai trouver comment charger une vidéo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function charger_video(obj, event)
            [FileName,PathName] = uigetfile('*.mpg','sélectionnez votre video');
     
            file = fullfile(PathName,FileName);
     
            VidEcho = mmreader(file);
            vidFrames = read(VidEcho);
            numFrames = get(VidEcho, 'numberOfFrames');
            for k= 1:(numFrames-1)
                mov(k).cdata=vidFrames(:,:,:,k);
                mov(k).colormap=[];
            end
    movie(mov, [m:numFrames-1],vitesse );
    pour sélectionner un zone:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    clear all;
    I= imread('vitesse4.jpg'); figure; imshow(I); % affiche l'image de depart
    level = graythresh(I);  % niveau de gris
    BW = im2bw(I, level); figure; imshow(~BW); title('BW'); % binarisation de l'image
    BWF = bwareaopen(BW,30); figure; imshow(~BWF); title('BWF'); % filtrage des zones inferieures a 30 pixels
    houghcircle(BWF,50);
    j'ai pensé à utiliser photoshop et mettre en noir ce que je veux pas comparer dans l'image et utiliser ce programme et filtrer les zones à 0 pixel.

    et sinon pour passer de la vidéo à l'image j'ai trouvé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    % Lecture de la vidéo
    [ref_file,ref_path,schalt] = uigetfile('*.avi','VIDEO FILE');
     
    MyVideo = aviread(fullfile(ref_path,ref_file));
     
    % conversion vidéo --> série d'image
    for i = 1:numel(MyVideo)
        imwrite(MyVideo(i).cdata,[num2str(i) '.jpeg'],'jpg')
    end
    pour faire l'appel de l'image on fait comment?


    ceci est mieux?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    obj=mmreader(file);
    vidFrames = read(obj);
    numFrames = get(obj, 'numberOfFrames');
     
    for k = 1 : numFrames
    mov(k).cdata = vidFrames(:,:,:,k);
    mov(k).colormap = [];
    end
    Imagei=mov(1,i).cdata(:,:,: );
    pour la vidéo et les images je veux rien enregistrer.. juste comparer.
    pour la comparaison ça sera ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    img3=abs(img1-img2)
    imshow(img3)
    c'est quoi alors imabsdiff ?


    à quoi servent?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    doc VideoReader
    doc mmreader
    doc aviread
    j'ai beau lire je vois pas trop la difference et comment les utiliser..

    le filtrage c'est mieux?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    I = imread('cameraman.tif');
    J = uint8(filter2(fspecial('gaussian'), I));
    K = imabsdiff(I,J);
    imshow(K,[])
    c'est pas exactement ce que je veux..
    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
     
    % Create video input object. 
    vid = videoinput('dcam',1,'Y8_1024x768')
     
    % Set video input object properties for this application.
    % Note that example uses both SET method and dot notation method.
    set(vid,'TriggerRepeat',Inf);
    vid.FrameGrabInterval = 5;
     
    % Set value of a video source object property.
    vid_src = getselectedsource(vid);
    set(vid_src,'Tag','motion detection setup');
     
    % Create a figure window.
    figure; 
     
    % Start acquiring frames.
    start(vid)
     
    % Calculate difference image and display it.
    while(vid.FramesAcquired<=100) % Stop after 100 frames
        data = getdata(vid,2); 
        diff_im = imabsdiff(data(:,:,:,1),data(:,:,:,2));
        imshow(diff_im);
    end
     
    stop(vid)
    moi je veux comparer l'image de la vidéo à une autre image (Atlas)
    et voir si il y a un changement (équivalent à un défaut)
    sans pour autant ("Bring the acquired data into the workspace ") enregistrer la vidéo.


    SVP prenez la peine de rependre.. c'est peut-être évident pour vous mais ça l'est pas pour moi. (ou pour quelqu’un d'autre comme moi)
    faut vraiment que j'avance dans mon PFE..
    il me reste encore la partie neurone.

    ps: à chaque foi je veux essayer sur matlab ce que je trouve mais c'est juste que je sais pas quoi modifier dans le code pour l'adapter à mon programme..
    mais bon grâce à votre aide je commence à comprendre et apprendre..

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/03/2015, 10h27
  2. Réponses: 5
    Dernier message: 12/03/2015, 16h32
  3. Chercher une image dans une Vidéo
    Par bartmanb dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 24/01/2009, 00h05
  4. TMediaPlayer et positionnement dans une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 6
    Dernier message: 07/03/2006, 15h14
  5. [D6] Algo de détection de zones dans une image
    Par DMO dans le forum Langage
    Réponses: 4
    Dernier message: 25/11/2005, 15h15

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