تصویر و رنگ چیست؟ opencv چیست؟ numpy چیست؟

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 25, 2020

تصویر و رنگ چیست؟

عکس چیست؟

یک تصویر به سادگی از نور منعکس شده توسط یک شی که توسط یک دوربین ضبط شده تشکیل می شود. یک دوربین سیاه و سفید میزان شدت نور منعکس شده را ثبت می کند. یک دوربین رنگی، نور منعکس شده را در سه نقطه طیف قابل مشاهده - قرمز (650 نانومتر)، سبز (510 نانومتر) و آبی (475 نانومتر) منتشر و نشان می دهد.

رنگ چیست؟

رنگ یک موضوع جالب است. به عنوان یک بچه،به ما آموزش داده شد که رنگین کمان تمام رنگ ها در جهان است.که این کاملا اشتباه است! "رنگین کمان شامل تمام رنگی نیست که انسان بتواند درک کند!" در حقیقت، رنگ صورتی در رنگین کمان وجود ندارد! و به هیچ یک از طول موج های نور مربوط نیست. صورتی ترکیبی از آبی و قرمز است. رنگ، بنابراین مکانیسم چشم انسان است که با آن ترکیبی از نور ها در طول موج های مختلف را درک می کند.

تاریخچه مختصری از عکاسی رنگی

این ایده که شما می توانید سه عکس مختلف با استفاده از سه فیلتر رنگ اولیه (قرمز، سبز، آبی) و ترکیب آنها برای تشکیل یک تصویر رنگی به دست آورید، ابتدا توسط جیمز کلرک ماکسول در سال 1855 پیشنهاد شد. شش سال بعد، در سال 1861، عکاس انگلیسی توماس ساتون اولین عکس رنگی را با قرار دادن نظریه ماکسول در عمل، تولید کرد. او سه تصویر سیاه و سفید از یک نوار را (تصویر زیر را نگاه کنید) در نظر گرفت، با استفاده از سه فیلتر رنگ مختلف و سپس تصاویر را با استفاده از سه پروژکتور مجهز به فیلترهای مشابه یکسان قرار داد. مواد عکاسی موجود در آن زمان حساس به نور آبی بود، اما حساسیت کمی به نور سبز و تقریبا بی تاثیر نسبت به نور قرمز بود. اگر چه برای زمان خود انقلابی بود، اما همچنان روش عملی کاملی نبود.

در اوایل دهه 1900، حساسیت مواد عکاسی به طور قابل ملاحظه ای بهبود یافت و در دهه اول قرن گذشته چندین دوربین عکاسی ،برای عکاسی رنگی در دسترس قرار گرفت. شاید محبوب ترین در میان این دوربین ها، Autochrome بود که توسط برادران Lumière اختراع شد.

چگونه رنگ توسط یک دوربین دیجیتال ثبت می شود

در داخل دوربین دیجیتال شما یک سنسور حساس به نور مرئی (فوتون) است. سنسور دارای تعداد زیادی photosite (عکس/خط دید فوتون) یا پیکسل در یک شبکه مستطیلی است. این photosite یک بار الکتریکی را به طور مستقیم با مقدار نور (فوتون) دریافت می کند. بسته به صحنه ای که ضبط می کنیم، پیکسل های مختلف سنسور با مقادیر مختلف نور در معرض نور قرار می گیرند و الگوی شارژ الکتریکی را می بینیم. مقدار شارژ الکتریکی به یک شماره بین 0 و 255 تبدیل می شود. این مربوط به 8 بیت یا 256 مقدار است. این ماتریس مستطیل اعداد بین 0 و 255 یک تصویر سیاه و سفید است.

