خلاصه
Lens Distort TOP اعوجاج لنز را با استفاده از مدل Brown-Conrady روی تصویر اعمال یا حذف میکند. از این نود میتوان برای اصلاح تصاویر دوربینهای فیزیکی، اعمال اعوجاج روی رندر برای استفاده در واقعیت افزوده (AR)، یا به عنوان یک افکت بصری استفاده کرد.
الگوریتم اعوجاج در Lens Distort TOP شامل سه بخش است: اعوجاج شعاعی (Radial)، اعوجاج مماسی (Tangential) و ماتریس دوربین.
اعوجاج شعاعی (Radial Distortion)
اعوجاج شعاعی پیکسلها را نسبت به فاصلهشان از مرکز تصویر (تعریفشده توسط Optical Center) جابهجا میکند. این اعوجاج توسط پارامترهای k1، k2 و k3 کنترل میشود؛ k1 بیشترین تأثیر را دارد و k3 کمترین.
مقادیر مثبت k باعث ایجاد افکت بشکهای یا فیشآی (Fisheye) میشوند، انگار تصویر روی سطح یک کره پیچیده شده.
مقادیر منفی k تصویر را به سمت داخل خم میکنند و افکت بالشتی (Pillow) یا پینکوشن (Pincushion) ایجاد میکنند.
معادلات اعوجاج شعاعی:
x_distorted = x * (1 + k1 * r² + k2 * r⁴ + k3 * r⁶)
y_distorted = y * (1 + k1 * r² + k2 * r⁴ + k3 * r⁶)
که در آن:
r = فاصله از مرکز
اعوجاج مماسی (Tangential Distortion)
اعوجاج مماسی پیکسلها را طوری جابهجا میکند که انگار سطح تصویر کمی نسبت به دوربین زاویه دارد. p1 و p2 این اعوجاج را کنترل میکنند:
p1 تصویر را به بالا/پایین کج میکند.
p2 تصویر را به چپ/راست متمایل میکند.
معادلات اعوجاج مماسی:
x_distorted = x + (2 * p1 * x * y + p2 * (r² + 2x²))
y_distorted = y + (p1 * (r² + 2y²) + 2 * p2 * x * y)
ماتریس دوربین (Camera Matrix)
این ماتریس توسط پارامترهای Optical Center و Focal Length مشخص میشود و قبل از اعمال اعوجاج، موقعیت پیکسلها را تبدیل میکند.
ماتریس دوربین به شکل زیر است:
fx 0 cx
0 fy cy
0 0 1
cx و cy ← مرکز اپتیک
fx و fy ← فاصلهٔ کانونی
ارزشهای اعوجاج لنز را میتوان با OpenCV Calibration یا ابزارهای اختصاصی دوربینها (مثل kinectazureTOP) به دست آورد.
نمونههای بصری
اعوجاج شعاعی فیشآی، هنگامی که k مثبت است
اعوجاج پینکوشن، وقتی k منفی است
اعوجاج مماسی با p1 منفی
اعوجاج مماسی با p2 منفی
برگه Layout
این بخش کنترل میکند که تصویر اعوجاجیافته یا اصلاحشده چگونه داخل فریم خروجی قرار گیرد.
این ویژگیها برای:
جلوگیری از خروج تصویر از فریم
حفظ رزولوشن ورودی
ثابت نگهداشتن ابعاد خروجی هنگام تغییر اعوجاج
مفید هستند.
مثال:
اگر Post Transform روی Optimal باشد و مقدار Optimal Alpha = 1،
کل تصویر ورودی در فریم خروجی حفظ میشود.اگر Layout روی Native Resolution باشد
رزولوشن خروجی طوری تنظیم میشود که هیچ بخشی از تصویر حذف نشود.با وصل کردن Info CHOP میتوان قسمت ROI را استخراج کرد و فقط بخش اصلی تصویر را برش داد.
نکته: این TOP از تکسچرهای 3D و آرایههای 2D پشتیبانی میکند.
پارامترها – صفحه LensDistort
Invert Distortion
اعمال معکوس اعوجاج لنز.
این گزینه معمولاً اعوجاج ایجادشده توسط یک Lens Distort دیگر (با همان تنظیمات و بدون Inverse) را تا حد زیادی خنثی میکند.
توجه:
الگوریتم یک معکوس دقیق ریاضی ندارد، بنابراین نتیجه ۱۰۰٪ مانند تصویر اصلی نیست.
k3 در حالت معکوس استفاده نمیشود.
هر چیزی که خارج از فریم اصلی بوده، بازیابی نمیشود.
K1، K2، K3
سه ثابت اعوجاج شعاعی.
k1 ← بیشترین تأثیر
k3 ← کمترین تأثیر
مثبت: فیشآی
منفی: پینکوشن
P1، P2
ثوابت اعوجاج مماسی.
p1 تصویر را عمودی میچرخاند
p2 تصویر را افقی میچرخاند
Optical Center
مرکز اعوجاج در تصویر.
میتواند پیکسلی باشد
یا نرمالشده (۰ تا ۱)
یا نسبت به مرکز تصویر تعریف شود.
Focal Lengths (Fx, Fy)
مقادیر فاصله کانونی ماتریس دوربین.
میتواند پیکسلی تعریف شود
یا نرمالشده برای سیستمهای مبتنی بر میلیمتر یا مقیاسهای فیزیکی.
پارامترها – صفحه Layout
Layout
چیدمان تصویر در خروجی را کنترل میکند.
Extend Mode
تعیین میکند خارج از محدوده تصویر چه مقداری نمایش داده شود.
Optimal Alpha
مشابه مقدار Alpha در تابع getOptimalNewCameraMatrix در OpenCV.
مقدار 0 ← فقط ROI
مقدار 1 ← کل تصویر ورودی حفظ میشود
Post Transform
اعمال یک تبدیل اضافه پس از اعمال اعوجاج.
New Center / New Focal Length
مرکز و فاصله کانونی جدید برای تنظیم جایگاه و مقیاس تصویر در خروجی.
Center Offset
جابجایی تصویر اعوجاجیافته روی فریم خروجی.
Scale
مقیاسدهی پس از اعمال اعوجاج.
Cropping
تنظیم نحوهٔ برش تصویر خروجی.
Custom Region
برش سفارشی با مختصات:
Left, Bottom, Right, Top
به صورت پیکسلی یا نرمالشده.
ورودیهای اپراتور
Lens Distort TOP یک ورودی تصویری میگیرد.
Info CHOP
اطلاعات ویژه این TOP
ROI، ماتریسها و جزئیات اعوجاج.
اطلاعات مشترک TOP
رزولوشن
نسبت تصویر
عمق
میزان حافظه GPU
اطلاعات مشترک اپراتورها
تعداد cook
زمان cook
هشدارها
خطاها
