Computer Vision Toolbox ব্যবহার করে Object Detection এবং Tracking in MATLAB
MATLAB এর Computer Vision Toolbox একটি শক্তিশালী টুল যা সিস্টেমের মধ্যে অবজেক্ট ডিটেকশন, ট্র্যাকিং, ইমেজ এবং ভিডিও প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এটি Object Detection, Object Tracking, Image Segmentation, Feature Matching এবং অন্যান্য প্রযুক্তি সাপোর্ট করে। এই টুলবক্সটি একটি সহজ ইন্টারফেসে কম্পিউটার ভিশন অ্যালগরিদমগুলির দ্রুত উন্নয়ন, সিমুলেশন এবং বাস্তবায়ন করতে সহায়ক।
Object Detection এবং Tracking হলো কম্পিউটার ভিশন অ্যাপ্লিকেশনগুলির গুরুত্বপূর্ণ অংশ, যেখানে একটি অবজেক্ট বা বস্তু সনাক্ত করা এবং তার গতিবিধি ট্র্যাক করা হয়। এখানে আমরা MATLAB-এর Computer Vision Toolbox ব্যবহার করে Object Detection এবং Tracking এর কিছু উদাহরণ দেখবো।
1. Object Detection (অবজেক্ট ডিটেকশন)
Object Detection হল একটি প্রক্রিয়া যার মাধ্যমে একটি ছবির মধ্যে বিভিন্ন ধরনের অবজেক্ট সনাক্ত করা হয়, যেমন মানুষের মুখ, গাড়ি, পশু ইত্যাদি। MATLAB এ object detection করার জন্য pre-trained models, যেমন YOLO (You Only Look Once), Faster R-CNN, এবং SSD (Single Shot Multibox Detector) ফাংশনগুলি ব্যবহার করা যায়।
Example: Using Pre-trained YOLO Model for Object Detection
% Load pre-trained YOLO object detector
detector = yolov2ObjectDetector('yolov2-coco');
% Read input image
I = imread('image.jpg');
% Run object detection
[bboxes, scores, labels] = detect(detector, I);
% Annotate detections on the image
I_annotated = insertObjectAnnotation(I, 'rectangle', bboxes, labels);
% Display the result
imshow(I_annotated);
title('Detected Objects');Explanation:
yolov2ObjectDetector: এই ফাংশনটি YOLO v2 মডেল ব্যবহার করে সিগন্যাল সনাক্ত করার জন্য ব্যবহৃত হয়।detect: ইমেজে অবজেক্ট ডিটেকশন চালায় এবং bounding boxes, scores এবং labels ফেরত দেয়।insertObjectAnnotation: ডিটেক্টেড অবজেক্টগুলির উপর আনা বক্স এবং লেবেলগুলি আঞ্জোট করার জন্য ব্যবহৃত হয়।
এই কোডটি একটি ইমেজে YOLO মডেল ব্যবহার করে অবজেক্ট ডিটেকশন করে এবং সেগুলি আঞ্জোট করে।
2. Object Tracking (অবজেক্ট ট্র্যাকিং)
Object Tracking হল একটি প্রক্রিয়া যার মাধ্যমে সনাক্তকৃত অবজেক্টগুলি ভিডিও বা সিকোয়েন্সে সময়ের সাথে সাথে ট্র্যাক করা হয়। MATLAB এ object tracking এর জন্য Kalman Filter, Mean-Shift, CamShift, এবং MOSSE Tracker সহ বিভিন্ন ট্র্যাকিং অ্যালগরিদম রয়েছে।
Example: Using a Pre-trained MOSSE Tracker for Object Tracking
% Read video file
videoFile = 'video.mp4';
videoReader = VideoReader(videoFile);
videoPlayer = vision.VideoPlayer;
% Initialize the MOSSE tracker
tracker = vision.PointTracker('MaxBidirectionalError', 2);
% Read the first frame
frame = readFrame(videoReader);
% Manually select the object to track (bounding box)
bbox = [100, 100, 150, 150]; % Example bounding box [x, y, width, height]
frameGray = rgb2gray(frame);
initialize(tracker, bbox, frameGray);
while hasFrame(videoReader)
frame = readFrame(videoReader);
frameGray = rgb2gray(frame);
% Track the object
[points, valid] = tracker(frameGray);
% Annotate tracked points on the frame
outputFrame = insertMarker(frame, points(valid, :), '+', 'Color', 'red');
% Display the frame with tracked points
step(videoPlayer, outputFrame);
end
release(videoPlayer);Explanation:
vision.PointTracker: MOSSE (Minimum Output Sum of Squared Error) ট্র্যাকার ব্যবহার করা হচ্ছে অবজেক্ট ট্র্যাকিংয়ের জন্য।initialize: ট্র্যাকারটি প্রথম ফ্রেমে সিলেক্ট করা বাউন্ডিং বক্সের সাথে ইনিশিয়ালাইজ করা হয়।insertMarker: ট্র্যাক করা পয়েন্টগুলোকে ফ্রেমে মার্কার হিসেবে প্রদর্শন করা হয়।step: ভিডিও প্লেয়ারে ট্র্যাক করা ফ্রেম প্রদর্শন করে।
এই কোডটি একটি ভিডিওতে সিলেক্ট করা অবজেক্ট ট্র্যাক করবে এবং তা প্রতি ফ্রেমে আপডেট করবে।
3. Tracking Multiple Objects (একাধিক অবজেক্ট ট্র্যাকিং)
একাধিক অবজেক্ট ট্র্যাক করতে, আপনি বিভিন্ন ট্র্যাকারের সাথে একই সময়ে একাধিক অবজেক্ট ট্র্যাক করতে পারেন।
Example: Multi-Object Tracking using Kalman Filter
% Read video file
videoFile = 'video.mp4';
videoReader = VideoReader(videoFile);
videoPlayer = vision.VideoPlayer;
% Create multiple Kalman filters for each object
tracker1 = vision.KalmanFilter;
tracker2 = vision.KalmanFilter;
% Initialize trackers with initial bounding boxes
bbox1 = [100, 100, 50, 50]; % Example for first object
bbox2 = [200, 150, 50, 50]; % Example for second object
% Tracking loop
while hasFrame(videoReader)
frame = readFrame(videoReader);
% Update tracking for each object
bbox1 = step(tracker1, frame);
bbox2 = step(tracker2, frame);
% Annotate tracking results on the frame
frame = insertShape(frame, 'Rectangle', bbox1, 'Color', 'red');
frame = insertShape(frame, 'Rectangle', bbox2, 'Color', 'blue');
% Display the frame with the tracked objects
step(videoPlayer, frame);
end
release(videoPlayer);Explanation:
vision.KalmanFilter: এটি একাধিক অবজেক্ট ট্র্যাক করতে ব্যবহৃত একটি Kalman filter ইনস্ট্যান্স।- Tracking for multiple objects: দুটি আলাদা ট্র্যাকিং অবজেক্ট (tracker1 এবং tracker2) তৈরি করা হয় এবং তাদের জন্য বিভিন্ন বাউন্ডিং বক্স ব্যবহৃত হয়।
- Insert Shape: ট্র্যাকিংয়ের ফলস্বরূপ বাউন্ডিং বক্সের উপর সঠিক অবজেক্ট লেবেল অ্যাঞ্জোট করা হয়।
এই কোডটি দুটি অবজেক্টের গতিবিধি ট্র্যাক করবে এবং তাদের উপর আঞ্জোট করা বক্স দেখাবে।
4. Background Subtraction for Object Detection
এটি একটি সাধারণ পদ্ধতি যা চলমান অবজেক্ট সনাক্ত করতে ব্যবহৃত হয়, যেখানে সিস্টেম স্থির পটভূমি থেকে চলন্ত অবজেক্টগুলো আলাদা করে।
Example: Background Subtraction for Object Detection
videoFile = 'video.mp4';
videoReader = VideoReader(videoFile);
videoPlayer = vision.VideoPlayer;
% Create a background subtraction object
foregroundDetector = vision.ForegroundDetector('NumGaussians', 3, 'NumTrainingFrames', 50);
while hasFrame(videoReader)
frame = readFrame(videoReader);
% Apply background subtraction
foregroundMask = step(foregroundDetector, frame);
% Create a bounding box around the detected objects
stats = regionprops(foregroundMask, 'BoundingBox', 'Area');
% Filter out small objects
filteredStats = stats([stats.Area] > 100);
% Annotate detected objects
frame = insertShape(frame, 'Rectangle', {filteredStats.BoundingBox}, 'Color', 'red');
% Display the result
step(videoPlayer, frame);
end
release(videoPlayer);Explanation:
vision.ForegroundDetector: এই ফাংশনটি বেকগ্রাউন্ড সাবট্রাকশন অ্যালগরিদম ব্যবহার করে চলন্ত অবজেক্ট সনাক্ত করে।regionprops: সনাক্তকৃত অবজেক্টের বাউন্ডিং বক্স এবং ক্ষেত্রফল বিশ্লেষণ করে।insertShape: সনাক্তকৃত অবজেক্টগুলির উপর আঞ্জোট বক্স প্রদর্শন করে।
Conclusion
MATLAB এর Computer Vision Toolbox ব্যবহার করে Object Detection এবং Object Tracking খুব সহজে এবং কার্যকরভাবে করা যায়। এখানে কিছু গুরুত্বপূর্ণ ফাংশন যেমন YOLO, Kalman Filter, MOSSE Tracker, Background Subtraction, এবং অন্যান্য ট্র্যাকিং অ্যালগরিদম ব্যবহার করে সিস্টেম তৈরি করা হয়েছে। এই টুলবক্সটির মাধ্যমে আপনি ভিডিও এবং ইমেজ ডেটাতে অবজেক্ট সনাক্তকরণ এবং ট্র্যাকিং খুবই দ্রুত এবং সঠিকভাবে করতে পারবেন।
Read more