no-img
بدو دانلود

سورس تمرینات پردازش تصویر کتاب گنزالس با متلب + توضیحات - بدو دانلود


بدو دانلود

ادامه مطلب

ZIP
سورس تمرینات پردازش تصویر کتاب گنزالس با متلب + توضیحات
امتیاز 5.00 ( 1 رای )
zip
آذر ۲۰, ۱۳۹۵

سورس تمرینات پردازش تصویر کتاب گنزالس با متلب + توضیحات


دانلود رایگان مجموعه سورس تمرینات پردازش تصویر کتاب گونزالس با متلب به همراه توضیحات

در این پست قصد داریم برای دانشجویان درس پردازش تصویر پاسخ تمرینات کتاب پردازش تصویر گنزالس ( سورس تمرینات پردازش تصویر ) را برای شما به اشتراک بگذاریم. این سورس کد ها همگی توسط خود بنده نوشته شده 🙂 (من ک تونستم نمره کامل تمرینات رو از استاد بگیرم تو درس پردازش تصویر ).

همه سورس کدها روی متلب ۲۰۱۶ تست شدن و نکته ای لازمه بگم اینه ک برای اجرا شما باید ی عکس رو به عنوان ورودی تعیین کنید تا خطا نده.

توضیحات مختصری از نحوه نوشتن و الگوریتم رو هم در هر زیر بخش مطلب عنوان کردم، اما در صورتی ک مشکلی داشتین بنده پاسخگو هستم.

در انتهای صفحه (بخش دانلود) می تونین سورس تمرینات پردازش تصویر گنزالس در متلب رو دانلود کنین !!!



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

Zooming and Shrinking Images by Nearest Neighbor Interpolation in matlab

قصد داریم با استفاده از روش درونیابی نزدیک ترین همسایه یک تصویر ورودی را با نرم افزار متلب تغییر سایز دهیم.

تشریح کد:

در ابتدا با استفاده از دستورimread تصاویر خوانده می شوند تا بصورت ماتریسی درآیند. و سپس از طریق دو تابع shrinkFunc و zoomFunc عملیات مربوطه انجام میگیرد که در ادامه به شرح آنها خواهیم پرداخت.

این توابع دو ورودی ۱- ماتریس تصویر اصلی(A) 2- مقیاس عملیات (f) (که با تقسیم اندازه تصویر اصلی به اندازه دلخواه بدست می آید که می تواند اعشاری نیز باشد.) را گرفته و در خروجی نیز ماتریس تصویر تبدیل شده (B) را بر می گردانند.

تابع zoomFunc :

ابتدا اندازه ماتریس تصویر جدید(s) را از طریق ضرب اندازه تصویر اصلی در f بدست آورده و سپس در حلقه ماتریس جدید (B) مقدار دهی می شود.

برای مقدار دهی از دو حلقه for تودرتو استفاده شده که اولی مربوط به سطرها و دومی مربوط به ستون ها می باشد که گام هر دو حلقه افزایش یک واحد است. برای پر کردن خانه سطر i ام و ستون j ام ماتریس B ، از مقدارceil شده (گرد شده به عدد صحیح بالایی) مقدار موجود در خانه با شماره سطر i ضربدر مقیاس (f) و ستون j ضربدر مقیاس (f)ماتریس اصلی (A) استفاده می شود.

تابع shrinkFunc :

ابتدا اندازه ماتریس تصویر جدید(s) را از طریق تقسیم اندازه تصویر اصلی بر f بدست آورده و در حلقه ماتریس جدید (B) مقدار دهی می شود.

حلقه ها همانند تابع zoomFunc می باشد. برای پر کردن خانه سطر i ام و ستون j ام ماتریس B ، از مقدارceil شده (گرد شده به عدد صحیح بالایی) مقدار موجود در خانه با شماره سطر i تقسیم بر مقیاس (f) و ستون j تقسیم بر مقیاس (f) ماتریس اصلی (A) استفاده می شود.

برای نمایش همگی تصاویر در یک شکل از subplot استفاده شده و با استفاده از دستور imshow تصاویر را در خروجی به نمایش در می آوریم.

!!!دانلود سورس تمرینات پردازش تصویر تصویر گنزالس در متلب در انتهای صفحه



بزرگنمایی و کوچک کردن تصویر با استفاده از روش درونیابی دو خطی در متلب

Zooming and Shrinking Images by Bilinear Interpolation in matlab

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

تشریح کد:

در ابتدا با استفاده از دستورimread تصاویر خوانده می شوند تا بصورت ماتریسی درآیند. و سپس مقیاس ها کوچک نمایی و بزرگ نمایی از کاربر درخواست و دریافت می شود. (مقیاس اعشاری نیز قابل قبول و اجراست) و از طریق تابع bilinearInterpolation عملیات تغییر سایز انجام می شود. که در ادامه این تابع و روند کار آن را تشریح می کنیم.

تابع bilinearInterpolation :

این تابع در ورودی خود ماتریس تصویر اصلی و مقیاس را می پذیرد (مقیاس برای کوچک کردن عکس دریافت شده از کاربر است).و پس از محاسبه اندازه ماتریس تصویر ورودی، یک ماتریس تمام صفر با اندازه سایز ماتریس ورودی*مقیاس از نوع uint8 می سازد که برای ایجاد تصویر خروجی از آن استفاده می شود.

