آموزش متلب

آموزش پردازش تصویر در متلب-4

آموزش پردازش تصویر در متلب

هيستوگرام تصوير

تا به حال تصويرهاي Gray Scale را بررسي کرديم. از اين به بعد هم همين کار را مي‌کنيم! با اين تفاوت که اگر تصوير ورودي رنگي بود اول Gray Scale‌اش مي‌کنيم و بعد کارها را ادامه مي دهيم.

تصوير flowers.tif  را با دستور imread در ماتريس flowers ذخيره کنيد. از دستور rgb2gray براي تبديل فرمت رنگي تصوير به Gray Scale  استفاده کنيد. حالا هيستوگرام تصوير را رسم کنيد. بعد يکي از قله‌هاي نمودار هيستوگرام را انتخاب کنيدکه بين دوتا دره باشد. کاري کنيد که فقط اين قله درون هيستوگرام باقي بماند. بعد با دستور im2bw تصوير را از Gray Scale به سياه سفيد تبديل کنيد و نتايج را مقايسه کنيد!

چطور شد؟ توضيح مي‌دهم، اينطوري:

flowers=imread(‘flowers.tif’,’tif’);

flowersgray=rgb2gray(flowers);

imhist(flowersgray)

من هيستوگرام را نگاه کردم و شما هم نگاه کنيد. (هيستوگرام تصوير را بادستور imhist کشيدم) قلة بين 50 و 100 را انتخاب مي‌کنم. حالا يک ماتريس جديد مي‌سازم طوري که فقط جاهايي که مقدار ماتريس flowersgray  در محدودة 50 تا 100 است، در ماتريس جديد 0 باشد و باقي جاها 1 باشد.

(يعني يک ماتريس باينري يا سياه سفيد)

 

f=ones(size(flowersgray));

f(find(flowersgray>50&flowersgray<100))=0;

imshow(f)

دستورهاي بالا به اين معني است: ماتريس f را هم‌اندازه ماتريس flowersgray بساز. همة درايه‌هايش را يک بگذار. بعد دستور find درون ماتريس flowersgray جستجو مي‌کند و شماره درايه‌هايي از ماتريس flowersgray را به من مي‌دهد که در شرط روبه‌رو برايش مشخص شده. (همان محدودة 50 تا 100). اين درايه‌هاي بخصوص را در ماتريس f از 1 به 0 تبديل مي‌شود. نتيجه را باهم ببينيم!

 

اگر دقت کنيم مي‌بينيم که مجموعة گلدون از پس زمينه جدا شد. آنهم تنها با انتخاب يک قله درون هيستوگرام… حالا من از کجا فهميدم که اين قله مهم است؟… لابد علم غيب داشتم؟… بعدا راجع به انتخاب قله‌ها بيشتر خواهيم فهميد.

 

حالا دستور  im2bw را – که تصوير را سياه سفيد مي‌کند –  امتحان کنيد.

bwflowers=im2bw(flowersgray,gray);

imshow(bwflowers)

دستور im2bw حدي تعيين مي‌کند و درايه‌هايي که از آن حد کمتر باشند را صفر و آنهايي که بيشتر هستند را يک مي‌کند. آيا متوجه تفاوت دو روش شده‌ايد؟ اگر به جاي گلدون در تصوير مورد نظر، عکس پرسنلي افراد بود چه اشکالي در روش im2bw وجود داشت؟

 

دستورات معرفي شده: rgb2gray, imhist, ones, find

اگر ما روبات بوديم

خب فرض کنيد برنامه‌اي براي يک روبات مي‌نويسيد که با استفاده از يک دوربين به يک بازوي دقيق فرمان مي‌دهد که سکه‌هاي «اسکروچ» را بردارد و روي هم قرار دهد. براي اينکار لازم است محل دقيق سکه‌ها را تشخيص دهيم تا فرمان مناسب براي بازو صادر شود. برنامة زير اين کار را انجام مي‌دهد. دقت کنيد ببينيد که چطور اينکار را انجام مي‌دهد:

 

coins = imread(‘eight.tif’);

BW=~im2bw(coins,.75);

imshow(BW)

L = bwlabel(BW);

stats = imfeature(L,’Centroid’);

stats(7)

 

خروجي همان متغيير stats است. اين متغيير 7 عنصر دارد. درحالي که 4 سکه بيشتر درون تصوير وجود ندارد! اشکال از کجاست؟…. راه حلي هم براي اين به ذهنتان مي‌رسد؟

 

دستورهاي معرفي شده: bwlabel, imfeature

 

مقاله متلب,مطلب,متلب,مقاله برق,مقاله قدرت,مقاله مطلب,مقاله سیمولینک,دانلود متلب,دانلود مقاله متلب,مقالهmatlab ,آموزش متلب,مطلب,متلب,آموزش برق,آموزش قدرت,آموزش مطلب,آموزش سیمولینک,دانلود متلب,دانلود آموزش متلب,آموزشmatlab ,پروژه متلب,مطلب,متلب,پروژه برق,پروژه قدرت,پروژه مطلب,پروژه سیمولینک,دانلود متلب,دانلود پروژه متلب,پروژهmatlab ,

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *