نمونه برداری و کوانتیزه سازی تصاویر(جلسه ی سوم)

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

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

 

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

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

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

فرایند دیجیتال کردن تصویر

 

نمونه برداری(sampling)

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

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

سیگنال پیوسته نمونه بردای شده

 

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

نمونه های گسسته نماینده سیگنالهای پیوسته مختلف

 

سوال: نرخ نمونه بردای چقدر باشد تا سیگنال گسسته نماینده مناسبی برای سیگنال پیوسته باشد؟      پاسخ: نرخ نمونه برداری باید ۲ برابر فرکانس نایکوئیست باشد. (برای اطلاعات بیشتر کتاب سیگنالها و سیستم را مطالعه کنید).

 

نکته: برای نمونه برداری تصاویر هم چنین رویکردی وجود دارد با این تفاوت که تصویر دوبعدی هست و باید در دو جهت نمونه بردای صورت بگیرد.

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

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

نمونه بردای با نرخ نمونه برداری های مختلف

 

کوانتیزه سازی تصاویر(quantization)

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

کوانتیزه سازی تصاویر

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

 

 

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

 

کوانتیزه سازی تصاویر

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

 

همانطور که مشاهده می کنید وقتی تعداد سطوح ۲ می شود تصویر به باینری (سیاه و سفید) تبدیل می شود.

 

مدرس: مهندس محمد نوری زاده چرلو

 


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

لینک کانال

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید.

انواع تصاویر در جعبه ابزار متلب(جلسه ی دوم)

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

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

 

تصویر اندیسی

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

ماتریس اندیس:  ابعاد این ماتریس برابر با ابعاد تصویر برحسب پیسکل است که مقدار هر پیکسل بین ۱ تا  ۲۵۶ (اعداد صحیح integer) هست. مقدار هر درایه یا همان پیکسل معرف شماره سطری از ماتریس نقشه رنگ است.

مارتریس نقشه رنگ:  این ماتریس دارای سه ستون و ۲۵۶ سطر است. هرکدام از این سطرها معرف یکی از رنگهای موجود است.

 نکته: یک تصویر اندیس شده، بسته به مقادیر نقشه رنگ، میتواند رنگی یا سطح خاکستری باشد. 

 

 

تصاویر در جعبه ابزار متلب

تصویر اندیسی

 

تصویر سطح خاکستری

تصویر خاکستری توسط یک ماتریس مشخص می شود. ابعاد تصویر با ابعاد ماتریس برابر است و مقدار هر پیسکل بین صفر تا ۲۵۵ هست. مقدار هر پیکسل معرف مقدار سطح خاکستری آن نقطه است.  رنگ سفید با مقدار ۲۵۵ و رنگ سیاه با مقدار ۰ نشان داده می شود. و سایر سطوح خاکستری با مقادیر بین صفر و ۲۵۵ نشان داده می شوند. هر چقدر عدد به ۲۵۵ نزدیک تر باشد، پیکسل مورد نظر روشن نتر دیده می شود و هرچقدر به صفر نزدیکتر باشد پیکسل مورد نظر تاریکتر دیده می شود.

 نکته: با فرمت اعشاری (بین صفر تا ۱) نیز سطوح خاکستری نمایش داده میشوند که ۱ معادل با ۲۵۵ و صفر همان صفر قبلی است.

 

تصاویر در جعبه ابزار متلب

تصویر خاکستری

 

 

تصویر باینری

تصویر باینری نیز توسط یک ماتریس مشخص می شود که ابعاد تصویر با ابعاد ماتریس برابر است و مقدار هر پیسکل صفر یا یک است. رنگ سفید با مقدار ۱ و رنگ سیاه با مقدار ۰ نشان داده می شود.

تصاویر در جعبه ابزار متلب

تصویر باینری

تصاویر در جعبه ابزار متلب

تصویر باینری

 

 

تصویر رنگی

این تصویر توسط سه ماتریس مشخص می شود که هر ابعاد هر ماتریس با ابعاد تصویر برابر است. و هر یک ماتریس ها معرف نسبت رنگهای قرمز، سبز و آبی هستند. مقادیر هر کدام از ماتریسها بین ۰ تا ۲۵۵ است.

تصاویر در جعبه ابزار متلب

تصویر رنگی

 


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

 لینک کانال  

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید.

 

 

 

مفاهیم پایه در پردازش تصویر(جلسه ی اول)

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

تصویر چیست؟

یک آرتیفکتی است که درک بصری را نشان می دهد(نتیجه به تصویر کشیده شدن درک بصری است).

 

تصویر دیجیتال چیست؟

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

مثل تصاویرMRI، تصاویر الترواسوند، تصاویر CT، تصاویر PETو…

بسته به رزولوشن یک تصویر، می‌تواند از نوع رستری یا برداری باشد.

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

 

