پردازش تصاویر دیجیتال چیست؟
یک تصویر می تواند با یک تابع دو بعدی به صورت f(x,y) تعریف شود که x و y مختصات نقاط در تصویر می باشند. مقدار تابعf در مختصات (x,y) عبارت است از Gray یا سطح Intensity عبارت است از (x ,y) در مختصات f تصویر میباشند. مقدار تابع همگی دارای مقادیر محدود و گسسته باشند ما از تصویر تحت f و مقدار تابع y و x تصویر. زمانی که عنوان یک تصویر دیجیتال یاد میکنیم.در واقع پردازش تصاویر دیجیتال به فرآیند پردازش تصاویر دیجیتال توسط کامپیوترهای دیجیتال اطلاق میشود. توجه کنید که یک تصویر دیجیتال مرکب از تعداد محدودی از نقاط است که هر کدام از این نقاط دارای مکان ومقدار مشخصی هستند. از این نقاط تحت عنوان اجزا یا عناصر تصویر و یا پیکسل نام برده میشود. از واژه پیکسل به صورت گستردهای برای ارجاع به عناصر یک تصویر دیجیتال استفاده میشود.
حس بینایی یکی از پیچیده ترین حسهای پنجگانه میباشد و به همین علت تصاویر نقش مهمی را در درک انسان از محیط اطرافش ایفا میکنند. به هر حال برخلاف انسان که در درک طیف های الکترومغناطیس دارای محدودیت است ماشینهای تصویربرداری کلیه باندهای این طیف را پوشش میدهند (محدوده گستردهای از امواج گاما تا امواج رادیویی). همچنین آنها میتوانند بر روی منابع تصویری که انسان قادر به درک آنها نیست عمل نمایند. از جلمه این تصاویر میتوان به تصاویر فرا صوت، میکروسکوپهای الکترونی و تصاویر تولید شده توسط کامپیوتر اشاره کرد. بنابراین میتوان گفت در پردازش تصاویر دیجیتال با کاربردهای گستردهای در علوم مختلف مواجه خواهیم بود.
در بین مولفان کتب پردازش تصویر هیچ توافقی درباره نقطه پایان پردازش تصاویر دیجیتال و
شروع تحلیل تصاویر و بینایی ماشین وجود ندارد. گاهی اوقات این محدودیت با توجه به تعریفی که برای پردازش تصاویر در نظر گرفته میشود، تعیین میگردد. اما به اعتقاد ما این محدودیتها تنها یک یک تصویر Intensity مرز مصنوعی و فرضی میباشند. به عنوان مثال تحت این تعریف محاسبه میانگین یک عملیات پردازش تصویری نخواهد بود. به عبارت دیگر، زمینه های دیگری نظیر بینایی ماشین که هدف آنها استفاده از کامپیوتر برای شبیه سازی کردن بینایی انسان است، شامل فرایند یادگیری بر مبنای ورودیهای تصویری هستند. در واقع این زمینه شاخهای از هوش مصنوعی (AI) می باشد که هدف آن شبیهسازی هوش انسان است. علم هوش مصنوعی در مراحل اولیه از توسعه خود است و پیشرفت آن نسبتاً کند میباشد. تحلیل تصاویر (که درک تصویر نیز نامیده میشود) را میتوان چیزی بین پردازش تصویر و بینایی ماشین تعریف نمود.
در واقع مرزهای مشخصی بین پردازش تصویر در یک سمت و بینایی ماشین در سمت دیگر وجود ندارد. اما به هر حال یک الگوی مناسب در این راستا توجه به سه نوع فرآیند محاسباتی در این زمینه است: فرآیندهای سطح پایین، متوسط و بالا.
فرآیندهای سطح پایین شامل عملیات های اولیه مثل پردازش تصویر برای کاهش نویز، تغییر کنتراست و برجسته سازی تصویر می شوند. مشخصه مهم فرآیندهای سطح پایین این است که ورودی، و خروجی همه آنها تصویر است. فرآیندهای سطح متوسط شامل عملیاتهای نظیر قطعهبندی تصویر توصیف اشیا در راستای تسهیل پردازش تصاویر و طبقه بندی (تشخیص) اشیا منفرد میشود. مشخصه فرایندهای سطح متوسط این است که ورودی آنها تصویر و خروجی آنها خصوصیات استخراج شده از تصویر (مثل لبه ها، کانتورها و مشخصه اشیا) میباشند. سرانجام فرآیندهای سطح بالا شامل " ایجاد حس " از شئ تشخیص داده شده (مانند آنچه در تحلیل تصویر داشتیم) می باشد.
با مطالعه مقالات و کتب متوجه یک همپوشانی منطقی بین پردازش و تحلیل تصاویر در تشخیص اشیا و نواحی در یک تصویر میشویم. بنابراین، چیزی که در این کتاب از آن تحتعنوان پردازش تصاویر دیجیتالی یاد میشود شامل فرآیندهاست که ورودی و خروجی آنها تصویر بوده و علاوه بر آن خصوصیات خاصی را از تصویر استخراج میکنند. برای روشنتر شدن این مفاهیم به مثالی در ارتباط با تحلیل خودکار متن اشاره میکنیم. این فرآیند شامل عملیات دریافت تصویر مربوط به متن، انجام پردازش اولیه روی تصویر، استخراج شاخصهای موردنظر، توصیف شاخصها به فرم مناسب برای پردازش کامپیوتری و در نهایت تشخیص حروف و کلمات میشود. کلیه این فرآیندها در حوزه پردازش تصاویر دیجیتال انجام میشوند.این در حالی است که ایجاد یک حس در مورد محتوای متن مربوط به تحلیل تصویر و یا حتی بینایی کامپیوتر میشود.
مقدمه ای بر MATLAB و جعبه ابزار پردازش تصویر
یک زبان برنامه نویسی با کارایی بسیار بالا برای محاسبات تکنیکی میباشد. این نرم افزار MATLAB امکان محاسبات، برنامه نویسی و تجسم را در محیطی ساده یکپارچه ساخته است. در این نرمافزار را MATLAB مسائل و راه حل آنها در قالب علائم ریاضی تعریف میشوند. استفاده های معمول از میتوان در موارد زیر خلاصه کرد:
ریاضیات و محاسبات ×
توسعه الگوریتمها ×
دریافت داده ×
مدلسازی، شبیه سازی و ساخت الگوهای اولیه ×
تحلیل داده ها، اکتشاف داده ها و تجسم داده ها ×
گرافیک مهندسی و علمی ×
توسعه برنامههای کاربردی با رابط گرافیکی ×
MATLAB دارای یک سیستم تعاملی است که داده مبنا در آن آرایه می باشد و نیاز به تعیین ابعاد آرایه درتعریف آنها وجود ندارد. این مسئله به فرموله سازی راه حل مسائل محاسباتی کمک زیادی میکند به خصوص مسائلی که در آنها از محاسبات ماتریسی استفاده میشود. به این ترتیب در این زبان برنامه های تخصصی را Fortran و C میتوان در زمان کمتری نسبت به زبان های دیگری مثل پیاده سازی نمود.
نام MATLAB از روی MATrix LABoratory یا همان آزمایشگاه ماتریس برگرفته شده است. این نرم افزار در اصل برای دسترسی آسان به نرم افزارهای ماتریسی توسعه یافته در پروژه های EISPACK و LINPACK طراحی شده اند. امروزه در MATLAB کتابخانه هایی نظیر LAPACK و BLAS طراحی شده اند که نقش عمده ای را در گسترش محاسبات ماتریسی ایفا می کنند.
در محیط های دانشگاهی MATLAB یک ابزار محاسباتی استاندارد برای دروس پیشرفته ریاضی، مهندسی و علوم میباشد. در صنعت MATLAB یک ابزار محاسباتی برای پژوهش، توسعه و تحلیل از جعبه ابزارهای متعددی تشکیل شده است. جعبه ابزار پردازش تصویر مجموعه ای از توابع دیجیتال MATLAB است که قابلیتهای این نرم افزار را برای حل مسائل مربوط به پردازش تصاویر دیجیتال افزایش میدهند. سایر جعبه ابزارهایی که در کنار این جعبه ابزار مورد استفاده قرار میگیرند . عبارتند از: پردازش سیگنال، شبکههای عصبی، منطق فازی و جعبه ابزار ویولت
2-1 تصاویر دیجیتال
یک تصویر به صورت یک تابع دوبعدی f(x,y) تعریف میشود که y,x مختصات فضایی و مقدار f و به ازای هر y,x ، Intensity تصویر در آن نقطه نامیده میشود معمولا اًز لغت سطح Gray
در ارتباط با Intensity ، تصاویر تکرنگ استفاده میشود. تصاویر رنگی از ترکیب تصاویر دوبعدی تشکیل میشوند. به عنوان تصویر رنگی از سه تصویر (قرمز، سبز و آبی) تشکیل میشود به همین ،RGB مثال در سیستم رنگی دلیل است که بسیاری از تکنیکهای پردازش تصاویر تکرنگ به تصاویر رنگی و تکتک اجزای آن ها قابل تعمیم هستند. درباره تصاویر رنگی در فصل 6 به تفصیل صحبت خواهیم کرد.
یک تصویر ممکن است در ارتباط با مختصات y,x و یا مقادیر نقاط حالت پیوسته داشته باشد. تبدیل چنین تصاویری به فرم دیجیتال نیازمند تبدیل مختصات و مقادیر نقاط به فرم عددی و گسسته می باشد. دیجیتال سازی مختصات x, y تحت عنوان نمونه برداری و دیجیتال سازی تصاویر Intensity تحت عنوان تدریج شناخته می شوند. بنابراین اگر مقادیر Intensity و y, x متناهی و گسسته باشند ما از تصویر تحت عنوان تصویر دیجیتال یاد میکنیم.
2-1-1 سیستم مختصات
نتیجه عملیات نمونه برداری و تدریج یک ماتریس از مقادیر حقیقی میباشد. ما در این کتاب از دو روش مختلف برای ارائه تصاویر دیجیتال استفاده میکنیم. فرض کنید تصویر f(x,y) نمونه برداری شده باشد بنابراین حاصل کار دارای M سطر و N ستون خواهد بود. یعنی اندازه تصویر M×N است. مقادیر مختصات y, x گسسته است استفاده می کنیم. در بسیاری از کتب پردازش تصویر مبدا مختصات در تصویر نقطه (x,y)=) 0,0(در نظر گرفته میشود. و مختصات بعد از مبدا (x,y)=( 0,1) می باشد. گسسته بسیار مهم است که به یاد داشته باشید نمونه دوم از تصویر در سطر اول و مختصات ( 0,1 ) وجود دارد. در شکل (b) (2-1) این سیستم مختصاتی نشان داده شده است. توجه شود که محدوده x بین 0 تا M- 1 و محدوده y بین 0 تا N- 1 است.
سیستم مختصاتی که در جعبه ابزار پردازش تصویر MATLAB به کار گرفته میشود با سیستم بیان شده در پاراگراف قبل متفاوت است. اولاً در این جعبه ابزار بهجای استفاده از (x,y) از (r,c) برای نمایش سطر و ستون استفاده میشود. تفاوت دیگر این است که مبدا مختصات (1,1) = (r,c) در نظر گرفته می شود. بنابراین محدوده r بین 1وM و محدوده c بین 1تا N خواهد بود.
البته در این جعبه ابزار به ندرت از سیستم مختصات متفاوتی تحت عنوان مختصات فضایی استفاده شده که در آن x معرف ستون و y معرف سطر میباشد. در واقع از y, x به صورت عکس استفاده می شود. به جز در موارد بسیار معدود ما از این سیستم مختصاتی در این کتاب استفاده نمی کنیم.
ماتریس تصاویر
سیستم مختصاتی که نشان داده شده منجر به ارائه تصویر دیجیتال در قالب تابع f(x,y) به صورت زیر میشود:
سمت راست تساوی بالا معرف یک تصویر دیجیتالی با تعریف ارائه شده می باشد. هر عضو از این آرایه یک جزء تصویر، یک جزء عکس یا پیکسل نامیده میشود. از این پس در این کتاب از واژه های تصویر و پیکسل برای اشاره به تصویر دیجیتال و اجزای آن استفاده میشود.
همچنین یک تصویر دیجیتال در نرم افزار MATLAB در قالب ماتریس زیر ارائه میگردد:
که f(1,1) معادل با f(0,0) از نمایش قبلی می باشد. تفاوت این دو روش در انتقال مبدا است. به این ترتیب f(p,q) معرف جزئی از تصویر در سطر p و ستون q می باشد. به عنوان مثال (6,2) f معرف عضو سطر 6 و ستون 2 از ماتریس f است. عموماً ما از حروف N,M برای اشاره به تعداد سطرها و ستون های یک ماتریس استفاده می کنیم. یک ماتریس 1 ×N یک بردار سطری و یک ماتریس M× 1 یک بردار ستونی نامیده می شود.
در MATLAB میتوان یک ماتریس را با نامهایی نظیر real_array یا RGB,a,A و … نامگذاری و ذخیره نمود. نام متغیرها حتماً باید با یکی از حروف آغاز شده و میتواند شامل حروف اعداد و یا علائم دیگر باشد.
2-2 خواندن تصاویر
تصاویر با استفاده از تابع imread در محیط MATLAB خوانده میشود. نحوه استفاده از این تابع به صورت زیر است:
تابع imread نام فایل را به عنوان ورودی دریافت می کند. به عنوان مثال شما می توانید از imread به صورت زیر روی خط فرمان استفاده کنید:
f= imread('chestxray.jpg' ):
به این ترتیب تصویر chestxray با فرمت JPEG از روی دیسک خوانده شده در f ذخیره می شود. توجه شود که برای سازمان دهی نام فایل در قالب یک رشته از علامت ' استفاده شده است. استفاده از علامت سمی کولون ; در پایان دستورات MATLAB سبب می شود تا نتایج حاصل از اجرای دستور روی خط فرمان نمایش داده نشود.همچنین سمبل << نشان دهنده ابتدای خط فرمان می باشد.
زمانیکه در imread مسیر فایل مشخص نشود (مانند دستور بالا) imread سعی می کند فایل مربوطه را از فهرست جاری MATLAB بخواند و در صورت نا موفق بودن به سراغ مسیرهای جستجوی MATLAB می رود. ساده ترین راه برای خواندن یک تصویر تعیین مسیر کامل آن در دستور imread به صورت زیر می باشد:
f= imread('D:myimageschestxray.jpg') l
این دستورتصویر مربوطه از پوشه myimage از درایو D می خواند. همچنین دستور:
f=imread('.myimageschestxray.jpg')
تصویر را از پوشه myimage از فهرست کاری جاری می خواند.
لیست فرمت های تصویری و گرافیکی که توسط تابع imread و imwrite حمایت می شوند در جدول 1-2 آمده است.
تابع size تعداد سطرها و ستون های ماتریس یک تصویر را به عنوان خروجی بر می گرداند:
در برنامه نویسی این تابع برای تشخیص تعداد سطرها و ستون های یک ماتریس بسیار مفید می باشد:
کد بالا تعداد سطرها (M) و ستون های (N) از ماتریس f را به عنوان خروجی بر می گرداند.
تابع whos سایر اطلاعات اضافی درباره آرایه را در اختیار کاربر قرار می دهد. به عنوان مثال اجرای دستور:
منجر به نتایج زیر می گردد:
Uint8 معرف یکی از کلاس های داده ای MATLAB می باشد که به شرح آنها خواهیم پرداخت.
نمایش تصاویر
برای نمایش تصاویر در میز کار MATLAB از تابع imshow به صورت زیر استفاده می شود:
که f آرایه مربوط به تصویر G تعداد سطوح Intensity در راستای نمایش تصویر می باشد. با حذف G از مقدار پیش فرض آن یعنی 256 استفاده می شود. همچنین با استفاده از دستور:
کلیه مقادیر کمتر یا مساوی low به رنگ سیاه و کلیه مقادیر بیشتر و مساوی high به رنگ سفید نمایش داده می شوند. در نهایت استفاده از دستور:
مقدار low برابر حداقل مقدار موجود در آرایه f و مقدار high برابر حداکثر مقدار آرایه f قرار داده می شود. این فرم استفاده از توابع imshow می تواند در مورد تصاویری با محدوده پویا پایین و یا تصاویری که پیکسل های آنها دارای مقادیر مثبت و منفی هستند مفید واقع شود.
از توابع pixval برای نمایش مقدار یک پیکسل استفاده می شود. با اجرای این تابع نشانگر ماوس در روی پیکسل مربوطه قرار گرفته و مقادیر مربوطه به پیکسل در پایین تصویر نمایش داده می شود. با تغییر مکان نشانگر ماوس مقادیر تغییر می کنند. زمانی که با تصاویر رنگی کار می شود سه مقدار برای هر پیکسل که معرف شدت رنگ های قرمز، آبی و سبز است نمایش داده می شود. با فشار دادن دکمه چپ ماوس و نگه داشتن آن فاصله اقلیدسی مکان نشانگر تا مکان اولیه آن محاسبه و نمایش داده می شود.
مثال 1-2: در این مثال ابتدا تصویری با نان rose_s12.tif از روی دیسک خوانده می شود و پس از استخراج اطلاعاتی در باره آن با دستور imshow به نمایش در می آید.
ذخیره تصویر روی دیسک
با استفاده از تابع imwrite می توان یک تصویر را روی دیسک ذخیره کرد.
با استفاده از تابع imwrite می توان یک تصویر را روی دیسک ذخیره کرد. نحوه استفاده از این دستور به صورت زیر است:
imwrite(f,'filename')
در رشته مربوط به نام فایل باید پسوند مربوط به نوع فایل مورد نظر ذکر شود.
البته می توان پسوند فایل را به عنوان پارامتر سوم به تابع imwrite فرستاد. به عنوان مثال دستور زیر تصویر f را در قالب فایل patient10_ru1.tif ذخیره می کند.
کلاس های داده ای
از آنجا که ما در پردازش تصاویر با مختصات های بالا سروکار داریم، MATLAB تعداد پیکسل ها را در حد integer محدود نکرده است. لیست کلاس های داده ای که توسط MATLAB و IPT برای مقادیر پیکسل ها حمایت می شوند، آمده است. هشت کلاس اول کلاس های عددی می باشند. نوع داده نهم char می باشد که مقادیر رشته ای را در خود جای می دهد و در نهایت آخریننوع داده مربوط به داده های منطقی است.
همه محاسبات عددی در MATLAB با استفاده از کلاس داده double انجام می شود. بنابراین می توان این کلاس داده را یک کلاس داده مرسوم در کاربردهای پردازش تصویر دانست. دو کلاس داده logical و uint8 در این کتاب مورد توجه می باشند. با کلاس داده uint8 به خصوص در مواردی که داده ها از روی دیسک خوانده می شوند، مواجه می شویم. بسیاری از توابع IPT کلیه انواع داده های موجودرا حمایت می کنند.
نوع داده double فضای 8 بایت، نوع داده uint8 و int8 فضای 1 بایت، نوع داده uint16،unt16 فضای 2 بایت و نوع داده uint32,int32 فضای 4 بایت را روی حافظه اشغال می کنند.
داده های char کاراکترها را در قالب Unicode در خود نگاه می دارند. یک رشته یک آرایه 1*n از کاراکترها می باشد. آرایه های منطقی تنها محتوی مقادیر 0و1 بوده و با استفاده از تابع logical و یا با استفاده از عملگرهای رابطه ای قابل تعریف است.
انواع تصاویر
این جعبه ابزار از 4 نوع تصویر پشتیبانی می کند:
-تصاویر Intensity
-تصاویر دودویی
تصاویر اندیسی
تصاویر RGB
کلیه عملیات های مربوط به پردازش تصاویر تک رنگ با استفاده از تصاویر دودویی و یا intensity انجام می شود. بنابراین ابتدا به این نوع تصاویر خواهیم پرداخت.
تصاویر دودویی، مجموعه ها و عملگرهای منطقی
زبان و تئوری ریاضیاتی مورفولوژی اغلب دارای یک دیدگاه دوگانه نسبت به تصاویر دودویی می باشند. در ادامه این کتاب می توان به یک تصویر دودویی به عنوان یک تابع دو مقداری از x و y نگاه کرد.تئوری مورفولوژی به تصویر دودویی به عنوان مجموعه ای از پیکسل های پیش زمینه (با مقدار 1) نگاه می کند که اعضای آن عضوی از Z2 می باشند.عملیات هایی نظیر اجتماع و اشتراک را می توان به صورت مستقیم بر روی تصاویر دودویی اعمال نمود. به عنوان مثال اگر A و B دو تصویر دودویی با شند آنگاه نیز یک تصویر دودویی خواهد بود که هر پیکسل از C در صورتی 1 خواهد بودکه پیکسل متناظر در A یا B و یا هر دو 1 (پیش زمینه) باشد. در نگاه اول می توان C را به عنوان تابعی به صورت زیر تعریف نمود:
عملیات های مجموعه ای تعریف شده را می توان با استفاده از عملگرهای منطقی MATLAB روی تصاویر دودویی اعمال نمود. عملگرهای منظقی MATLAB در جدول 1-9 معرفی شده اند.
به عنوان یک مثال ساده، شکل 3-9 نتیجه اعمال چند عملگر منطقی را بر روی دو تصویر دودویی حاوی متن نشان می دهد ( طبق روال مرسوم در IPT پیکسل های پیش زمینه (با مقدار 1) به رنگ سفید نمایش داده شده اند). تصویر شکل (d) 3-9 حاصل اجتماع تصاویر UTK و GT می باشد. این تصویر حاوی همه پیکسل های پیش زمینه در دو تصویر با مقدار 1 است که بین دو تصویر مشترک می باشند. در نهایت تفاضل دو مجموعه A و B در شکل (f) 3-9 نشان داده است.
تابع strel
تابع strel از IPT برای ساخت اعضای ساختاری با شکل ها و اندازه های مختلف مورد استفاده قرار می گیرد. نحوه فراخوانی این تابع به صورت زیر است.
که shape یک رشته می باشد که شکل مطلوب عضو ساختاری را مشخص می کند و parameters یک لیست از پارامترهایی است که اطلاعاتی را در مورد شکل عضو ساختاری (مثل اندازه آن) تعیین می کند. به عنوان مثال strel(diamond,5) یک عضو ساختاری لوزی شکل با اندازه +5 و -5 پیکسل در راستای افقی و عمودی بر می گرداند. جدول 2-9 برخی از شکل هایی که strel قابلیت تولید آنها را دارد، نشان می دهد.
علاوه بر آن در راستای تسهیل در تولید اعضای ساختاری با شکل های رایج، strel دارای قابلیت تولید اعضای ساختاری در فرم تجزیه شده در راستای افزایش سرعت فرآیند Dilation استفاده می کند. مثال زیر نحوه عملکرد strel را در ارتباط با اعضای ساختاری تجزیه شده نشان می دهد.
Erosion
عملگر Erosion برای کوتاه کردن و یا نازک کردن اشیا در تصویر دودویی به کار می رود. مانند آن چه در مورد Dilation داشتیم رفتار و نحوه ی عملکرد Erosion توسط عضو ساختاری تعیین می گردد. شکل 7-9 نحوه ی انجام فرآیند Erosion را نشان می دهد. شکل 7-9 مشابه به شکل 4-9 می باشد. شکل 7-9 نشان دهنده ی عضو ساختاری مربوطه است. عضو ساختاری در این مورد یک خط عمودی کوچک می باشد. شکل 7-9 به صورت گرافیکی فرآیند Erosion را تحت انتقال عضو ساختاری در محدوده ی تصویر نشان می دهد. به نحوه عملکرد عضو ساختاری روی شی در شکل 7-9 توجه نمایید. تصویر خروجی فرآیند Erosion در شکل 7-9 نشان داده شده است.
ئر این تصویر در هر مکانی که مبدا عضو ساختاری با یک مقدار 1 از تصویر ورودی هم پوشانی داشته باشد مقدار پیکسل متناظر 1 باقی مانده می ماند.
20