رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش پردازش تصویر در متلب(آشنايي با Matlab و Image Processing Toolbox)
#1
Lightbulb 
آشنايي با Matlab و Image Processing Toolbox

همه با Matlab آشنا هستيم و حداقل مي‌دانيم که چيز بدردخوري است. پس از صحبت دربارة اين مي‌گذريم. اما Image Processing Toolbox از امکانات جنبي اين برنامه است. براي اينکه مطمئن شويد که اين Toolbox روي Matlab شما نصب شده است؛ دستور ver را اجرا کنيد. اين دستور ليست هرچه که از Matlab روي رايانه شما نصب شده است را ارائه مي‌دهد. بين Matlab 5.x و Matlab 6 براي کار پردازش تصوير تفاوت چنداني وجود ندارد اما مثل هميشه نسخة جديدتر امکانات بيشتري دارد که البته فعلا با آنها کاري نداريم.

دستور‌هاي معرفي شده : ver

چگونه يک فايل تصوير را در Matlab باز کنيم

Matlab می‌تواند فايل‌هاي گرافيکي با فرمت‌هاي JPEG, TIFF, GIF, BMP, PNG, HDF, PCX, XWD, ICO, CUR را به عنوان فايل گرافيکي بخواند. مثلاً براي وارد کردن تصويري به نام cameraman.tif به فضاي Matlab کافي است از دستور imread استفاده کنيم:

کد پی‌اچ‌پی:
MyImage=imread('cameraman.tif','tif'); 

توجه داشته باشيد که فايلي که دستور خواندنش را مي‌دهيد بايد براي برنامه قابل دسترس باشد. يعني يا بايد در مسير (Path) Matlab‌ باشد يا اينکه در پرونده‌اي (folder) قرار داشته باشد که در حال حاضر برنامه به آن دسترسي دارد. براي اينکه بدانيد که Matlab براي پيدا کردن فايلي که دستورش را داديد کجا را خواهد گشت اينکارها را بکنيد: از دستور path براي اينکه بدانيد کدام پرونده‌ها جزء مسير پيش‌فرض Matlab است و از دستور dir براي اينکه بدانيد که Current Directory چيست؛ استفاده کنيد.

خب تا اينجا يک فايل تصوير را در محيط Matlab وارد کرده‌ايم. همانطور که مي‌دانيم يک تصوير ديجيتال بر روي کامپيوتر در قالب يک ماتريس ذخيره مي‌شود. پس MyImage مثل همه متغيرهاي Matlab يک ماتريس است. براي اينکه بدانيم فايل خوانده شده از چه فرمتي است(سياه سفيد، يا Gray Scale يا رنگي ) مي‌نويسيم:

کد پی‌اچ‌پی:
imfinfo('cameraman.tif'

اين دستور را اجرا کنيد و ببينيد چه مي‌نويسد... اما اگر بخواهيد بدانيد که ماتريس ذخيره شدة MyImage از چه نوعي است کافي است بنويسد: whos و ليست متغييرهاي مقيم شده در حافظه و نوع و اندازه آنها را ببينيد.

دستورهاي معرفي شده : imread, imfinfo, whos, path, dir

منبع
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
#2
چطور تصوير را ببينيم؟

خب حالا مي‌خواهيم تصوير را که در يک ماتريس ذخيره شده است را ببنيم. بنويسيد:

کد پی‌اچ‌پی:
imshow(MyImage

جالب است نه؟ فکر مي‌کنيد اگر بخواهيم دوتا تصوير را با هم ببنيم بايد چکار کنيم؟ اين را امتحان کنيد:
کد پی‌اچ‌پی:
YourImage=imread('tire.tif','tif');

figure

subplot
(1,2,1), imshow(MyImage), title('MyImage')

subplot(1,2,2), imshow(YourImage), title('YourImage'
با اجراي اين دستورات به آن چيزي که اتفاق افتاد توجه کنيد؛ حتما متوجه مي‌شود که هرکدام از اين دستورات چه کاری مي‌کنند.



دستورهاي معرفي شده: imshow, subplot, title, figure

تصوير را خوانديم حالا چکار کنيم؟

کمي نويز دست‌وپا مي‌کنيم و به تصوير اضافه مي‌کنيم که بعداً راهي پيدا کنيم حذفش کنيم:
کد پی‌اچ‌پی:
imagen=imnoise(MyImage,'salt & pepper');

imshow(imagen
دستور imnoise نويزهاي مختلفي را در اختيار ما مي‌گذارد که به تصوير اضافه کنيم. افزودن نويز براي شبيه سازي اشکالاتي است که ممکن است به هر سيستم پردازش تصوير وارد شود. اينجا فرض کرده‌ايم که نويز «نمک و فلفل» به تصوير اضافه شده است! اسمش عجيب غريب است؟ اين نويز را روي تصوير تلويزيون‌تان اگر آنتن درست تنظيم نباشد حتما ديده‌ايد. مي‌دانيم که وقتي نويز داريم با يک فيلتر حذفش مي‌کنيم. فيلتري که انتخاب مي‌کنيم بايد مناسب نويزي باشيد که روي تصوير سوار شده است. بهترين فيلتر براي نويز «نمک و فلفل» فيلتر ميانه است که در Matlab با دستور Medfilt2 قابل استفاده است:
کد پی‌اچ‌پی:
figure

imagefilt
=medfilt2(imagen);

imshow(imagefilt
براي دست‌گرمي هم که شده سعي کنيد تصوير نويز و تصوير فيلتر شده را در يک صفحة واحد نمايش دهيد.

دوباره به تصوير MyImage نگاه کنيد. فرض کنيد مي‌خواهيم مارک دوربين درون عکس را از روي شکل آن تشخيص دهيم. بازهم فرض کنيد به روشي که بعدا بيشتر راجع بهش صحبت مي‌کنيم فهميديم که دوربين درون اين مختصات از تصوير قرار دارد. بين سطر 59 تا 84 و ستون 131 تا 170. پس از همين مختصات تصوير را با دستور imcrop مي‌بريم.

کد پی‌اچ‌پی:
imagecrop=Imcrop(MyImage,[ 131 59 39 25]); 

در اين دستور مختصات برش را اينطور مي‌نويسم ] ارتفاع ,پهنا ,حداقل y ,حداقل x [. اين قسمت بريده شده را نمايش بدهيد و ببينيد. در مرحله بعد سيستم تشخيص‌دهندة نوع دوربين احتياج دارد که اندازه تصوير مقدار خاصي مثلاً 120x100 باشد. پس بايد اندازه تصوير برش داده شده را تغيير دهيم:

کد پی‌اچ‌پی:
imagesz=imresize(imagecrop,[120 100]); 

تصوير جديد را نگاه کنيد. مي‌بينيد که به اندازه جديد در آمده است.

دستورهاي معرفي شده: imnoise, medfilt2, imcrop, imresize
منبع : همان
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط worm ، mizbani66@gmail.com ، danial82 ، ehsan0097 ، سحر صادقی ، Elizabeth666
#3
کمي خلاقيت مهندسي!

قبل از همه مروری بر مباحث گذشته قسمت اول و قسمت دوم داشته باشید.

يک فايل جديد باز مي‌کنيم که عکسي از دانه‌هاي برنج است. مي‌خواهيم دانه‌هاي برنج را درون عکس بشماريم. اين عکس از قسمت برنج مرغوبِ خط توليد يک کارخانه است. شمارش دانه‌هاي برنج به کارخانه برنج سازي کمک مي‌کند بداند چند درصد برنج‌هايش درجه يک هستند. اين دستورات را اجرا کنيد:

کد پی‌اچ‌پی:
p=imread('rice.tif');

re=edge(p,'sobel');

imshow(re)

re2=edge(p,'canny');

figureimshow(re2

البته اول تصوير اصلي برنج‌ها را ببينيد و سپس مقايسه کنيد. دو روش Sobel و Canny براي پيدا کردن لبه‌ها مورد آزمايش قرار گرفته است. مشخص است که روش Canny‌ اينجا بهتر جواب داده است. دو کار به عهده شماست.

الگوريتمي پيدا کنيد که تعداد برنج‌هاي درون عکس را بشمارد.‌(راهنمايي: اگر بتوانيد تعداد مسيرهاي بسته‌ی درون تصوير لبه‌ها را بشماريد تقريباً همه برنج‌ها را شمرده‌ايد)
کشف کنيد که روش Canny براي مشخص کردن لبه چه روشي است و چطور عمل مي‌کند و چرا از روش سادة Sobel بهتر است.

براي بهتر شده نتيجه کار با روش Sobel بهتر است از عملگرهاي ريخت‌شناسي (morphological) استفاده کنيم. سعي مي‌کنيم قسمت‌هاي نزديک به هم لبة هر برنج را به هم متصل کنيم. با اين کار لبة برنج‌ها را کامل مي‌کنيم و خوردگي‌ها را از بين مي‌بريم. اما قبل از ادامه کار دستور close all را امتحان کنيد. اين دستور همه figure هايي که باز هستند را مي‌بندد تا زياد شلوغ نشود! حالا اين دستورها را اجرا کنيد:
کد پی‌اچ‌پی:
figureimshow(re)

re4=bwmorph(re,'close');

re5=bwmorph(re4,'bridge');

figureimshow(re5) , title(‘after morphological operations’


آخرين تصوير لبه‌ها را با تصوير اوليه لبه‌ها که همان re است مقايسه کنيد. مي‌بينيد که در متصل کردن قطعات پيشرفت خوبي داشتيم. اولين دستور bwmorph عمل Closing را روي تصوير انجام مي‌دهد و دومين دستور عمل Bridge. براي اينکه بدانيد هرکدام از اين دستورات چکار مي‌کنند از help bwmorph استفاده کنيد.

براي اينکه بهتر کار با اين دستورها را ياد بگيريم سري به Demoهاي Matlab مي‌زنيم. در صفحه Matlab بنويسيد: demo و با اجرا کردن اين دستور ليست demo‌هاي مختلف ظاهر مي‌شود. Image Processing Toolbox را انتخاب کنيد. و در ليست کناري Edge Detection را انتخاب کنيد. بقيه ماجرا با خودتان! دستورهاي معرفي شده:edge, bwmorph, demo

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

تا به حال تصويرهاي 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)

bwlabel(BW);

stats imfeature(L,'Centroid');

stats(7


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



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

با اينترنت ياد بگيريم:

به آدرس www.ph.tn.tudelft.nl/hpise/index.html مراجعه کنيد و در کلاس آنلاينِ مجاني‌اش ثبت‌نام کنيد. خيلي جالب است! حتما امتحانش کنيد.

منبع: همان
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
#4
آقای ابراهیمی حیف این تاپیک همینجوری رها باشه من و خیلی از بچه های فرم منتظر ادامه آموزش شما هستیم
باتشکر ویژه بخاطر وقتی که میزارید
پاسخ
سپاس شده توسط سحر صادقی ، sahar3671
#5
جزوه آموزش پردازش تصویر با نرم افزار مطلب

همانطور که می دانید پردازش تصویر یکی از قسمتهای قوی نرم افزار MATLAB
می باشد که بیشتر شهرت نرم افزار MATLAB مربوط به همین جعبه ابزار پردازش
تصویر می باشد.

در این پست جزوه پدازش تصویر در مطلب برای شما قرار داده شده است که می توانید دانلود کنید و از ان استفاده کنید.
پسورد فایل پی دی اف : www.ariamec.com



منبع
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط msr_anjir@yahoo.com ، سحر صادقی ، sahar3671
#6
از سال 1964 تاكنون، موضوع پردازش تصوير، رشد فراواني كرده است. علاوه بر برنامه تحقيقات فضايي، اكنون از فنون پردازش تصوير، در موارد متعددي استفاده مي شود. گر چه اغلب اين مسائل با هم نامرتبط هستند، اما عموما نيازمند روش هايي هستند كه قادر به ارتقاي اطلاعات تصويري براي تعبير و تحليل انسان باشد. براي نمونه در پزشكي شيوه هاي رايانه اي Contrast تصوير را ارتقا مي دهند يا اين كه براي تعبير آسانتر تصاوير اشعه ايكس يا ساير تصاوير پزشكي، سطوح شدت روشنايي را با رنگ، رمز مي كنند. متخصصان جغرافيايي نيز از اين روش ها يا روش هاي مشابه براي مطالعه الگوهاي آلودگي هوا كه با تصوير برداري هوايي و ماهواره اي بدست آمده است، استفاده مي كنند. در باستان شناسي نيز روش هاي پردازش تصوير براي بازيابي عكس هاي مات شده اي كه تنها باقي مانده آثار هنري نادر هستند، مورد استفاده قرار مي گيرد. در فيزيك و زمينه هاي مرتبط، فنون رايانه اي بارها تصاوير آزمايش هاي مربوط به موضوعاتي نظير پلاسماهاي پرانرژي و تصاوير ريزبيني الكتروني را ارتقا داده اند. كاربردهاي موفق ديگري از پردازش تصوير را نيز مي توان در نجوم، زيست شناسي، پزشكي هسته اي، اجراي قانون، دفاع و صنعت بيان كرد.

متلب یکی از قویترین ابزارهای پردازش تصویر را در قابل Image Processing Toolbox در اختیار متخصصین این حوزه قرار داده است. بسیتاری از عملیات رایج و حتی بعضی از عملیات خاص و پیچیده پردازش تصویری نیز به سادگی در قالب توابع آماده تدارک دیده شده است.
پسورد فایل پی دی اف : www.ariamec.com

منبع
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط Elizabeth666 ، sahar3671
#7
سلام دوستان اگه کسی میتونه منو راهنمایی کنه ممنون میشم.

من میخوام بدونم دستور

چه کاری انجام میده؟؟ impoly,poly2
پاسخ
سپاس شده توسط Elizabeth666
#8
سلام
دستور impoly جهت ترسیم خطوط چندگانه استفاده میشه:
کد پی‌اچ‌پی:
impolygca , [ X1 Y1 X2 Y2 , . . . , Xn Yn ] ) 
نکته:به سمی کالن ها دقت شود

(مراحل کار شبیه رسم خط)
مثال:
کد پی‌اچ‌پی:
figureimshow('gantrycrane.png');
impoly(gca, [188,30189,14293,14113,4114,29]); 


دستوری به نام poly2 نداریم، شاید اسم متغیر بوده!
پاسخ
سپاس شده توسط مهدی ابراهیمی ، sepid_d ، Elizabeth666
#9
مرسی
دوستان من دنبال این دستورات هستم
poly2mask, roifilt2, roicolor roifill
هست help matlabاین دستورات تو
roipoly وقتی دستور
.رو میزنی میاد
لطفا اگه تونستین راهنماییم کنید خیلی ابتدایی باشه چون من کار نکردم با متلب. مرسی
پاسخ
سپاس شده توسط
#10
سلام،چگونگی باز کردن تصویررو لطفآ بهتر توضیح بدید.
من تصویرم رو ذخیره کردم ،ولی با دستور imread  که میخوام بخونمش،میگه این فایل موجود نیست!!
چطوری این مشکل رو مرتفع کنم؟
ممنون
پاسخ
سپاس شده توسط


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Lightbulb آموزش توابع اولیه پردازش تصویر در متلب- فصل دوم بهسان اندیش 1 336 07-02-2019, 10:35 AM
آخرین ارسال: بهسان اندیش
  آموزش توابع اولیه پردازش تصویر در متلب- فصل اول بهسان اندیش 7 1,573 02-25-2019, 12:10 PM
آخرین ارسال: بهسان اندیش
Lightbulb کد متلب در مورد پردازش تصویر soda 6 12,993 11-15-2015, 09:55 AM
آخرین ارسال: ایران86
  پردازش تصویر در متلب mary92 3 5,921 09-17-2014, 10:04 AM
آخرین ارسال: مهدی ابراهیمی
  چطور می‌تونم یک ویدئو رو در نرم‌افزار متلب باز کنم sahar.am 2 4,426 08-13-2014, 09:08 PM
آخرین ارسال: sahar.am
  کد متلب برای آشکار سازی پوست در تصویر ویدیو sahar.am 0 2,849 07-20-2014, 06:38 PM
آخرین ارسال: sahar.am
  كد متلب كوچك كردن و زوم تصوير با درنيابي دو مكعبي soft92 0 2,923 03-11-2014, 08:15 PM
آخرین ارسال: soft92
  شطرنجی کردن چشم در تصویر mmirzaeej 1 3,564 11-26-2013, 02:41 PM
آخرین ارسال: مهدی ابراهیمی
  پردازش آنلاین تصویر از دوربین در متلب eittcrobotic 3 6,051 11-24-2013, 10:34 PM
آخرین ارسال: marka
  فریم فریم کردن فیلم در متلب محسن6306 9 19,405 09-02-2013, 02:55 PM
آخرین ارسال: miladhesari

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان