
براي تبادل لينک ابتدا لينک مارو بانام:E.l.e.B.o.y.s در
وبلاگ ياسايتتان قراردهيد ،
سپس از طریق فرم نظرات به ما خبر دهيد تاما هم اين کار رو براي شما بکنيم.
فروردین 1387
آذر 1386
آبان 1386
آبان 1385
شهریور 1385
مرداد 1385
اردیبهشت 1385
فروردین 1385
اسفند 1384
بهمن 1384
دی 1384
آذر 1384
دوستان خوبم سلام
....
همونطور که قول داده بودم قراره بخش پردازش تصویر پروژه با مطلب رو از این مقاله شروع کنیم. خوب دوستان ما پروژه خودمون رو (ربات مسیریاب توسط پردازش تصویر) به چند بخش تقسیم می کنیم و هر بخش رو بصورت مجزا آموزش میدم. این ربات توسط یک دوربین فیلم برداری ساده مثل وبکم کامپیوتر و یا حتی سادتر٬ بطور مکرر از مسیر تصاویری تهیه تولید می کنه (پایان مرحله اول) در مرحله بعدی این تصاویر پردازش و مسیر حرکت ربات از اطلاعات بدست آمده از آنها استخراج می شود (پایان مرحله دوم) و در مرحله آخر کاری که میکروکنترلر در رباتهای عادی انجام می دهد ما با استفاده از پورت های کامپیوتر انجام داده و فرامین حرکتی را برای سیستم کنترل موتورهای ربات ارسال می کنیم (چپ گرد٬ راست گرد). اما بیاد مراحل رو از وسط شروع کنیم! یعنی مرحله پردازش تصویر. فکر می کنیم یه تصویر توسط دوربین در محیط مطلب در اختیار ما قرار داده شده و ما پردازشات لازم جهت استخراج مسیر حرکت رو روی اون انجام میدیم٬ تا بعدا برسیم به مراحل بعدی... مقدمه دیگه بسه بریم سر اصل مطلب:
اگر همونطور که گفتم به یه کتاب مطلب نگاهی انداخته باشید حتما از همون ابتدای امر متوجه شدید که در این نرم افزار اکثر عملیات ها برپایه ماتریس ها انجام میشه (ضرب٬ تقسیم٬ جمع٬...). مطلب یجورایی شبیه یه زبون برنامه نویسی هستش و ما در اون از متغیرها٬ عملگرها و توابع و... بسبک زبانهای برنامه نویسی جهت حل مثائل خودمون استفاده می کنیم. اصلا بیاید یه مثال عملی بزنیم:
>> I = 1:10
I =
1 2 3 4 5 6 7 8 9 10
RGB = imread('peppers.png'); ٪متغیر = imread('مسیر ونام فایل تصویر');
imshow(RGB);
یک متغیر به سبکی که مشاهده می کنید استفاده می شود. می بینید که در کادر متغیرها (بطور پیشفرض کادر بالا سمت چپ میحیط مطلب) متغیر RGB با ابعاد <384x512x3 unit8> ایجاد شده است. یعنی یک ماتریس سه بعدی که بعد اول ۳۸۴ خانه و معرف تعداد پیکسلهای ارتفاع تصویر٬ بعد دوم ۵۱۲ پیکسل طول تصویر و بعد سوم ۳ خانه که چون تصویر از نوع رنگی (RGB) می باشد یک خانه حاوی مقدار RED و خانه های بعدی نگدارنده مقادیر GREEN و BLUE پیکسل مورد نظر می باشد. جهت درک قضیه به تصویر مقابل دقت کنید.
رنگ unit8, unit16 و Double برای تصاویر رنگی در مطلب در نظر گرفته شده است. برای مثال در کلاس unit8 هر بعد مکعب که بیانگر یکی از رنگهای قرمز٬ سبز و آبی می باشد دارای ۲۵۶ (۲۸) مقدار تعیین شده می باشد که در کل ۲۵۶*۲۵۶*۲۵۶= ۲۲۴ رنگ مختلف تولید می شود. برای کلاسهای دیگر هم بهمین روال می باشد با این تفاوت که تعداد رنگ آنها بیشتر می باشد.دستور بعدی (خط دوم)٬ دستور "imshow" جهت نمایش تصاویر موجود در متغیر ها با فرمت ذکر شده می باشد. بعد از فراخوانی این دستورات ابتدا اطلاعات موجود در تصویر 'peppers.png' (موجود در مسیر جاری مطلب) داخل متغیر RGB ریخته شده و با دستور imshow مرورگر تصاویر نرم افزار عکس مربوطه را نمایش می دهد. »افزایش کنتراست تصویر
خوب حالا بیاید یکم کارای پردازشی روی تصاویر انجام بدیم. تصویر pout.tif رو در یک متغیر لود کنید و اون رو نمایش برای خودتون بدید (دقیقا مثل کد زیر). می بینید که این عکس کنتراست پایینی داره !
I = imread('pout.tif');
imshow(I);
برای مشاهده نحوه توزیع شدت رنگ در یک تصویر می توانید با صدا زدن دستور 'imhist' نمودار هیستوگرام آن را رسم کنید (شکل ۱) .
figure, imhist(I);

