Novice at image processing, need help with tracking circles in a video
3 次查看(过去 30 天)
显示 更早的评论
Hi, I have been trying to track the circles glued onto the limbs of the robot in the video. I tried using imfindcircles and played around with different options, but it doesn't seem to work in my case, since the circles being picked up by the program, are all over the place, I then moved to edge detection and centroid finding, and again I can't seem to have the desired tracking. I would ideally like to have information about the center of the 3 links that make the robot. This is the script, I am using to find the centroids.
clear all
clc
v=VideoReader('Translation.mp4');
a=read(v,107);
figure(1)
imagesc(a);
%[centers,radii]=imfindcircles(a,[10 20],'ObjectPolarity','bright','Sensitivity',0.95,'EdgeThreshold',0.068);
%viscircles(centers,radii)
A=rgb2gray(a);
figure(2)
imshow(A)
%mask=false(size(A,1),size(A,2));
%mask(300:700,700:1100)=true;
%bw=activecontour(A,mask,300,'edge');
%figure(3)
%imshow(bw)
A(1:140,:)=0;
A(950:end,:)=0;
A(:,1:325)=0;
A(:,1400:end)=0;
[~,threshold]=edge(A,'sobel');
fudgeFactor=0.7;
BWs=edge(A,'sobel',fudgeFactor*threshold);
figure(4)
imshow(BWs)
se90=strel('line',10,90);
se0=strel('line',10,0);
BWsdil=imdilate(BWs,[se90 se0]);
%BWnobord=imclearborder(BWsdil,8);
seD=strel('diamond',5);
BWfinal=imerode(BWsdil,seD);
BWfinal=imerode(BWfinal,seD);
s=regionprops(BWfinal,'centroid');
centroids=cat(1,s.Centroid);
figure(6)
imshow(BWfinal)
hold on
plot(centroids(:,1),centroids(:,2),'b*')
hold off
I am attaching the still image from one of the video frames and my results after doing findcircles and edge detection, I would appreciate any help that you guys can offer.
0 个评论
回答(1 个)
Yash Ubale
2018-11-14
Hello,
So your basic requirement is to track the circles in a continous video frame, right? I would suggest you to have a look at the examples and links mentioned below.
Using Kalman Filter for Object Tracking - https://www.mathworks.com/help/vision/examples/using-kalman-filter-for-object-tracking.html
You can track points which correspond to these circles using Kanade-Lucas-Tomasi (KLT) algorithm as mentioned below.
vision.PointTracker System object - https://www.mathworks.com/help/vision/ref/vision.pointtracker-system-object.html
The underlying idea is to set a reference image which in your case is the arm / corner which contains the circles. You can also refer to the example mentioned below in which a part of the webinar discusses the same.
Object Recognition and Tracking for Augmented Reality - https://www.mathworks.com/videos/object-recognition-and-tracking-for-augmented-reality-90546.html
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!