问:在MATLAB中对两个图像中的指定点进行比较

时间:2015-07-08 15:22:55

标签: matlab image-processing video-processing matlab-cvst

我必须编写一个应用程序,它正在跟踪视频中的所选对象。 接下来我必须打开第二个视频,选择我想要跟踪的元素。 我想比较这两个对象,如果事实证明这些对象是相同的,我的程序会跟踪这个对象,如果不是,程序会显示正确的消息。

有一个问题; 我如何比较这两个对象?

这是程序代码,我必须添加的是'如果'声明,其中的对象被识别。

我从本教程中获取的整个方法: http://www.mathworks.com/help/vision/examples/face-detection-and-tracking-using-the-klt-algorithm.html

clear;
PrzestRobocza1 = vision.VideoFileReader('2.avi');                                 
Odtwarzacz1 = vision.VideoPlayer('Position', [125, 125, 700, 540]);                 
PierwszaKlatka1= step(PrzestRobocza1);                                                 

figure;
imshow(PierwszaKlatka1);
title('Zaznacz obszar na ktorym znajduje sie sledzony obiekt');
ObszarObiektu1= round(getPosition(imrect)); 
imwrite(ObszarObiektu1, 'abcdcd.jpg');
PunktyChar1 = detectMinEigenFeatures(rgb2gray(PierwszaKlatka1), 'ROI',           ObszarObiektu1);   
PokazPunkty1 = insertMarker(PierwszaKlatka1, PunktyChar1.Location, 'o',   'Color', 'green');


figure; 
imshow(PokazPunkty1);
title('Punkty charakterystyczne na obszarze');

Sledzenie1 = vision.PointTracker('MaxBidirectionalError', 1);
initialize(Sledzenie1, PunktyChar1.Location, PierwszaKlatka1);

while ~isDone(PrzestRobocza1)
      Ramka1 = step(PrzestRobocza1);
      [PunktyChar1, validity] = step(Sledzenie1, Ramka1);
      out = insertMarker(Ramka1, PunktyChar1(validity, :), 'o');
      step(Odtwarzacz1, out);
end

release(Odtwarzacz1);
release(PrzestRobocza1);

PrzestRobocza2 = vision.VideoFileReader('3.avi');                                
Odtwarzacz2 = vision.VideoPlayer('Position', [125, 125, 700, 540]);             
PierwszaKlatka2 = step(PrzestRobocza2);
figure;
imshow(PierwszaKlatka2);
title('Zaznacz obszar na ktorym znajduje sie sledzony obiekt');
ObszarObiektu2= round(getPosition(imrect)); 
imwrite(ObszarObiektu2, 'zdj1.jpg');
%pobieranie współrzędnych śledzonego obiektu
PunktyChar2 = detectMinEigenFeatures(rgb2gray(PierwszaKlatka2), 'ROI',     ObszarObiektu2);  
PokazPunkty2 = insertMarker(PierwszaKlatka2, PunktyChar2.Location, '+', 'Color', 'red');
figure; 
imshow(PokazPunkty2);
title('Punkty charakterystyczne na obszarze');



if    %here is the problematic statement

    Sledzenie2 = vision.PointTracker('MaxBidirectionalError', 1);
        initialize(Sledzenie2, PunktyChar2.Location, PierwszaKlatka1); 

        while ~isDone(PrzestRobocza2)
            Ramka1 = step(PrzestRobocza2);
            [PunktyChar2, validity] = step(Sledzenie2, Ramka2);
            out = insertMarker(Ramka2, PunktyChar2(validity, :), 'o');
            step(Odtwarzacz2, out);
    end

        release(Odtwarzacz2);
        release(PrzestRobocza2);
   else                            
        disp('brak dopasowania!');
    end

0 个答案:

没有答案