آموزش پردازش تصویر – فصل دوم کتاب پردازش تصویر گنزالس

آموزش پردازش تصویر – فصل دوم کتاب پردازش تصویر گنزالس

بهتر است قبل از شروع فصل 2 ، فصل 1 را خوانده باشید…

در فصل دوم کتاب “پردازش تصویر دیجیتال با متلب” نوشته گنزالس ، وودز و ادین ؛ شامل مباحث اصلی و پایه ای برای کار با تولباکس پردازش تصویر متلب است. که نکات اساسی و مهم در ادامه ذکر خواهد گردید.

 

تصاویر دیجیتال

یک تصویر دیجیتال در پردازش تصویر به صورت تابع f(x,y) و یا f(r,c) نمایش داده می شود ، که مختصات دو بعدی یعنی ردیف r و ستون c را دریافت می کند ، و مقدار آن را که با f نشان می دهند برمی گرداند.

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

بنابراین ماتریس تصویر به صورت زیر تعریف می شود:

خواندن تصاویر

برای خواندن یک تصویر از متلب از دستور زیر استفاده می کنیم :

به جای filename ، اسم تصویر همراه با پسوند و آدرس کامل آن در کامپیوتر ذکر می شود. در صورتی که فایل در مسیر اصلی باشد نیازی به آدرس دهی نیست و اسم و پسوند عکس کفایت می کند.

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

در زیر چند نمونه از استفاده از این دستور آورده شده است :

پس از اجرای دستوارت ماتریس تصویر در f قرار می گیرد.

 

اندازه تصویر

دستور size(f) ابعاد تصویر را بر می گرداند. به صورت های زیر هم می توان از دستور استفاده کرد:

با دستور whos اطلاعات کاملی از f بدست می آید.

 

نمایش تصویر

برای نمایش تصویر در فیگور از دستور imshow به صورت زیر استفاده می کنیم :

دستور آخری مناسب برای زمان هایی است که تصویر دارای کنتراست کم است.

 

ذخیره تصویر

برای ذخیره تصویر از دستور زیر استفاده می کنیم :

به جای filename نام همراه پسوند تصویر را می نویسیم.

بسته به اینکه چه نوع فرمتی انتخاب می کنیم ، پارامترهای دیگری اضافه می شود. برای نمونه برای ذخیره سازی با فرمت jpg میزان کیفیت را می توان مشخص کرد که البته اختیاری است.

با دستور iminfo می توان اطلاعات یک فایل تصویری را دید:

زمانی لازم است تا فیگور به صورت عکس ذخیره شود و نه تصویر f ، برای مثال یک تصویر در فیگور نمایش داده شده و روی آن نموداری هم ترسیم شده است ، بنابراین برای ذخیره این تصویر جدید از روش قبل نمی توان استفاده کرد، و باید از دستور زیر استفاده کرد :

printf –fNo –dFileformat –rResno –Filename

به ترتیب از چپ به راست باید ، شماره فیگور ، فرمت فایل ، رزلوشن و نام فایل را قرار داد ، به صورت زیر:

 

کلاس داده

متلب از کلاس های داده مختلفی پشتیبانی می کند. کلاس داده در واقع مشخص می کند که متغیر چه مقادیری در چه محدوده ای را می تواند قبول کند. که به صورت جدول زیر است:

 

انواع تصویر در متلب

تولباکس متلب چهار نوع تصویر را پشتیبانی می کند :

 

  • تصاویر شدت خاکستری (Intensity images)
  • تصاویر باینری یا دودویی یا سیاه و سفید (Binary images)
  • تصاویر ایندکس یا شاخص (Index images)
  • تصاویر RGB یا رنگی (RGB images)

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

تصاویر شدت خاکستری به تصاویری گفته می شود که در صورتی که به صورت uint8 یا uint16 تعریف شوند ، پیکسل ها مقادیری بین 0تا255 و یا 0تا65535 می گیرند.

تصاویر باینری تصاویری هستند که ماتریسی شامل صفر ها و یک ها می باشد ، که اصطلاحا به آن تصویر سیاه سفید می گویند. برای تشخیص اینکه یک تصویر باینری است از دستور islogical(f) استفاده می شود. اگر باینری باشد یک را برمی گرداند.

 

تبدیل کلاس ها به یکدیگر

برای تبدیل کلاس یک متغیر به یک کلاس دیگر کافی است به صورت زیر عمل کنیم :

B=data_class_name(A)

برای نمونه :

 

درمثال بالا f از نوع کلاس uint8 است ، که به کلاس double تبدیل می شود.

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

برای نمونه در مثال زیر دقت کنید ، دستور im2uint8 با uint8 مقایسه شده است :

با استفاده از دستور im2bw می توان ، تصاویر را به باینری یا سیاه و سفید تبدیل کرد. به این صورت :

T مقدار آستانه را نشان می دهد ، نقاطی که بزرگتر از T هستند مقدار یک و بقیه مقدار صفر می گیرند. مقدار باید بین صفر و یک باشد. تصویرf هم باید به نوع double تبدیل شود تا بین صفر و یک شود.

دستور پر کاربرد دیگری که در جدول بالا نیامده ، دستور rgb2gray است ، که برای تبدیل تصاویر رنگی به تصاویر خاکستری استفاده می شود. دقت شود که لازم است برای انجام پردازش های مونوکروم تصاویر به صورت خاکستری در بیایند.

عملیات اصلی

برای انجام عملیات ریاضی روی تصاویر ، مثل جمع ، تفریق،ضرب،تقسیم و … . می توان همانطور که ماتریس ها را با هم جمع می کنیم ، تصاویر را هم باهم جمع کنیم ، چون تصاویر هم چیزی جز ماتریس نیستند. بنابراین راه اول برای انجام اعمال ریاضی استفاده از عملگرهای + و – و … است، ولی اینکار توصیه نمی شود و بهترین کار استفاده از دستورات تولباکس متلب برای انجام اعمال ریاضی است. استفاده از عملگرهای اصلی مناسب نیست به این خاطر که مثلا اگر مقدار پیکسل یک تصویر 200 باشد و مقدار پیکسل تصویر دیگر 100 باشد ، مقدار جمع آن ها 300 می شود که از 255 بیشتر می شود و برای یک تصویر قابل پذیرش نیست و تصویر حاصل دچار مشکل می شود. ولی دستورات متلب با نرمالیزه کردن مقادیر از این اتفاق جلوگیری می کنند.

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

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

دستور توان به صورت زیر استفاده می شود:

 

 

دیگر مطالب ذکر شده در فصل 2 کتاب پردازش تصویر دیجیتال گنزالس ، در مورد کار با ماتریس ها و دستورات اساسی و ابتدایی متلب است. از آنجایی که فرض می شود قبل از شروع مباحث پردازش تصویر با آن دستورات آشنایی پیدا کرده اید ، گفتن آن ها لازم به نظر نمی رسد.

 

 

ترجمه و گرداوری : d-i-p

  1. سلام، متاسفانه منابع فارسی در این زمینه کم است ، اما مقالات متعدد انگلیسی با یه سرچ ساده یافت می شود. ابتدا باید مفهوم و عملکرد SVM رو یادبگیری و روی داده امتحان کنی، بعد از اون متوجه خواهی شد که با برچسب گذاری نویز و داده اصلی و اموزش بردار پشتیبان، این دو داده رو تفکیک کنی و نویز را از داده اصلی شناسایی کنی. متاسفانه مجال و فرصت بیشتر برای توضیح بیشتر نیست. موفق باشید.

دیدگاه شما

( الزامي )

(الزامي)