فرق بین تصویر رستری و تصویر برداری؟

مدل برداری (vector: در مدل برداری عوارض جهان واقعی بوسیله عناصر هندسی مثل نقطه، خط و سطح، نمایش داده می شوند و ذخیره داده در مدل برداری  به دو صورت منظم و نامنظم صورت میگیرد.

مدل رستری (raster: رستر شامل مجموعه ای از نقاط یا سلولهایی است که عوارض زمین را در یک شبکه منظم می پوشاند، به طوریکه کل سطح گرافیکی نقشه به شبکه ای از سلول های ریز و منظم که پیکسل نیز نامیده می شود، تقسیم میشود. پیکسل، یک موقعیت در سطح زمین است و فرمت رستری، یک آرایه m*n ازاین پیکسل هاست. هر لایه مجموعه ای از این پیکسل ها و مقادیر مربوط به آنهاست.

دو نوع تصویر وجود دارد، تصویر رستری و تصویر برداری. تصویر رستری توسط نرم افزاریهای مبتنی بر پیکسل یا با استفاده از اسکنر و دوربین ایجاد میشوند. و بسیار رایج هستند(از قبیل jpeg, png, gif) و به طور گسترده در وب استفاده می شوند.

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

 

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

 

 

تفاوت تصویر رستری و برداری به طور خلاصه بصورت زیر است:

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

پیکسل چیست؟

کوچکترین عضو یک تصویر رستری است و هر تصویر رستری دیجیتال از تعداد محدودی پیکسل تشکیل شده است. در تصاویر دیجیتالی پیکسل ( Pixel)  کوچکترین جزء ساختاری (element) یک تصویر را گویند. پیکسل را بعضاً در مباحث مربوط به گرافیک و تصویر، نقطه نامیده و آن را کوچکترین بخش تشکیل دهنده تصویر نیز می‌خوانند. نمونه ی زیر، تصویری را نمایش می‌دهد (سمت چپ) که بخشی از آن به میزان قابل توجهی بزرگ شده (سمت راست). در این بخش، پیکسل‌های تشکیل‌دهنده تصویر به شکل مکعب‌های کوچکی قابل مشاهده‌اند.

پردازش تصویر دیجیتال چیست؟

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

در پردازش تصویر، تسکهای زیر را میتوان روی تصاویر انجام دهیم:

  • کلاسبندی
  • ناحیه بندی
  • تجزیه و تحلیل سیگنال چندگانه
  • شناسایی الگو
  • تبدیلات

رزولوشن تصویر رستری(از این به بعد منظورمان از تصویر، تصویر رستری هست و تمام مباحثی که مطرح میکنیم برروی تصاویر رستری اعمال خواهیم کرد):

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

 روزلوشن مکانی 

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

وضوح تصویر، یا قدرت تفکیک‌پذیری تصویر ( Image resolution) 

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

 

رزولوشن پیکسلی

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

رزولوشن مکانی

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

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

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

رزولوشن زمانی

بمعنی دقت اندازه گیری برحسب زمان اشاره دارد و  از آنجایی که یک ویدیو از فریمهای مختلفی تشکیل شده است هر چقدر تعداد فریمها بیشتر باشد، رزولوشن زمانی بالایی خواهیم داشت و حرکتهای اشیاء متحرک را بهتر نمایش خواهیم داد البته باید رزولوشن زمانی از سرعت حرکت اشیائ بیشتر باشد تا بتواند حرکات را دنبال کند. اگر تعداد فریمها خیلی بالا باشد، تصویر آهسته ای مشاهده خواهیم کرد، همانند صحنه های آهسته در فوتبال و  یک نکته جالب این است اگه رزولوشن زمانی با سرعت حرکت اشیائ یکی باشد، تصویر ایستایی خواهیم دید. زیرا تغییرات نمیتوانیم ببینیم.

 

 

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

لینک کانال

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید

 

 

سفید کردن (whitening)

سفید کردن (whitening)

تبدیل whitening یا بیضی کردن یک تبدیل خطی است که یک بردار با متغیرهای تصادفی با ماتریس کواریانس شناخته شده به مجموعه متغیرهای جدید تبدیل می کند که ماتریس کواریانس داده جدید ماتریس همانی است، به این معنی که داده جدید غیرهمبسته(uncorrelated) هست.
ویژگی های یک داده ممکن است به هم وابسته باشند یا به اصطلاح دیگر داده افزونگی داشته باشد که باعث کاهش دقت شناسایی در مسائل کلاسبندی می شود. با استفاده از تبدیل whitening داده را می توان uncorrelated کرد.

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

  • نویز سفید چیست؟ 

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

 

 

پیاده سازی در متلب

 

 

 

نتایج

                                                                          تصویر با نویز گوسی سفید

                                                                                 سیگنال با نویز گوسی سفید

 

نتیجه ی سفید کردن داده های دوبعدی قبل و بعد از سفیدکردن

 

                                                       داده دو بعدی قبل از whitening

 

                                                     داده دو بعدی بعد از whitening

 

 

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

لینک کانال

 

 

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید.

 

 

 

ناحیه بندی تصاویر با استفاده از ماشین بردار پشتیبان (svm)

در این ویدیو آموزش میدهیم که به چه صورت میتوان  از svm برای ناحیه بندی تصاویر استفاده کرد.

 

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

 


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

 لینک کانال  

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید

 Bit Level Slicing

 برای نمایش یک تصویر M * N از یک آرایه دو بعدی( ماتریس) که M سطر و N ستون دارد استفاده می شود.
هر یک از عناصر را یک پیکسل می نامیم که نشان دهنده شدت روشنایی تصویر در آن نقطه است.
هر پیکسل یک مقدار ۸ بیتی است که می تواند مقداری بین ۰ و ۲۵۵ داشته باشد.
مقدار صفر نشان دهنده رنگ تیره(سیاه) و مقدار ۲۵۵ نشان دهنده رنگ روشن(سفید) است.

مقادیر پیکسلها
مقدار انرژی مغناطیسی که یک تصویر رقمی به هنگام تصویر برداری کسب میکند، رقم های دوتایی(Digit binary) یا بیت ها(Bits) را تشکیل میدهند که از قوه صفر تا ۲ ارزش گذاری شده است. هر بیت، توان یک به قوه ۲ (۱بیت=۲۱) میباشد.
حداکثر تعداد روشنایی بستگی به تعداد بیت ها دارد. بنابراین ۸ بیت یعنی ۲۵۶ شماره رقمی که دامنه ای از ۰ تا ۲۵۵ دارد.

دامنه تغییرات رنگ مقدار پیکسل نوع تصویر


دقت تصویر بستگی به عدد پیکسل ها دارد. با یک تصویر ۲ بیتی، حداکثر دامنه روشنایی ۲۲ یعنی ۴ میباشد که دامنه آن از ۰ تا ۳ تغییر میکند. در این حالت تصویر دقت(تفکیک پذیری لازم) را ندارد. تصویر ۸ بیتی حداکثر دامنه ۲۵۶ دارد و تغییرات آن بین ۰ تا ۲۵۵ است. که دقت بالاتری دارد.
کد متلب جهت تجزیه تصویر به بیتهای مختلف:
از تابع birget برای بدست آوردن مقدار بیت هر سطح استفاده می شود:
نحوه فراخوانی:
binarybit= bitget(pixelvlaue,kth bit); %get kth bit

تصویر اصلی:

۸ سطح مختلف تصویر خاکستری:

بررسی اثر بیتها:

حذف بیت کم ارزش (بیت اول) و بازسازی تصویر

حذف بیت با ارزش و بازسازی تصویر

همانطور که مشاهده می کنید با حذف بیت با ارزش قمست عمده ای از اطلاعات تصویر اصلی حذف می شود ولی این در حالی است که حذف بیت کم ارزش تاثیر چندانی در تصویر بازسازی شده ندارد.

کاربرد bit level slicing:

۱)فشرده سازی اطلاعات

۲)پنهان کردن اطلاعات محرمانه در بیتهای کم ارزش


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

 لینک کانال  

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید

                 

