محمد سعید
محمد سعید
خواندن ۴ دقیقه·۲ سال پیش

کالیبره کردن دوربین استریو با متلب

برای داشتن عمق در تصویر میتوانیم از دوربین دوتایی استفاده کنیم! این یک آموزش برای استفاده از نرم افزار متلب برای به‌دست آوردن پارامترهای کالیبراسیون دوربین است.


با استفاده از Stereo Camera Calibrator میتوانیم یک شئ شامل پارامترهای دوربین ایجاد کنیم. از شئ میتوان استفاده کرد برای:

  • اصلاح(rectify) تصویر استریو با استفاده از تابع rectifyStereoImages
  • بازسازی یک صحنه سه بعدی با استفاده از تابع reconstructScene
  • محاسبه مکان سه بعدی مربوط جفت نقاط تصویر با استفاده از تابع triangulate

مجموع توابع با استفاده از Stereo Camera Calibrator app در متلب قابل استفاه خواهند بود.

روند کار به شکل زیر خواهد بود:

برای کالیبره کردن دوربین استریو روند را طی نمایید:

  1. تصاویر، دوربین و الگو کالیبراسیون را آماده کنید.
  2. جفت تصویر ها را اضاقه کنید.
  3. دوربین استریو را کالیبره کنید.
  4. دقت کالیبراسیون را ارزیابی کنید.
  5. پارامترها را برای بهبود دقت تنظیم کنید. (درصورت لزوم)
  6. از شی پارامترها را خروجی بگیریدو
  7. در برخی مواقع مقادیر پیش فرض مناسب هستند.


میتوانید از ظرح های تخته شطرنجی، شبکه دایره ای و الگوهای سفارشی استفاده کنید. برای جزئیات بیشتر: Calibration Patterns

برای به‌دست آوردن بهترین نتیجه نیاز به 10 الی 20 تصویر می‌باشد. و در حالت مینیمم به سه تصویر نیاز است.از فرمت های تصویر فشرد نشده مثل PNG استفاده نمایید.

نحوه استفاده از Stereo Camera Calibrator App

  • در نرم افزار متلب روند زیر را طی کنید:
  1. Apps
  2. Image Processing and Computer Vision
  3. Stereo Camera Calibrator

یا در کامنت پرامپت وارد کنید: stereoCameraCalibrator

از طریق گزینه Add Image تصاویر را اضافه و مدل دوربین را وارد کنید. پس از آن متلب به آنالیز تصاویر خواهد پرداخت برای مشاهده جزئیات این روند: Prepare Camera and Capture Images

برای مشخص کردن camera intrinsics میتوانید در تب Calibration و در قسمت Intrinsics گزینه Use Fixed Intrinsic و مقادیر Radial Distortion و را وارد نمایید. برای وارد کردن مقادیر از محیط workspace گزینه Load Intrinsics را انتخاب و برای مثال اگر ساختار wideBaselineStereo شامل intrinsics برای هر دو دوربین باشد این کد را در کامنت پرامپت وارد کنید:

ld = load(&quotwideBaselineStereo&quot); int1 = ld.intrinsics1 int2 = ld.intrinsics2

سپس گزینه Load Intrinsics را انتخاب کنید.

کالیبره کردن

روی گزینه Calibrate کلیک کنید. در حالت پیش فرض کمترین حالت پارامترها در نظر گرفته خواهد شد. پس از ارزیابی نتایج شما میتوانید برای بهبود دقت کالیبراسیون اقدام نمایید با تنظیم تنظیمات و کم و زیاد کردن تصاویر و کالیبره کردن مجدد.