در حلقه های تودرتو که اولی مربوط به سطر ها و دومی (زیر حلقه) مربوط به ستون هاست، در ابتدا مقدار سطر بالایی (x1) و پایینی (x2) و ستون سمت چپ (y1) و سمت راست (y2) محاسبه می شود و چون در ماتریس i,j=0 نداریم آن ها را یک در نظر می گیریم تا بتوانیم حاشیه های تصویر خروجی را نیز مقداردهی کنیم.

در حلقه اول فاصله از ستون چپ (x) را با استفاده از دستور rem که باقیمانده رو به پایین را محاسبه می کند بدست می آوریم (همچنین فاصله از ستون راست را با (۱-x) مقدار میدهیم).

در حلقه دوم فاصله از سطر بالا (y) را نیز با استفاده از rem به دست می آوریم(همچنین فاصله از ستون راست را با (۱-y) مقدار میدهیم). و با استفاده از فرمول درون یابی خطی (شکل زیر) مقدار سطر و ستون i,j تصویر خروجی را بدست می آوریم.Image result for bilinear interpolation

و در نهایت پس اتمام شرط حلقه ها ماتریس حاصله به عنوان خروجی تابع برگشت داده می شود.

با استفاده از دستور imshow تصاویر را در خروجی به نمایش در می آوریم.

!!!دانلود سورس تمرینات پردازش تصویر گنزالس در متلب در انتهای صفحه



کشش کنتراست در متلب – contrast Stretching in matlab

دراین پروژه با استفاده از توابعی به تغییر سطوح خاکستری پرداخته خواهد شد، که شرح آن بدین گونه است:

  • کشش کنتراست (contrast Stretching ): برای بالابردن رنج پویا سطح خاکستری در تصویر

تشریح کد:

ابتدا کمترین و بیشترین مقدار سطح خاکستری را محاسبه می کنیم ( با توجه به این که min , max کمترین و بیشترین در سطرها را بر می گردانند باید دوباره از مقدار حاصله min , max می گیریم). همچنین از کاربر مقدار کمترین و بیشترین را به دلخواه دریافت می کنیم. برای انجام کشش کنتراست از رابطه زیر در حلقه استفاده می کنیم.

!!!دانلود سورس تمرینات پردازش تصویر گنزالس در متلب در انتهای صفحه



منفی کردن تصویر در متلب – negative image in matlab

دراین پروژه با استفاده از توابعی به تغییر سطوح خاکستری پرداخته خواهد شد، که شرح آن بدین گونه است:

  • تصویر منفی (negative image): برای بالابردن جزئیات خاکستری یا سفید در مناطق تاریک یک تصویر

تشریح کد:

برای انجام این کار تنها لازم است در حلقه بیشترین مقدار سطوح خاکستری را از مقدار سطح خاکستری پیکسل موجود کم کنیم و با کمترین سطح خاکستری موجود جمع می کنیم.

!!!دانلود سورس تمرینات پردازش تصویر گنزالس در متلب در انتهای صفحه



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

دراین پروژه با استفاده از توابعی به تغییر سطوح خاکستری پرداخته خواهد شد، که شرح آن بدین گونه است:

  • آستانه (Thresholding): برای جدا کردن شی مورد نظر از زمینه

تشریح کد:

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

در نهایت تمامی تصاویر را در یک شکل نشان میدهیم و البته در عنوان شکل کشش کنتراست دو مقدار اول مربوط به بازه کمترین و بیشترین سطوح خاکستری تصویر اصلی و دو مقدار بعدی مربوط به بازه جدید است.

!!!دانلود سورس تمرینات پردازش تصویر گنزالس در متلب در انتهای صفحه



استخراج هسیتوگرام تصویر در متلب – Histogram Extraction in matlab

در این پروژه به استخراج هیستوگرام یک تصویر (تعیین تعداد هر سطح خاکستری و رسم نمودار آن) خواهیم پرداخت.

تشریح پروژه:

برای محاسبه هیستوگرام از تابعی به نام HistogramFunc() که در ورودی خود یک تصویر می گیرد استفاده می کنیم که عملکرد آن بشرح ذیل است:

ابتدا یک ماتریس صفر با ۲۵۶ سطر و ۱ ستون ایجاد می کنیم (hist) سپس در دوحلقه تو در تو با شمارنده ۱ تا حداکثر سطر و یا ستون تصویر اصلی، مقدار سطح خاکستری خانه (i,j) را در یک متغیر به نام c ریخته و به خانه ی شماره c+1 از ماتریس hist یک واحد اضافه می کنیم و تا پایان شروط حلقه این کار را ادامه داده و در نهایت تابع hist را به عنوان خروجی بر می گرداند.

برای نمایش نمودار از دستور plot() استفاده می کنیم. ( البته از دستور bar() نیز برای نمایش نمودار میله ای می توان استفاده کرد.)



بخش دانلود:

!!! لینک های دانلود از سرور ترین بیت هستن. تمامی کد سورس تمرینات پردازش تصویر به فرمت .m هستند.Download

 

 





دیدگاه ها


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

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