نحوه گسترش هیستوگرام

 

 

 نحوه گسترش هیستوگرام

 

یکی از مزیتهای هیستوگرام، که جلسات قبل در مورد هیتسوگرام و متعادل سازی هیسوگرام صحبت کردیم، این است که میتواند هیستوگرام تصویر را بهبود داد و با این روش می توانیم کیفیت تصویر را بالا ببریم.
به طور کلی دو روش برای بهبود هیستوگرام وجود دارد:
۱)هیستوگرام stretching: در این روش کنتراست تصویر افزایش می یابد.
۲)هیستوگرام equalization: در این روش کنتراست تصویر بهبود می یابد که در جلسات قبل آموزش داده ایم.

 

هیستوگرام:

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

کنتراست تصویر:

کنتراست تصویر، اختلاف بین رنگها و شدت روشنایی می باشد و باعث می شود که اشیاء در تصویر قابل تفیکیک باشند.
به عبارت دیگر تصویری که کنتراست بالایی دارد، اشیاء در آن به راحتی از هم تفکیک می‌شوند.

سمت راست کنتراست بالا، سمت چپ کنتراست پایین

سمت راست کنتراست بالا، سمت چپ کنتراست پایین

 

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

افزایش کنتراست تصویر

افزایش کنتراست تصویر

 

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

 

رابطه افزایش کنتراست تصویر:

Capture3

که bpp تعداد بیتهای استفاده شده برای نمایش می باشد. در تصویر خاکستری از ۸ بیت استفاده می شود. که ۲ به توان ۸ برابر است با ۲۵۶٫

کد متلب مربوط به این بخش در کانال تلگرام قرار داده شده است.

نتیجه هیستوگرام strecthing:

photo_2017-06-21_14-28-12

 

Capture

مثال مورد نظر در متلب شبیه سازی شده و توضیحات مربوط به کد متلب در کانال تلگراممون قرار داده شده است که میتوانیدبصورت رایگان دانلود کنید.


 

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

 لینک کانال  

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید

 بهبود تصویر با روش های پایه

 تبدیل تصویر خاکستری به باینری با استفاده از روش
ترکیب توابع مورفولوژی با تابع imadjust و im2bw

 

 

مسئله: درتصویر زیر هدف این است که دانه های برنج را از پس زمینه جدا کنیم. (در واقع قصد داریم تصویر را به باینری تبدیل کنیم)

1

 

استراتژی اول:

در تولباکس متلب تابع im2bw برای تبدیل تصویر خاکستری به باینری وجود دارد.

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

 

BW=im2bw(img,level);

Img: تصویر ورودی

Level: سطح آستانه

BW: تصویر خروجی باینری

برای تبدیل تصویر به باینری نیاز است که یک آستانه ای(level) تعریف کنیم تا تابع  im2bw، سطوح شدت روشنایی­ بیشتر از آستانه را به سفید و سطوح شدت روشنایی­ کمتر از آستانه را به سیاه تبدیل کند.

لذا تعیین سطح آستانه نقش تعیین کننده ای در نتیجه تبدیل خواهد داشت!

راه حل: برای تعیین سطح آستانه کلی، در متلب تابعی به نام graythresh است که با استفاده از روش اتسو یک آستانه global برای تصویر تعیین می کند.

level = graythresh(I);

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

کد متلب:

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

و سپس به تصویر باینری تبدیل می کنیم.

clc,

clear,

close all,

I = imread(‘rice.png’);

imshow(I)

level = graythresh(I);

bw = im2bw(I,level);

figure

imshow(bw)

 

تصویر باینری حاصل:

1

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

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

اگر به تصویر اصلی نگاه کنیم متوجه می شویم که پس زمنیه تصویر در قسمتهای بالایی و مرکز تصویر روشن تر از سمت پایینی است!!

 

استراتژی ۲:

قبل از تبدیل تصویر، باید پیش پردازشی روی تصویر انجام دهیم تا تصویر شدت روشنایی مطلوبی برای تبدیل به باینری را داشته باشد.

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

یادمان باشد که ما از آستانه کلی استفاده کرده ایم و این آستانه در همه جا یکسان عمل می کند و این باعث می شود که قسمتهای پایینی به شکل مطلوبی به باینری تبدیل نشوند!

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

از روشهای دیگه می توان تعیین سطح آستانه بصورت محلی(local) را ذکر کرد. اگر تبدیلات بصورت محلی انجام شوند، تصویر به خوبی به باینری تبدیل خواهد شد.

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

کد متلب:

ابتدا پس زمینه تصویر را با استفاده از توابع مورفولوژی تقریب می زنیم و سپس از تصویر اصلی کم می کنیم.

str=strel(‘disk’,15);

background=imerode(I,str);

1

I2 = I – background;

imshow(I2)

تصویر خروجی:

1

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

لذا با استفاده از تابع imadjust شدت روشنایی تصویر را بهبود می دهیم.

  • قبلا نحوه استفاده از این تابع توضیح داده شده است.

کد متلب برا بهبود تصویر:

I3 = imadjust(I2);

figure

imshow(I3);

تصویر خروجی:

1

حال تابع im2bw را به تصویر اعمال می کنیم.

تصویر خروجی:

1

تصویر به خوبی به باینری تبدیل شده است.

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

باید این نقاط حذف شوند تا در پردازش های بعدی در نیتجه تاثیری نداشته باشند>

در تولباکس توابع مورفولوژی متلب، تابعی به نام bwareaopen  برای حذف objectهای کوچک باینری وجود دارد.

نحوه استفاده :

BW2 = bwareaopen(BW,P);

Bw: تصویر باینری ورودی

BW2: تصویر باینری خروجی

P: تعداد پیکسل

این تابع تمام objectهایی که تعداد پیکسل کمتری از p داشته باشند را حذف می کند.

P را ما ۱۰ در نظر می گیریم.

کد متلب:

bw = bwareaopen(bw, 10);

figure

imshow(bw)

تصویر باینری نهایی:

1

همانطور که ملاحظه می کنید نقاط کوچک در تصویر قبلی حذف شدند.

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

موفق باشید…

محمد نوری زاده چرلو


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

 لینک کانال  

سوالات و دیدگاه خود را درباره ی این پست با ما درمیان بگذارید