Shape Detection এবং Object Tracking

এজ ডিটেকশন এবং কনট্যুর ফাইন্ডিং (Edge Detection and Contour Finding) - জাভা দিয়ে ডিজিটাল ইমেজ প্রসেসিং (Digital Image Processing using Java) - Computer Science

346

শেপ ডিটেকশন (Shape Detection) এবং অবজেক্ট ট্র্যাকিং (Object Tracking)

শেপ ডিটেকশন এবং অবজেক্ট ট্র্যাকিং কম্পিউটার ভিশন এবং ইমেজ প্রসেসিংয়ের অত্যন্ত গুরুত্বপূর্ণ দুটি কার্যক্রম। শেপ ডিটেকশন বিশেষভাবে ছবির মধ্যে নির্দিষ্ট আকৃতির (যেমন বৃত্ত, আয়তক্ষেত্র, ত্রিভুজ) উপস্থিতি চিহ্নিত করার জন্য ব্যবহৃত হয়, এবং অবজেক্ট ট্র্যাকিং একটি নির্দিষ্ট অবজেক্ট বা সেগমেন্টের চলাফেরা ট্র্যাক করার প্রক্রিয়া।

এই দুটি প্রযুক্তি অনেক ক্ষেত্রে ব্যবহৃত হয়, যেমন নিরাপত্তা ক্যামেরা সিস্টেম, অটোনোমাস গাড়ি, রোবটিক্স, এবং ভিডিও অ্যানালাইসিস

১. শেপ ডিটেকশন (Shape Detection)

শেপ ডিটেকশন হল ছবি বা ভিডিও ফ্রেমে বিভিন্ন শেপ বা আকৃতি শনাক্ত করার প্রক্রিয়া। এটি সাধারণত এজ ডিটেকশন এবং কনট্যুর ডিটেকশন প্রযুক্তির উপর ভিত্তি করে কাজ করে। শেপ ডিটেকশন ব্যবহৃত হয় একটি নির্দিষ্ট শেপ যেমন বৃত্ত, আয়তক্ষেত্র, ত্রিভুজ চিহ্নিত করতে।

উদাহরণ: শেপ ডিটেকশন (OpenCV)

OpenCV লাইব্রেরি ব্যবহার করে শেপ ডিটেকশন করা সম্ভব। এখানে একটি উদাহরণ দেওয়া হলো যেখানে কনট্যুর ডিটেকশন ব্যবহার করে বৃত্ত এবং আয়তক্ষেত্র শনাক্ত করা হচ্ছে।

import cv2
import numpy as np