وقتی دوربین اعواج شدیدی داره، دوربین ممکن است نتواند مقادیر ذاتی دوربین را محاسبه کند. اگر شما این مقادیر فنی دوربین خود را میدانید(pixel size - focal length - lens characteristics) میتوانید به صورت دستی حدس‌های اولیه برای ویژگی های ذاتی و اعواج شجاعی(radial distortion) انتخاب کنید. برای این منظور روند زیر را طی نمایید:

  1. Options
  2. Optimization Options
  • انتخاب کنید Specify initial intrinsics as a 3-by-3 matrix of the form [fx 0 0; s fy 0; cx cy 1] و سپس 3-by-3 matrix را به عنوان ماتریس ویژگی های اولیه انتخاب کنید. اگر حدس اولیه ای ندارید تابع این مقادیر را با حداقل مربعات خطی محاسبه میکند.
  • انتخاب کنید Specify initial radial distortion as 2- or 3-element vector و سپس بردار 2- or 3-element را برای تعیین اعواج شجاعی(radial distortion) اگر این مقدار را ندارید تابع از مقدار صفر برای تمام ضرایب استفاده میکند.

برای مشاهده جزئیات بیشتر در مورد پارامترهای کالیبراسیون بخوانید: What Is Camera Calibration?

ارزیابی نتایج کالیبراسیون

برای ارزیابی نتایج کالیبراسیون می‌توانید از سه روش زیر و برای ارزیابی بهتر می‌توانید از هر سه روش استفاده کنید:

این خطا فاصله برحسب پیکسل بین نقاط شناسایی شده و نقاط reprojecte شده است. به عنوان یک قاعده کلی، میانگین خطاهای reprojecte شده کمتر از یک پیکسل قابل قبول است.

برنامه این خطا را روی یک نمودار میله ای بر حسب پیکسل نمایش میدهد. این نمودار کمک میکند تا متوجه شویم کدام تصاویر به کالیبراسیون کمک میکند. ورودی نمودار میله‌ای را انتخاب کنید و تصویر را در پنجره Data Browser حذف کنید.

نمودار Reprojection Errors

این نمودار میانگین خطا به همراه میانگین کلی نمایش میدهد.

می‌توان میانگین خطای کلی را تنظیم کرد، برای انتخاب جفت تصویر با مقدار بیشتر از خطای مشخص شده، خط قرمز را جابجا کنید.

یک نمایش سه بعدی خارجی خواهیم داشت که میتوانید شبیه به نمودار های سه بعدی متلب آن را جابجا و از زوایای متفاوت ببینید. موقعیت های نسبی دوربین و الگو ها را مقایسه کنید و ببینید آیا با آنچه انتظار داشته یاد تطابق دارد. به عنوان مثال اگر الگویی در پشت دوربین نمایش داده شده ات نشان دهنده خطای کالیبراسیون است.

برای مشاهده اثر stereo rectification در تب Calibration، در قسمت View، Show Rectified را انتخاب کنید. اگر کالیبراسیون صحیح باشد، تصاویر بدون اعوجاج و تراز خواهند بود.


بهبود کالیبراسیون

برای بهبود کالیبراسیون می‌توانید تصاویر با خطای بالا را حذف کنید، تصاویر بیشتری اضافه کنید یا تنظیمات کالیبراتور را تغییر دهید.

جفت تصویر بیشتری اضافه کنید اگر:

  • کمتر از ده جفت تصویر را در نظر گرفتید.
  • الگوهای کالیبراسیون به اندازه کافی قاب تصویر را پوشش نمی‌دهند.
  • الگو ها نسبت به دوربین تنوع کافی در جهت و زاویه قرارگیری ندارند.

جفت تصویر را حذف کنید اگر:

  • خطای reprojection error بالایی دارد.
  • تار است.
  • نسبت به دوربین زاویه بیشتر از 45 درجه دارد.
  • نقاط الگوی کالیبراسیون به‌درستی شناسایی نشده است.

خروجی گرفتن از پارامتر ها

وقتی دقت کالیبراسیون مدنظر ایجاد شد، گزینه Export Camera Parameters را انتخاب کنید. شما میتوانید ذخیره و یا خروجی بگیرید از پارامترها به عنوان یک شی در workspace متلب و یا پارامترها را به عنوان یک اسکریپت تولید کنید.


منبع: mathworks.com

دوربین استریومتلبکالیبراسیونکالیبرهStereo Camera Calibrator
ارشد هو‌ش‌مصنوعی‌ می‌خونم، عاشق طبیعت و چیزایی که به بهش نزدیکم می‌کنه.
شاید از این پست‌ها خوشتان بیاید