می بینید که در شکل ۱ رنج شدت نازک می باشد و تمام پتانسیل ۰ تا ۲۵۵ را پوشش نمی دهد بدین معنی که بخشی از مقادیر بزرگ و بخشی از مقادیر کوچک را که باعث ایجاد کنتراست بالا می شوند را در خود ندارد.
در این جعبه ابزار روشهای گوناگونی جهت افزایش کنتراست یک تصویر در نظر گرفته شده است که یکی از آنها استفاده از تابع histeq جهت پخش کردن مقادیر شدت در کل رنج پتانسیلی تصویر می باشد. با اجرای این دستورات به ترتیب زیر می بینید که نمودار هیستوگرام از نمونه شکل۱ به شکل۲ و تصویر از شکل۳ به شکل۴ تغییر می کند...
I2 = histeq(I);
figure, imshow(I2);

بهمین روش می توانید تصاویر دیگری را جهت تمرین وارد این محیط کرده و میزان کنتراست آنها را افزایش دهید.
مقاله این سری خیلی طولانی شد٬ اما می بینید که پردازش تصویر به خصوص در مطلب بحث بسیار سبک و شیرینی هستش! در جلسات آینده وارد مباحث پیشرفته تری خواهیم شد...
فعلا یاحق
...
[+]
نوشته شده توسط نیما در 12:3
|
|
دوستان خوبم سلام...
بخدا یه ساعته دارم فکر می کنم برا سه چهار خط اول این پست چی باید بنویسم و چی باید بگم (آخه میدونید که ۱ سالی هست نیومدم!!!!) تورو خدا خدتونو بزنید به کوچه علی چپ بیخیال شید دیگه٬ بیاید یجور رفتار کنیم انگار فقط ۱هفتس دیر کردم! بزارید من کمتر خجالت بکشم
(اخ مرسی٬ قربون مرامتون)
خوب دوستان بعد از پایان آخرین سلسه آموزشیم (آموزش Protel 99) قول داده بودم که راجع به پردازش تصویر مقالاتی رو شروع کنم که ظاهرا هم علاقمند زیاد بوده و هم عده زیادی ابراز لطف کرده بودن که از همشون ممنونم. طبق روال ابتدا برنامه آموزشی این سری خودم رو اعلام می کنم و در مقالات بعدی آموزش اصلی رو شروع خواهم کرد.
همونطور که ممکنه مطلع باشید بحث پردازش تصویر یکی از دروس دانشگاهی اون هم در مقطع کارشناسی ارشد هستش و میشه نتیجه گرفت اگر ما بخواهیم بطور پایه٫ مفهومی و فورمولی به این موضوع بپردازیم مقالاتی بسیار طولانی٬ تخصصی و سنگین رو خواهیم داشت که اصلا تو کار ما نیست. پس من چطوری می خوام شروع کنم؟
آها٬ مطمئنم خیلی هاتون با نرم افزار Matlab کارکردید یا حداقل اسمشو شنیدید. این نرم افزار یجورایی میشه بگی جهت حل مثائل ریاضی٬ شبیه سازی و... برای رشته های گوناگون طراحی شده که تمام محاسباتش در قالب ماتریس ها انجام میشه. این برنامه دارای جعبه ابزارهای گوناگونی هستش که همراه بسته نرم افزاریش ارائه میشه که هرکدون مربوط به کار خاص و رشته خاصی هستش. درواقع یادگیری کار با این نرم افزار دو بخش داره: ۱- اصول اولیه و فرمولهای مبتدی کار با ماتریس ها و اعداد و همچنین برنامه نوبسی مبتدی در مطلب. ۲- یادگیری نحوه کار با جعبه ابزار مربوط به کار خودمون یا آشنایی با توابع موجود در آن.
یادگرفتن مرحله اول کار بسیار آسونی هست و حتی یک دانش آموز زرنگ سطح راهنمایی (اگه زرنگ نباشه دبیرستان!) هم میتونه با مطالعه یه کتاب خودآموز طی ۴ یا ۵ ساعت به ابن مرحله تسلط نسبی پیدا کنه! با این حال من خودم مثل همیشه خط به خط کدهایی که استفاده می کنمو کاملا توضیح میدم و سعی می کنم برای همه قابل فهم باشه ولی توصیه می کنم برای اینکه خودتون بتونید کدهای من رو گسترش بدید و چیزای جدید بنویسید و بهتر متوجه بشید حتما یه کتاب مطلب مطالعه کنید.
اما مرحله دوم که ممکنه برای هر جعبه ابزار یه کتاب جداگانه وجود داشته باشه یه مقدار تخصصی تره که در این مقالات قصد دارم به معرفی و آموزش دستورات تعدادی از این جعبه ابزارها بپردازم. (درضمن منظور از جعبه ابزار مجموعه ای از توابع و دستورات مرتبط هستش که جهت انجام پردازشات و محاسبات روی داده های بخصوصی است که توسط افراد یا شرکت ها با استفاده از همین دستورات مبتدی مطلب نوشته شده اند٬ هستش. مثلا جعبه ابزار پردازش تصویر و یا منطق فازی که هرکودوم حاوی توابعی در زمینه خودشون هستند.)
راستی نکنه یوقت از حیبت و اسم نرم افزار مطلب بترسیدا (ولی واقعا نرم افزار عظیمیه!!!) در سطح مبتدی و متوسط واقعا شیرین و آسونه اینو قول میدم. بچه ها این نرم افزار تو کشورهای خارجی خیلی خیلی خیلی گرونه٬ تازه برای هر جعبه ابزارش هم جداگونه باید خیلی خیلی خیلی پول بدی! اما در ایران خود نرم افزار و شونصدتا جعبه ابزارش باهم تو ۳٬۴ تا سی دی ۱۰۰۰ تا ۱۵۰۰ تونم هست پس بیاید کمال سواستفاده رو ببریم!!!
خیلی حرف زدم!! تو این سلسه مقالات آموزشیم قصد دارم پردازش تصویر رو در قالب یک پروژه آموزش بدم. پروژه مربوطه یک ربات مسیریاب هستش که مسیر خودش رو توسط پردازش تصویر تشخیص میده!! البته این ربات بجای سنسورهای رنگ از یک دوربین کوچیک فیلم برداری با رابط USB (مثل وبکم) استفاده می کنه و مغز اصلی رباط بجای میکروکنترولر کامپیوتر هستش و توسط درگاه سریال کامپیوتر فرمان میگیره. اگر توجه کرده باشید ربات تولید شده از این روش اصلا نمیتونه تو مسابقات شرکت کنه و فقط جنبه آموزشی برای مقالات ما رو داره که البته از همین ایده میتونید در رباتهای دیگه بجز مسیریاب که بعدا اشاره می کنم استفاده کنید. پیشنهاد کلی اینه که شما از بدنه یک ربات مسیریاب که از قبل آماده کردید جهت آزمایش این پروژه استفاده کنید. در طی این دوره ما احتیاج داریم با تعدادی از جعبه ابزارهای مطلب از جمله:
کار کنیم که در مقالات آینده به ترتیب با دستورات موجود در این پکیجها آشنا خواهیم شد و پروژه خودمون رو کامل می کنیم. در پست بعدی (۳یا ۴ روز دیگه) کار با جعبه ابزار Image processing که شرین ترین بخش پروژه هست رو شروع می کنم.
موفق باشید
....
[+]
نوشته شده توسط نیما در 0:28
|
|