# ইমেজ লোড করা
image = cv2.imread('path/to/your/image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# ব্লার প্রয়োগ করা যাতে এজ ডিটেকশন সহজ হয়
blurred = cv2.GaussianBlur(gray, (5, 5), 0)

# ক্যানি এজ ডিটেকশন ব্যবহার করা
edges = cv2.Canny(blurred, 50, 150)

# কনট্যুর শনাক্ত করা
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# কনট্যুর আঁকা
for contour in contours:
    # কনট্যুরের চারপাশে একটি বক্স আঁকুন
    x, y, w, h = cv2.boundingRect(contour)
    aspect_ratio = float(w) / h
    if aspect_ratio > 1.2:  # বর্গ বা আয়তক্ষেত্র
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
    elif aspect_ratio < 1.2 and aspect_ratio > 0.8:  # বৃত্ত
        cv2.drawContours(image, [contour], 0, (0, 0, 255), 3)

# চিত্র প্রদর্শন
cv2.imshow('Shape Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

এই কোডে ক্যানি এজ ডিটেকশন এবং বাউন্ডিং রেকট্যাঙ্গলস ব্যবহার করা হয়েছে শেপ বা আকৃতি শনাক্ত করতে। এখানে বৃত্ত এবং আয়তক্ষেত্র শনাক্ত করার জন্য অ্যাসপেক্ট রেশিও চেক করা হচ্ছে।


২. অবজেক্ট ট্র্যাকিং (Object Tracking)

অবজেক্ট ট্র্যাকিং হল সেই প্রক্রিয়া যেখানে একটি নির্দিষ্ট অবজেক্ট বা ব্যক্তির চলাফেরা বা অবস্থান শনাক্ত করা হয়। এটি সাধারণত ভিডিও ফ্রেমে একটি অবজেক্টের অবস্থান ট্র্যাক করে এবং সময়ের সাথে সাথে সেই অবজেক্টের স্থান পরিবর্তন দেখে।

উদাহরণ: অবজেক্ট ট্র্যাকিং (OpenCV)

OpenCV তে KLT (Kanade-Lucas-Tomasi) ট্র্যাকিং এবং MOSSE ট্র্যাকারসহ বিভিন্ন ট্র্যাকিং প্রযুক্তি ব্যবহার করা যায়।

import cv2

# ভিডিও ক্যাপচার শুরু করা
cap = cv2.VideoCapture('path/to/your/video.mp4')

# প্রথম ফ্রেম পড়া
ret, frame = cap.read()

# ট্র্যাকার তৈরি করা
tracker = cv2.TrackerMOSSE_create()

# প্রথম অবজেক্টের ROI (Region of Interest) নির্বাচন করা
bbox = cv2.selectROI('Select Object', frame, fromCenter=False, showCrosshair=True)
tracker.init(frame, bbox)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # অবজেক্ট ট্র্যাক করা
    ret, bbox = tracker.update(frame)
    
    # ট্র্যাক করা ফলাফল দেখানো
    if ret:
        x, y, w, h = [int(v) for v in bbox]
        cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
    else:
        cv2.putText(frame, "Tracking failure detected", (100, 80), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2)
    
    # ফলস্বরূপ ফ্রেম দেখানো
    cv2.imshow('Object Tracking', frame)
    
    # 'q' চেপে বের হওয়া
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

এই কোডে MOSSE ট্র্যাকার ব্যবহার করা হয়েছে যা একটি অবজেক্টের চলাচল ট্র্যাক করে। এখানে ভিডিও থেকে প্রথম ফ্রেমে অবজেক্টের ROI (Region of Interest) নির্বাচন করা হয় এবং তারপর ওই অবজেক্টের স্থান সময়ের সাথে ট্র্যাক করা হয়।


৩. শেপ ডিটেকশন এবং অবজেক্ট ট্র্যাকিং এর সংমিশ্রণ

শেপ ডিটেকশন এবং অবজেক্ট ট্র্যাকিং একসাথে ব্যবহৃত হতে পারে, যেমন একটি নির্দিষ্ট শেপ বা অবজেক্টের চলাচল ট্র্যাক করা, এবং সেই সাথে ঐ শেপের অবস্থান শনাক্ত করা। এর জন্য, আপনি শেপ ডিটেকশন ব্যবহার করে প্রথমে অবজেক্টের সীমানা চিহ্নিত করবেন এবং তারপর সেই অবজেক্টের ট্র্যাকিং শুরু করবেন।


সারসংক্ষেপ

  • শেপ ডিটেকশন চিত্রে নির্দিষ্ট শেপ বা আকৃতি শনাক্ত করার প্রক্রিয়া, যা কনট্যুর ডিটেকশন এবং এজ ডিটেকশন পদ্ধতি ব্যবহার করে করা হয়।
  • অবজেক্ট ট্র্যাকিং হল একটি অবজেক্টের চলাফেরা শনাক্ত করার প্রক্রিয়া যা ভিডিও ফ্রেমে অবজেক্টের অবস্থান পরিবর্তন ট্র্যাক করে।
  • OpenCV লাইব্রেরি ব্যবহার করে শেপ ডিটেকশন এবং অবজেক্ট ট্র্যাকিং সহজে করা সম্ভব। OpenCV বিভিন্ন ট্র্যাকিং অ্যালগরিদম যেমন MOSSE, KLT, MIL, CSRT সরবরাহ করে।
Content added By
Promotion

Are you sure to start over?

Loading...