Je suis en train de faire un projet sur "Car tracking". J'essaie de développer un code qui fonctionnera en temps réel et sera capable de détecter la voiture qui approche d'une jonction. Ι soustraire deux images consécutives puis thresholding.Implement
fermeture morphologique puis je trouve la voiture en mouvement. Mon problème est que je ne peux pas détecter les voitures sombres. J'apprécierais vraiment si vous me donnez quelques directives pour finir avec succès ce projet.Détection et suivi d'une voiture en mouvement
%Code for tracking
vid = videoinput('winvideo', '1', 'RGB24_640x360');
set(vid,'ReturnedColorSpace','rgb');
set(vid,'TriggerRepeat',Inf);
src = getselectedsource(vid);
src.FocusMode = 'manual';
%pause(0.02);
[i rect]=imcrop(getsnapshot(vid));
set(vid,'ROIPosition',rect);
h = fspecial('gaussian',[3,3],5);
%structial element
se90 = strel('line',5, 90);
se0 = strel('line', 5, 0);
ss=strel('diamond',10);
var=3;
start(vid);
for i=1:500
tic
im1= getsnapshot(vid);
imrgb=im1;
im1=im1(:,:,1);
if var==3
im2= getsnapshot(vid);
im2=im2(:,:,1);
im2=imfilter(im2,h);
var=0;
end
%-------------------------------------------------
if 1
m1=imfilter(im1,h);
% c2=im2-im1
%cbw=im2bw(c2);
%allagi stin evais8isia tou threshold
cbw=imsub(im1,im2,14,h);
end
cbw1 = imerode(cbw, [se90,se0]); %sistoli
% cbw1 = imerode(cbw1, [se901,se01]);
%diastoli
cbw1= imdilate(cbw1,ss);
%fill holes
cbw2= imfill(cbw1, 'holes');
cbw2= imfill(cbw2, 'holes');
if 1
cbw3 = imerode(cbw2, [se90 se0]); %sistoli
cbw3 = imerode(cbw3, [se90 se0]); %sistoli
cbw3 = imerode(cbw3, [se90 se0]); %sistoli
cbw3 = imerode(cbw3, [se90 se0]);
cbw3= imfill(cbw3, 'holes'); %fill hole
end
if 1
%Boundary box
s = regionprops(cbw3, 'BoundingBox');
if ~isempty(s)
cd = s.BoundingBox;
end
figure(1),
%imshow(cbw3);
imshow(imrgb)
hold on;
if ~isempty(s)
rectangle('Position',[cd(:,1) cd(:,2) cd(:,3) cd(:,4)],'LineWidth',2,'EdgeColor','b');
end
hold('off');
end
%empty ram
flushdata(vid)
var=var+1;
toc
end
stop(vid)
Un seuillage simple et certaines opérations morphologiques ne sont généralement pas suffisantes pour obtenir de bons résultats dans toutes les conditions, sauf les meilleures. Vous avez généralement besoin d'outils de vision par ordinateur plus avancés pour obtenir des résultats plus fiables. Je suggère de faire quelques recherches sur le sujet «segmentation» et de choisir la méthode qui conviendra le mieux à votre problème. – vsz
A d'accord avec vsz. Mais si vous voulez appliquer cela à la segmentation de la voiture noire, qu'en est-il de la négation de l'image et de la même approche? – petrichor
@petrichor Je suppose que le problème est dû au fait que les voitures sombres sont de couleur similaire à la route. Négocier ne résoudrait pas le problème dans ce cas. Sinon, je suis d'accord avec vsz aussi. –