سنسورهای رنگ بسیار پیچیده هستند. هر پیکسل در سنسور تنها یک رنگ را ثبت می کند - قرمز، سبز یا آبی. الگوی نشان داده شده در بالا الگوی Bayer نامیده می شود. توجه کنید که پیکسل های سبز دو برابر بیشتر نسبت به پیکسل های آبی و قرمز وجود دارد، زیرا چشم انسان نسبت به نور قرمز یا آبی حساسیت کمتری دارد تا به نور سبز. دو کانال از دست رفته در هر پیکسل با درونگرفتن مقادیر پیکسل های همسایه محاسبه می شود. این فرایند به نام demosaicing نامیده می شود. داستان به اینجا ختم نمی شود. چشم ما سنسورهای خطی نیستند. اگر شما در یک منبع نور کم نور خیره می شوید و شدت نور را دو برابر می کنید، تغییر درک شده در شدت بسیار کمتر از 2X خواهد بود. برای تقلید از این رفتار، دوربین ها یک تغییر غیرخطی را به شدت تصویر ضبط شده اعمال می کنند. این تغییرات اغلب توسط یک تابع پارامتر یکپارچه به نام گاما تقریب می یابد. آیا می توانید به تصویر خطی که سنسور چشمی می یابد (یعنی تصویر بدون تصحیح گاما) دسترسی داشته باشید؟ بله، در بسیاری از دوربین های SLR شما می توانید تصویر را در فرمت RAW ضبط کنید که هیچ چیزی جز تصویر خطی با موزاییک باریک نیست. تصاویر RAW همچنین بیش از 8 بیت در هر کانال دارند.

تصاویر چگونه بر روی دیسک ذخیره می شوند

همانطور که در بخش قبلی ذکر شده است، هنگامی که تصویر از سنسور خوانده می شود، آن را به عنوان یک تصویر RGB تبدیل می کند. معمولا این آرایه از پیکسل های RGB قبل از ذخیره در دیسک به قالب JPG یا PNG فشرده می شود. اکثر فرمت های تصویری مانند JPG دارای دو بخش هستند: سرصفحه تصویر (header): این قسمت حاوی ابرداده تصویری مانند عرض و ارتفاع تصویر، تعداد کانال ها، مشخصات رنگ، تعداد بیت در هر پیکسل و غیره و غیره است. داده ها: این بخش حاوی مقادیر RGB فشرده است.

OpenCV چیست؟

OpenCV رایج ترین کتابخانه دید رایانه ای در دنیا با 14 میلیون بار دانلود است. ویژگی های زیر در این کتابخانه آن را به یک انتخاب عالی برای ساخت برنامه های تجاری Computer Vision تبدیل می کند. -بهینه سازی شده: OpenCV در C / C ++ با هدف ساخت برنامه های کاربردی در زمان واقعی نوشته شده است. این بسیار بهینه شده است هنگامی که با گزینه های مناسب کامپایل شده و می تواند هسته های متعدد را بر روی دستگاه خود استفاده کنید. همچنین با پشتیبانی از OpenCL با استفاده از منابع محاسباتی ناهمگن (مانند یک GPU) قادر به کار است. - دسترسی سطح باز (open source)تحت مجوز BSD: منبع باز و با مجوز تحت مجوز BSD مجاز است. این بدان معنی است که شما می توانید از آن برای ساخت برنامه های تجاری استفاده کنید و نیازی نیست کد منبع خود را باز کنید. با این حال، قسمت هایی از OpenCV وجود دارد (به عنوان مثال ماژول opencv_contrib) که ممکن است تحت مجوز BSD باشد و یا تحت آن نباشد. - پیوند زبانی با دیگر زبان های برنامه نویسی: در واقع این کتابخانه با زبان c/c++ نوشته شده اما قابلیت تعامل با دیگر زبان های برنامه نویسی همچون python و java را نیز دارد. - قابلیت پشتیبانی سیستم عامل های متعدد: پشتیبانی از سیستم عامل های Linux، Mac، Windows، iOS و Android.

چگونه تصاویر موجود در حافظه در OpenCV نمایش داده می شود

هنگامی که یک تصویر را با استفاده از OpenCV می خوانیم، ابتدا تصویر را فشرده و تمامی تصاویر را در فرمت استاندارد ذخیره می کند. که در واقع این اعمال توسط ماژولی به نام numpy در پایتون انجام می پذیرد که در بخش بعدی بررسی خواهد شد.

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
captcha
0دیدگاه