شبیه سازی جایگذاری و همپوشانی تصویر در تصویر در متلب
شبیه سازی جایگذاری و همپوشانی تصویر در تصویر در متلب :پروژه متلب
پروژه متلب : در این پروژه با کمک روش overlaping و روش همپوشانی میتوانید دو تصویر را در هم ادغام کرد
یکی از مهم ترین و حیاتی ترین حسگرهایی که خداوند در بدن ما انسان ها تعبیه کرده است چشم میباشد.ولی امروزه با توجه به پیشرفت های شایان توجه در علم پردازندهایی در روبات ها و سیستم های کنترلی درست شده که میتوانیم از دوربین به عنوان یک چشم مصنوعی استفاده کنیم.
پردازش تصویر در علوم و فنون مختلف کاربرد دارد که میتوان کاربرد در رباتیک,سیستم های دفاعی, مهندسی پزشکی,کنترل صنعتی, پزشکیو گرافیک کامپیوتری را نام برد.در سیستم های دفاعی برای یافتن هدف و یا با رهگیری یک هدف متحرک پردازش تصویر یکی از قابل اعتماد ترین روش می باشد.تشخیص نوع بیماری نیز رایج ترین کاربرد پردازش تصاویر پزشکی است
یکی از معروفترین برنامه های مهندسی که در تمامی زمینه ها از همه صنایع مانند هواپیما سازی گرفته تا ماشین سازی و علوم پزشکی مورد استفاده قرار میگیرد متلب می باشد
بطور کلی تصاویر را میتوان به صورت یک تابع دو بعدی نشان دادf(x,y)که در آنf شدت روشنایی تصویر در نقاط x,y می باشد.به شدت روشنایی مونوکروم سطح خاکستری میگویند. تصاویر رنگی از تعدادی تصویر دو بعدی تشکیل میشود اگر مقدار های x,yبه صورت گسسته و محدود باشد تصویر را دیجیتالی گویند.دیجیتالی کردن مقادیر x,y را سمپلینگ و دیجیتالی کردن f(x,y) را کوانتیزیشن گویند.
پروژه متلب برای نمایش یک تصویر m*n از یک آرایه ی دو بعدی که m سطر و nستون دارد استفاده میکنیم.مقدار هر عنصر از آرایه شدت روشنایی تصویر در آن نقطه است.
پردازش تصویر در متلب:
خواندن تصویر در محیط متلب با استفاده از تابع imread و نمایش آن توسط تابع imshow صورت میپذیرد. به عنوان مثال دستور زیر تصویر را خوانده و ماتریس مربوط به تصویر را در اختیار ما قرار می دهد:
I1=imread(‘im1.jpg’);
figure(1)
imshow(I1)
تصویر خاکستری:
پروژه متلب همانطور که میدانیم سه رنگ قرمز , سبز و آبی سه رنگ اصلی میباشند که از ترکیب این سه رنگ میتوان ۱۶۵۸۱۳۷۵ رنگ متفاوت تولید کرد. این مدل رنگ در گرافیک کامپیوتری با نام RGB شناخته می شود در بین انواع مدل های رنگ GRAYSCALE از اهمیت بالایی برخوردار است زیرا در بیشتر کاربردها به رنگ خاکستری بسنده میکنیم.این تصویر از سه ماتریس تشکیل میشود که هر یک از آن مقداری رنگ قرمز و آبی و سبز را دارد البته به شرطی رنگ خاکستری را خواهیم داشت که از هر رنگ به مقدار مساوی داشته باشیم.نمایش تصویر بر روی صفحه نمایش نیز از ترکیب مقادیر درایه های متناظر در سه ماتریس انجام می پذیرد.در متلب برای خاکستری کردن یک تصویر از تابع rgb2gray استفاده میکنیم مثال زیر یک تصویر رنگی را خوانده و آن را به خاکستری تبدیل میکند.
I1=imread(‘im1.jpg’);
figure(1)پروژه متلب
imshow(I1)
I2=rgb2gray(I1);
figure
imshow(I2)
تفریق دو تصویر:
پروژه متلب منظور از تفریق دو تصویر کم کردن شدت روشنایی پیکسل های متناظر دو تصویر است.به عنوان مثال اگر در پزشکی بخواهند تغییرات مغز افرادی را که مبتلا به آلزایمر شده اند را بررسی کنند از دو تصویر مغز سالم و مغز فرد بیمار استفاده میکنند و با اعمال عملگر فوق بر روی دو تصویر نقاطی از مغز که در آن نقاط مغز دچار تغییرات شده است را مشخص میکنند.
پروژه متلب هنگام تفریق مقادیر پیکسل ها مقادیر منفی را به مقدار صفر تبدیل میکنیم.از کاربردهای دیگر تفریق دو تصویر در شناسایی حرکت در دوربین های مدار بسته است هنگامی حرکت رخ میدهد که در بین دو فریم متوالی گرفته شده از دوربین اختلاف وجود داشته باشد . برای محاسبه این اختلاف از عملگر تفریق استفاده میکنیم.در متلب برای تفریق دو تصویر هم اندازه از تابع imsubtract استفاده میکنیم.به عنوان مثال دستورات زیر دو تصویر را می خواند و حاصل را تفریف میکند.
I1=imread(‘im4.jpg’);
figure(1)
imshow(I1)
I2=imread(‘im5.jpg’);
figure(2)
imshow(I2)
I3=I1-I2;
figure(3)
imshow(I3)
I4=imsubtract(I1,I2);
figure(4)
imshow(I4)
جمع دو تصویر:
پروژه متلب منظور از جمع دو تصویر جمع کردن شدت روشنایی پیکسل های متناظر دو تصویر است.از مهم ترین کاربردهای جمع دو تصویر اضافه کردن زمینه پشت به تصویر است.برای این منظور احتیاج به یک تصویر شیئ و یک تصویر پس زمینه داریم با جمع کردن دو تصویر ,تصویری با پس زمینه دلخواه خواهیم داشت.در متلب برای جمع کردن دو تصویر از تابع imadd استفاده میکنیم.
به عنوان مثال مجموعه دستورات زیر دو تصویر را خوانده و با هم جمع میکند.
I1=imread(‘im4.jpg’);
figure(1)
imshow(I1)
I2=imread(‘im5.jpg’);
figure(2)
imshow(I2)
I3=I1+I2;
figure(3)
imshow(I3)
I4=imadd(I1,I2);
figure(4)
imshow(I4)
مکمل کردن تصویر:
همانطور که میدانیم تصاویر سیاه و سفید دو سطح روشنایی دارند ۰و۱ منظور از مکمل کردن تصویر ۱ کردن پیکسل های با مقدار ۰ و ۰ کردن با پیکسل های با مقدار ۱٫ در تصویری که از L سطح روشنایی ([L-1..0])
برای نمایش شدت روشنایی پیکسل ها استفاده میکند مکمل یک پیکسل از فرمول زیر بدست می آید.
Pixel[I,j]=L-1—pixel[I,j]
در متلب برای مکمل کردن از تابع imcomplement استفاده میشود.
میانگین گیری از تصویر:
پروژه متلب اگر چند تصویر داشته باشیم که روی هر کدام نویزهای مختلف وجود داشته باشدبرای اینکه بتوانیم کیفیت این تصاویر را ارتقائ دهیم از میانگین گیری استفاده میکنیم در این حالت پیکسل های متناظر در همه تصاویر را با هم جمع میکنیم و به تعداد کل تصاویر تقسیم میکنیم.بدیهی است هر چه تعداد تصاویر بیشتر باشد تصویر حاصل از میانگین گیری بیشتر به واقعیت نزدیک خواهد بود.به عنوان مثال مجموعه تصاویر زیر میانگین گیری تصاویر را نشان میدهد.
در متلب برای میانگین گیری از تصویر به صورت زیر عمل میکنیم
im = imread(‘cameraman.tif’);
imshow(im);
im1 = imread(‘rice.png’);
imshow(im1);
imAvg = imadd(im,im1) ./ 2;
imshow(imAvg;
هیستوگرام تصویر:
هیستوگرام تصویر نموداری است که توسط آن تعداد پیکسل های هر سطح روشنایی در تصویر ورودی مشخص می شود. فرض کنید تصویر ورودی یک تصویر Grayscale با ۲۵۶ سطح روشنایی باشد ، بنابراین هریک از پیکسل های تصویر مقداری در بازه [۲۵۵…۰] می توانند داشته باشند.
برای به دست آوردن هیستوگرام تصویر ،کافی است با پیمایش کل پیکسل های تصویر ، تعداد پیکسل های هر سطح روشنایی را محاسبه می کنیم . هیستوگرام نرمال نیز از تقسیم کردن مقادیر هیستوگرام به تعداد کل پیکسل های تصویر به دست می آید. نرمال سازی هیستوگرام موجب می شود که مقادیر هیستوگرام در بازه [۰,۱] قرار گیرند. شکل روبرو تصویری را به همراه هیستوگرام نرمال آن نشان می دهد.
یکی از کاربـردهـای هیستوگرام در فوکوس خودکـار دوربین های دیجیتالی است. بـدین صورت
که لنز دوربین از ابتدا تا انتها حرکت کرده و در هر گام از حرکت خود تصویری از صحنه می گیرد. سپس کنتراست تصویر گرفته شده را با استفاده از هیستوگرام آن محاسبه می کند. پس از آن که لنز به انتهای حرکتی خود رسید، محلی از حرکت لنز که در آن تصویر دارای بیشترین کنتراست خود بوده است، به عنوان محل لنز تعیین می گردد.روش مذکور یکی از ساده ترین روش های فوکوس خودکار دوربین می باشد و همانطور که می توان حدس زد این الگوریتم در صحنه هایی که رنگ تیره و روشن باهم وجود داشته باشد، دچار اشکالاتی خواهد بود و باید تغییراتی در آن اعمال کرد.
تعدیل هیستوگرام:
یکی دیگر از کاربردهای هیستورگرام در افزایش کنتراست تصاویر با کنتراست پایین است. زمانی که می گوییم کنتراست تصویری کم است این بدان معنا است که اختلاف بین کمترین و بیشتری شدت روشنایی تصویر کم است. هم تعدیل سازی هیستوگرام موجب می شود که کنتراست تصویر ورودی تا حد ممکن افزایش یابد. به عنوان مثال شکل زیر تصویری را قبل و بعد از تعدیل سازی هیستوگرام نشان می دهد:
در متلب برای تعدیل سازی هیستوگرام از تابع histeqاستفاده می شود.
I = imread(‘tire.tif’);
J = histeq(I);
figure, imshow(I), figure, imshow(J);
فیلتر کردن تصویر:
در کل پیکسل های تصویر را به دوسته می توان تقسیم کرد: ۱) پیکسل های تیز و ۲) پیکسل های آرام. به عنوان مثال شکل زیر را در نظر بگیرید
پیکسل های زیر ناحیه های قرمز در این تصویر را در دسته پیکسل های تیز قرار می دهیم. پیکسل هایی از تصویر را که اختلاف شدت روشنایی آنها ( مقدار پیکسل ) با پیکسل های همسایه خود زیاد باشند، پیکسل های تیز می نامیم. پیکسل های تیز معمولا یا نشان دهنده لبه های اشیای موجود در تصویر هستند یا نشان دهنده نویزهای یک تصویر هستند و در حالت کلی می توان گفت که جزئیات تصویر با استفاده از پیکسل های تیز استخراج می شوند. به عنوان مثال، تصاویری که هنگام شب توسط موبایل یا یک وب کم گرفته می شوند، دارای نویز معروف فلفل-نمکی هستند. تصویر زیر گویای این مطلب است:
در مقابل پیکسل های تیز، پیکسل های آرام تصویر قرار دارند ( ناحیه های آبی رنگ در مثال فوق ). پیکسل هایی از تصویر که اختلاف شدت روشنایی آنها با پیکسل های همجوار خود کم است، پیکسل های آرام تصویر می نامیم. حال با توجه به این مطالب به شرح فیلتر کردن تصویر می پردازیم. در حوزه مکانی فیلترها به دسته تقسیم می شوند: ۱) فیلترهای آرام کننده ۲)فیلترهای تیزکننده
فیلترهای آرام کننده با اعمال تغییر در شدت روشنایی پیکسل های تیز تصویر موجب تولید تصاویر آرام تری می شود. همچنین این فیلترها تاثیر چندانی بر روی پیکسل های آرام تصویر نمی گذارند. آرام شدن تصویر بدین معنی است که بخشی از جزئیات تصویر از بین می رود. به عنوان مثال اعمال یک فیلتر آرام کننده بر روی یک تصویر نویزدار موجب کاهش شدت نویزها خواهد شد. یک مثال کاربردی ساده از فیلتر های آرام کننده را می توان حذف چین و چروک ها از تصاویر صورت بیان کرد.
ساده ترین فیلترهای آرام کننده تصویر فیلترهای میانگین هستند. یک فیلتر میانگینm*n ماسکی است که مقدار هریک از عناصر آن برابر با عدد ۱(m.n)/ است. به عبارت دیگر مقدار هر پیکسل در تصویر خروجی برابر است با میانگین مقدار شدت روشنایی پیکسل جاری و پیکسل های همسایه پیکسل جاری.
در متلب برای اعمال فیلتر از دستور imfilter استفاده میشود این تابع فیلتر مورد نظر را بر روی تصویر مشخص شده در دیگر پارامتر تابع اعمال کرده و نتیجه را به صورت ماتریسی بر میگرداند.دستور زیر آرام کردن تصویر را با این دستور نشان می دهد.
im = imread(‘rice.png’);
filter = ones(3,3) .* 0.11;
imFilt = imfilter(im,filter);
imshow(im),figure,imshow(imFilt) ;
گسترش باینری مورفولوژیکی:
این عملگر باعث گسترش نقاط ۱ در تصویر می شود. در این عملگر نیز مانند فیلتر کردن از یک ماسک استفاده میکنیم در اینجا به جای ماسک به آن عنصر ساختمانی میگوییم که مقادیر عنصر ساختمانی ۱ یا صفر میتواند باشد.
در متلب برای اعمال مورفولوژیکی گسترش از تابع imdilateاستفاده میشود.
BW1 = imread(‘circbw.tif’);
SE = strel(‘rectangle’,[۵ ۵]);
BW2 = imdilate(BW1,SE);
imshow(BW1),figure,imshow(BW2)
سایش باینری مورفولوژیکی:
این عملگر باعث سایش نقاط ۱ در تصویر میشود.همانند گسترش در عملگر سایش نیز از یک عنصر ساختمانی استفاده میکنیم که مقادیر آن میتواند ۰ یا ۱ باشد.
در متلب عملگر مورفولوژیکی سایش با استفاده از تابع imerodeانجام می پذیرد.
BW1 = imread(‘circbw.tif’);
SE = strel(‘rectangle’,[۵ ۵]);
BW2 = imerode(BW1,SE);
imshow(BW1),figure,imshow(BW2)
بستن و باز کردن باینری مورفولوژیکی:
عملگر بستن باعث میشود تا حفره های کوچک تصویر پر شوند مثلا در شکل زیر به دلیل خشکی ممکن است ترک هایی در اثر انگشت شخص دیده شود که با این عملگر میتوان این ترک ها را پر کرد.
در عملگر باز کردن باعث میشود تا اتصالات باریک تصویر حذف شده و تصویری آرام تر بهه دست آید.
به طور کلی این عملگر نشان می دهد که چگونه می توان با ترکیب دو عملگر باز و بسته کردن نویز ها و اشکالات یک تصویر را برطرف کرد.
در برخی موارد به علت پایین بودن کیفیت تصویر اسکن شده ویا پایین بودن کیفیت کاغذ مورد نظر در برخی از کاراکتر ها با شکستگی در بدنه حرف یا کلمه مواجه هستیم در چنین مواردی می توان برای ارتقای تصویر از عملگر های مورفولوژیکی استفاده کرد.
در متلب برای اعمال عملگرهای مورفولوژیکی باز و بسته کردن به ترتیب از توابع imopenوimcloseاستفاده میکنیم.
originalBW = imread(‘circles.png’);
se = strel(‘disk’,۱۰);
closeBW = imclose(originalBW,se);
imshow(originalBW),figure,imshow(closeBW)
استخراج اسکلت بندی اشیاء:
استخراج اسکلت بندی یک الگو به معنی باریک کردن الگو به نحوی است که شکل کلی الگو از بین نرود. از اینرو اسکلت یک الگو همانند خود الگو باید قابل تشخیص بوده و توسط آن بتوان شکل کلی الگو را حدس زد. بنابراین اسکلت به دست آمده برای یک الگو باید دارای خصوصیات زیر باشد :
- به اندازه کافی باریک باشد
- متصل باشد : یعنی فرآیند اسکلت بندی نباید باعث تکه تکه شدن اسکلت الگو شود زمانی که این دو شرط برقرار شد، الگوریتم اسکلت بندی متوقف می شود. شکل روبرو تصویری را به همراه اسکلت آن نشان می دهد ( اسکلت تصویر همان خطوط به هم پیوسته سفید رنگ داخل تصویر است ).
خروجی متلب :
تصویر اولیه:
تصویر کاور :
تصویر نهایی :
دیدگاه ها