مدرس و مدیر گروه سابق دانشکده فنی و حرفه ای انقلاب اسلامی، طراح و مسئول برق در چندین شرکت تولیدی |
آموزش پردازش تصوير(۱)
IMAGE PROCESSING
خیلی حرف زدم!! تو این سلسه مقالات آموزشیم قصد دارم پردازش تصویر رو در قالب یک پروژه آموزش بدم. پروژه مربوطه یک ربات مسیریاب هستش که مسیر خودش رو توسط پردازش تصویر تشخیص میده!! البته این ربات بجای سنسورهای رنگ از یک دوربین کوچیک فیلم برداری با رابط USB (مثل وبکم) استفاده می کنه و مغز اصلی رباط بجای میکروکنترولر کامپیوتر هستش و توسط درگاه سریال کامپیوتر فرمان میگیره. اگر توجه کرده باشید ربات تولید شده از این روش اصلا نمیتونه تو مسابقات شرکت کنه و فقط جنبه آموزشی برای مقالات ما رو داره که البته از همین ایده میتونید در رباتهای دیگه بجز مسیریاب که بعدا اشاره می کنم استفاده کنید. پیشنهاد کلی اینه که شما از بدنه یک ربات مسیریاب که از قبل آماده کردید جهت آزمایش این پروژه استفاده کنید. در طی این دوره ما احتیاج داریم با تعدادی از جعبه ابزارهای مطلب از جمله:
کار کنیم که در مقالات آینده به ترتیب با دستورات موجود در این پکیجها آشنا خواهیم شد و پروژه خودمون رو کامل می کنیم. در پست بعدی (۳یا ۴ روز دیگه) کار با جعبه ابزار Image processing که شرین ترین بخش پروژه هست رو شروع می کنم.
خیلی حرف زدم!! تو این سلسه مقالات آموزشیم قصد دارم پردازش تصویر رو در قالب یک پروژه آموزش بدم. پروژه مربوطه یک ربات مسیریاب هستش که مسیر خودش رو توسط پردازش تصویر تشخیص میده!! البته این ربات بجای سنسورهای رنگ از یک دوربین کوچیک فیلم برداری با رابط USB (مثل وبکم) استفاده می کنه و مغز اصلی رباط بجای میکروکنترولر کامپیوتر هستش و توسط درگاه سریال کامپیوتر فرمان میگیره. اگر توجه کرده باشید ربات تولید شده از این روش اصلا نمیتونه تو مسابقات شرکت کنه و فقط جنبه آموزشی برای مقالات ما رو داره که البته از همین ایده میتونید در رباتهای دیگه بجز مسیریاب که بعدا اشاره می کنم استفاده کنید. پیشنهاد کلی اینه که شما از بدنه یک ربات مسیریاب که از قبل آماده کردید جهت آزمایش این پروژه استفاده کنید. در طی این دوره ما احتیاج داریم با تعدادی از جعبه ابزارهای مطلب از جمله:
خوب دوستان ما پروژه خودمون رو (ربات مسیریاب توسط پردازش تصویر) به چند بخش تقسیم می کنیم و هر بخش رو بصورت مجزا آموزش میدم. این ربات توسط یک دوربین فیلم برداری ساده مثل وبکم کامپیوتر و یا حتی سادتر٬ بطور مکرر از مسیر تصاویری تهیه تولید می کنه (پایان مرحله اول) در مرحله بعدی این تصاویر پردازش و مسیر حرکت ربات از اطلاعات بدست آمده از آنها استخراج می شود (پایان مرحله دوم) و در مرحله آخر کاری که میکروکنترلر در رباتهای عادی انجام می دهد ما با استفاده از پورت های کامپیوتر انجام داده و فرامین حرکتی را برای سیستم کنترل موتورهای ربات ارسال می کنیم (چپ گرد٬ راست گرد). اما بیاد مراحل رو از وسط شروع کنیم! یعنی مرحله پردازش تصویر. فکر می کنیم یه تصویر توسط دوربین در محیط مطلب در اختیار ما قرار داده شده و ما پردازشات لازم جهت استخراج مسیر حرکت رو روی اون انجام میدیم٬ تا بعدا برسیم به مراحل بعدی... مقدمه دیگه بسه بریم سر اصل مطلب:
اگر همونطور که گفتم به یه کتاب مطلب نگاهی انداخته باشید حتما از همون ابتدای امر متوجه شدید که در این نرم افزار اکثر عملیات ها برپایه ماتریس ها انجام میشه (ضرب٬ تقسیم٬ جمع٬...). مطلب یجورایی شبیه یه زبون برنامه نویسی هستش و ما در اون از متغیرها٬ عملگرها و توابع و... بسبک زبانهای برنامه نویسی جهت حل مثائل خودمون استفاده می کنیم. اصلا بیاید یه مثال عملی بزنیم:
>> I = 1:10
I =
1 2 3 4 5 6 7 8 9 10
اجرا کردن دستور I = 1:10 باعث ایجاد یک متغیر به نام I و به شکل یک ماتریس یک بعدی با محتوای ۱ تا ۱۰ می شود (این اولبن و آخریم مثال سطح پایینم بود! توقع دارم اینارو خودتون با خوندن یک کتاب یاد بگیرید) حالا بریم سراغ یک مثال تخصصی:
RGB = imread('peppers.png'); ٪متغیر = imread('مسیر ونام فایل تصویر');
imshow(RGB);
»افزایش کنتراست تصویر
خوب حالا بیاید یکم کارای پردازشی روی تصاویر انجام بدیم. تصویر pout.tif رو در یک متغیر لود کنید و اون رو نمایش برای خودتون بدید (دقیقا مثل کد زیر). می بینید که این عکس کنتراست پایینی داره !
I = imread('pout.tif');
imshow(I);
برای مشاهده نحوه توزیع شدت رنگ در یک تصویر می توانید با صدا زدن دستور 'imhist' نمودار هیستوگرام آن را رسم کنید (شکل ۱) .
figure, imhist(I);
می بینید که در شکل ۱ رنج شدت نازک می باشد و تمام پتانسیل ۰ تا ۲۵۵ را پوشش نمی دهد بدین معنی که بخشی از مقادیر بزرگ و بخشی از مقادیر کوچک را که باعث ایجاد کنتراست بالا می شوند را در خود ندارد.
در این جعبه ابزار روشهای گوناگونی جهت افزایش کنتراست یک تصویر در نظر گرفته شده است که یکی از آنها استفاده از تابع histeq جهت پخش کردن مقادیر شدت در کل رنج پتانسیلی تصویر می باشد. با اجرای این دستورات به ترتیب زیر می بینید که نمودار هیستوگرام از نمونه شکل۱ به شکل۲ و تصویر از شکل۳ به شکل۴ تغییر می کند...
I2 = histeq(I);
figure, imshow(I2);
بهمین روش می توانید تصاویر دیگری را جهت تمرین وارد این محیط کرده و میزان کنتراست آنها را افزایش دهید.
مقاله این سری خیلی طولانی شد٬ اما می بینید که پردازش تصویر به خصوص در مطلب بحث بسیار سبک و شیرینی هستش! در جلسات آینده وارد مباحث پیشرفته تری خواهیم شد...
منبع : http://eleboys.blogfa.com/
![]() |
POWERED BY BLOGFA.COM |
![]() |