آموزش MATLAB: فصل سیزدهم، پردازش تصویر
اسلاید 1: فصل سیزدهمپردازش تصویر
اسلاید 2: 13-1-مقدمهدر متلب تصاوير بصورت ماتريسهاي دو، سه و يا چهاربعدي تعريف ميشوند.کيفيت تصوير: کيفيت تصوير به دو پارامتر يکي دقت ابعادي و ديگري دقت عمقي در هنگام تصويربرداري و يا ذخيرهسازي تصوير بستگي دارد.دقت عمقي(Depth): منظور از دقت عمقي تعداد بيتهايي است که از حافظه کامپيوتر به هر نقطه(پيکسل) از تصوير اختصاص داده ميشود.دقت ابعادي(Resolution): منظور تعداد نقاط نمونهبرداري شده در واحد طول يا عرض تصوير است. دقت ابعادي افقي و عمودي يک تصوير ممکن است متفاوت باشند اما معمولا چنين نيست. واحد دقت ابعادي dpi يا نقطه بر اينچ است.
اسلاید 3: 13-1-مقدمه-ادامه-انواع تصاوير: انواع تصاوير عبارتند از : تصاوير انديسدارتصاوير شدتتصاوير باينريتصاوير RGBتصاوير چندفريميکه در ادامه فصل مفصلا به هريک خواهيم پرداختفرمتهاي گرافيکي: تصاوير با فرمتهاي مختلفي ميتوانند بر روي ديسک ذخيره شوند. مهمترين فرمتهاي گرافيکي در زمان حاضر عبارتند از: PNG، JPG،BMP، TIFF،GIF که تمامي آنها بعلاوه چندين فرمت ديگر توسط متلب پشتيباني ميشوند.
اسلاید 4: 13-2- انواع تصاويرتصاوير شدت(Intensity Image)تصوير شدت يا تصوير سطح خاکستري، به تصويري گفته ميشود که تنها داراي مقادير روشنايي باشد و فاقد خصوصيات رنگ مانند: فام و خلوص باشد. در متلب اين تصاوير توسط ماتريسهاي دو بعدي تعريف ميشوند بطوريکه مقدار هر عنصر از اين ماتريس معرف ميزان روشنايي پيکسل متناظرش در تصوير مربوطه ميباشد. دامنه تغييرات عناصر اين ماتريس ممکن است بين 0 تا 1 و يا بين 0 تا 255 تغيير کند. در حالت اول دادههاي ماتريس از نوع دقت مضاعف و در حالت دوم از نوع uint8 خواهد بود. بجز توابع تعريف شده در جعبهابزار images و بعضي از توابع خود متلب، ساير عمليات رياضي بر روي نوع uint8 در حال حاضر امکانپذير نميباشد. لذا در صورت نياز، اين نوع بايد به نوع دقت مضاعف تبديل شود که ميزان حافظه مورد نياز آن چهار برابر نوع uint8 است.
اسلاید 5: 13-2- انواع تصاوير-ادامهتصاوير شدت-ادامهنمونهاي از يک تصوير شدت:
اسلاید 6: 13-2- انواع تصاوير-ادامهتصاوير انديسشده(Indexed Image)اين تصاوير توسط دو ماتريس زير مشخص ميشوند:ماتريس انديس: ماتريسي است که ابعاد آن برابر با ابعاد تصوير بر حسب پيکسل ميباشد. مقادير اين ماتريس معمولا بين 1 تا 256 تغيير ميکند و مقدار هر درايه از اين ماتريس معرف شماره سطري از ماتريس نقشهرنگ است. ماتريس نقشهرنگ(map): اين ماتريس داراي 3 ستون ميباشد و هر سطر از آن معرف يکي از رنگهاي موجود در تصوير است. بطوريکه عنصر اول هر سطر معرف نسبت اوليه قرمز، عنصر دوم معرف اوليه سبز و عنصر سوم معرف اوليه آبي است.يک تصوير انديسشده بسته به مقادير ماتريس نقشهرنگ، ممکن است رنگي يا سطح خاکستري باشد.
اسلاید 7: 13-2- انواع تصاوير-ادامهتصاوير انديسشده(Indexed Image)-ادامهنمونهاي از يک تصوير انديسشده
اسلاید 8: 13-2- انواع تصاوير-ادامهتصاوير باينرييک تصوير باينري به تصويري گفته ميشود که هر پيکسل از آن تنها بتواند داراي يکي از دو مقدار ممکن (معمولا 0 و 1) باشد.در متلب اين تصاوير ميتوانند با فرمت double و يا uint8 ذخيرهسازي شوند. اما بطور پيشفرض متلب فرمت uint8 را بکار خواهد برد که مقادير آن ميتواند، 0 و 1 ويا 0و 255 باشد.
اسلاید 9: 13-2- انواع تصاوير-ادامهتصاوير RGBيک تصوير RGB يا true color به تصويري گفته ميشود که به ازاي هر پيکسل از آن سه عدد بين 0 تا 255 در حافظه کامپيوتر ذخيره شده باشد که اين اعداد معرف شدت هر يک از اوليههاي قرمز، سبز و آبي ميباشد. مثلا براي يک پيکسل سفيد سه عدد 255 و براي يک پيکسل سبز سه عدد 0، 255 و 0 به ترتيب معرف شدت اوليههاي قرمز، سبز و آبي ايجاد خواهد شد. بنابراين براي هر نقطه از تصوير بيش از 16 ميليون(256*256*256) حالت رنگي مختلف امکانپذير خواهد بود. واضح است که يک تصوير rgb سه برابر يک تصوير شدت هماندازه با آن حافظه کامپيوتر را اشغال خواهد کرد و به همان نسبت هم به زمان پردازش بيشتري نياز دارد. در متلب هر تصوير rgb بصورت يک ماتريس سهبعدي تعريف ميشود که در بعد سوم آن مقادير اوليههاي رنگي هر نقطه (r,g,b) ذخيره ميشوند. عناصر اين ماتريس ممکن است بين 0 تا 1 (double)و يا بين 0 تا 255 (uint8)تغيير کنددقت شود که يک تصوير rgb لزوما رنگي نيست اما ميتواند رنگي باشد.
اسلاید 10: 13-2- انواع تصاوير-ادامهتصاوير RGB-ادامهيک تصوير rgb نمونه
اسلاید 11: 13-3- خواندن تصاوير-تابع imreadبه منظور خواندن يک فايل گرافيکي در متلب ميتوان از تابع Imread استفاده کرد. بسته به نوع تصوير فرمت کلي استفاده از اين تابع به يکي از صورتهاي زير است:براي تصاوير شدت، rgb و باينري: m=imread(‘filename’)براي تصاوير انديسشده:[m,map]=imread(‘filename’) که در رابطه اخير m ماتريس انديس و map ماتريس نقشهرنگ خواهد بود.نکته: تابع imread را با تعداد آرگومانهاي بيشتري نيز ميتوان فراخواني کرد. جهت اطلاع بيشتر به راهنماي متلب رجوع کنيد.
اسلاید 12: 13-4- نمايش تصاوير-تابع imshowتابع imshow ميتوان يک تصوير خوانده شده و يا مستقيما يک فايل تصويري را نمايش دهد:imshow(m);rgbتصوير شدت يا imshow(I , map)تصوير انديسشدهimshow(‘filename’);فايل گرافيکيمثال:>> imshow(‘fabric.png’)يا:>> m=imread(‘fabric.png’);imshow(m)
اسلاید 13: 13-4- نمايش تصاوير-تابع imshow-ادامه
اسلاید 14: 13-4- نمايش تصاوير-تابع imtoolتابع دیگری که برای نمایش تصاویر در متلب وجود دارد تابع imtool است. روش استفاده از این تابع مانند تابع imshow است اما قابلیتهای بیشتری را در اختیار میگذارد:>> imshow(‘fabric.png’)
اسلاید 15: 13-5- نوشتن فايلهاي گرافيکي-imwriteبراي ايجاد يک فايل گرافيکي ميتوان از تابع imwrite استفاده کرد. اين تابع بسته به نوع تصوير ميتواند به يکي از روشهاي زير بکار برده شود:imwrite(m , ‘filename’);imwrite(X , map , ‘filename’);
اسلاید 16: 13-6-تعيين مشخصات يک فايل گرافيکي-تابع imfinfoاين تابع اطلاعاتي از فايل گرافيکي مانند: ابعاد تصوير، دقت ابعادي و دقت عمقي، نحوه فشردهسازي و... را ارائه ميدهد. اين تابع بصورت زير بکار برده ميشود:info=imfinfo(‘filename’)
اسلاید 17: 13-7- تبديل تصاوير با استفاده از توابع زير ميتوان نوع يک تصوير را تغيير داد:bw=im2bw(m , level)bw=im2bw(x , map , level)level سطح آستانه ميباشد.(که بايد بين 0 تا 1 باشد)m=ind2gray(x , map);[x,map]=gray2ind(m);[x,map]=rgb2ind(m);m=ind2rgb(x , map);m=rgb2gray(m);براي کسب اطلاعات بيشتر به راهنماي متلب مراجعه کنيد.
اسلاید 18: 13-8- عمليات رياضي بر روي تصاويردر صورتيکه نوع دادههاي تصوير از نوع uint8 باشد امکان بکاربردن عملگرهاي رياضي و بسياري از توابع متلب بر روي آنها وجود نخواهد داشت. بدينمنظور پيش از انجام عمليات رياضي بايد نوع دادهها را به double تبديل کرد. پس از انجام عمليات رياضي در صورت نياز ميتوان نوع متغير را به uint8 بازگرداند:m=double(m);m=im2uint8(m);
اسلاید 19: 13-9- عمليات هندسي بر روي تصاويرمنظور از عمليات هندسي هرگونه تغيير در ابعاد تصوير و يا شکل هندسي آن ميباشد. سه نوع عمليات هندسي در متلب بر روي تصاوير امکانپذير است:تغيير ابعاد تصوير: تابع imresizeچرخش تصوير: تابع imrotateبرش تصوير: تابع imcropکه در ادامه به هريک خواهيم پرداخت.
اسلاید 20: 13-9- عمليات هندسي بر روي تصاوير-ادامهتغيير ابعاد تصوير: تابع imresize اين تابع به يکي از دو صورت زير قابل استفاده است:y=imresize(x , a);y=imresize(x , [m , n]);درحالت اول متغير a نسبت تغيير در ابعاد تصوير است. مثلا اگر برابر با 2 باشد يعني ابعاد تصوير دوبرابر خواهد شد. اگر اين عدد کمتر از 1 باشد تصوير کوچکتر خواهد شد و اگر بيشتر از يک باشد تصوير بزرگتر ميشود. در حالت دوم تعداد سطر و ستون جديد تصوير به تابع ارايه ميشود که بايد اعداد صحيح مثبت باشند.
اسلاید 21: 13-9- عمليات هندسي بر روي تصاوير-ادامهچرخش تصوير-تابع imrotate نحوه استفاده از اين تابع بصورت زير است:m2=imrotate(m , d , [‘Option’] , [‘crop’])آرگومان دوم ميزان چرخش تصوير برحسب درجه ميباشد. آرگومان سوم اختياري بوده و ميتواند يکي از مقادير bilinear, nearest يا bicubic باشد. در صورتيکه اين آرگومان بکار برده نشود، مقدار پيشفرض nearest خواهد بود. آرگومان چهارم نيز اختياري ميباشد و تنها ميتواند مقدار ‘crop’ را داشته باشد. درصورتيکه بکار برده شود، ابعاد تصوير پس از چرخش تغيير نميکند اما بخشي از تصوير برش داده و حذف ميشود.
اسلاید 22: 13-9- عمليات هندسي بر روي تصاوير-ادامهچرخش تصوير-تابع imrotate-ادامهمثال:m=imread(‘ic.tif’);n=imrotate(m , 35); p=imrotate(m , 35,’crop’);imshow(n); figure; imshow(p);
اسلاید 23: 13-9- عمليات هندسي بر روي تصاوير-ادامهبرش تصوير: تابع imcropاين تابع به يکي از شکلهاي زير قابل استفاده است:I2 = IMCROP(I,RECT) X2 = IMCROP(X,MAP,RECT) RGB2 = IMCROP(RGB,RECT)[A,RECT] = IMCROP(...)که در اين روابط rect يک بردار سطري است که مختصات يک ناحيه مستطيلي شکل که از تصوير برش داده ميشود را مشخص ميکند. درصورتيکه اين آرگومان در ورودي مشخص نشود، تصوير نمايش داده شده و متلب منتظر ميماند تا کاربر يک ناحيه مستطيلي را با ماوس انتخاب کند.
اسلاید 24: 13-9- عمليات هندسي بر روي تصاوير-ادامهبرش تصوير: تابع imcrop-ادامهمثال:m=imread(‘pout.tif’);imshow(m);figure;imcrop(m,[size(m)/4,size(m)/2]
اسلاید 25: 13-10- فيلترهاي خطي و طراحي فيلتربراي اعمال يک فيلتر بر روي تصوير ميتوان از تابع filter2 استفاده کرد:m2=filter2(h , m) در رابطه h ماتريس فيلتر و m ماتريس تصوير اوليه است. h ميتواند هر ماتريس با ابعاد دلخواه باشد، اما معمولا يک ماتريس 3*3 يا 5*5 است.
اسلاید 26: 13-10- فيلترهاي خطي و طراحي فيلتر-ادامهفيلترهاي آمادهبا استفاده از تابع fspecial ميتوان فيلترهاي معمول در پردازش تصوير را براي استفاده با تابع filter2 ايجاد کرد. روش استفاده از اين تابع بصورت زير است:h=fspecial(‘ نام فيلتر‘ , ابعاد فيلتر)بسته به نوع آرگومان اول ممکن است اين تابع با يک يا بيش دو آرگومان نيز بکار برده شود.نام فيلتر ميتواند يکي از پارامترهاي زير باشد:gaussian: پايين گذرsobel: بالا گذرprewitt: بالا گذرlaplacian: فيلتر لاپلاسlog: اعمال فيلتر گوسي و پس از آن لاپلاسaverage: فيلتر ميانگينunsharp: پايين گذر
اسلاید 27: 13-10- فيلترهاي خطي و طراحي فيلتر-ادامهفيلترهاي آماده-مثالSobelFilter=fspecial(‘sobel’);[I,map]=imread(kids.tif);I=ind2gray(I,map); I2=filter2(SobelFilter,I);imshow( I ); figure; imshow( I2 );
اسلاید 28: 13-11-آناليز و بهسازي تصويرآناليز و بهسازي تصوير شامل سه عمليات زير است:بدست آوردن ارزش نقاط تصوير و اعمال عمليات آماري بر روي آنهاآناليز تصوير بمنظور استخراج اطلاعات در مورد ساختار کلي آنبهسازي تصوير بمنظور واضحتر شدن جزييات تصوير و حذف نويز بمنظور آمادهسازي براي عمليات پردازشي بعديکه در ادامه به هر يک خواهيم پرداخت
اسلاید 29: 13-11-آناليز و بهسازي تصوير-ادامهبدست آوردن ارزش نقاط تصوير و اعمال عمليات آماري بر روي آنهاتوابع pixval و impixelبا استفاده از تابع impixel ميتوان مشخصات رنگي پيکسلهايي از تصوير را بدست آورد. اين تابع بصورتهاي زير بکار ميرود:P = IMPIXEL(I)P = IMPIXEL(X,MAP)P = IMPIXEL(RGB)در اين حالت اين تابع پنجره تصوير را نمايان ساخته امکان انتخاب نقاط مورد نظر را به کاربر ميدهد. پس از زدن يک کليد يا دکمه سمت راست ماوس، مشخصات اين نقاط در ماتريس p ذخيره خواهد شد. البته اين تابع بصورتهاي ديگري نيز ميتوان بکار برد که براي کسب اطلاعات بيشتر ميتوانيد به راهنماي متلب مراجعه کنيد.تابع pixval به پايين پنجره تصوير کادري را اضافه ميکند که با حرکت ماوس بر روي تصوير مشخصات رنگي نقاط نصوير در اين کادر نمايش داده ميشود. اين تابع بايد پس نمايش تصوير با تابع imshow صدا زده شود.
اسلاید 30: 13-11-آناليز و بهسازي تصوير-ادامهبدست آوردن ارزش نقاط تصوير و اعمال عمليات آماري بر روي آنها-ادامهتابع improfile:اين تابع نمودار تغييرات رنگ تصوير را در يک مسير دلخواه که با ماوس انتخاب ميشود رسم ميکند:مثال:imshow(‘flowers.tif’);improfile;
اسلاید 31: 13-11-آناليز و بهسازي تصوير-ادامهبدست آوردن ارزش نقاط تصوير و اعمال عمليات آماري بر روي آنها-ادامهتابع imcontour: رسم نمودار تراز دادههاي تصوير:im=imread(‘ic.tif’);imshow(im);figure;imcontour(im,3);
اسلاید 32: 13-11-آناليز و بهسازي تصوير-ادامهبدست آوردن ارزش نقاط تصوير و اعمال عمليات آماري بر روي آنها-ادامهتابع imhist: رسم نمودار فراواني نقاط تصوير:I=imread(‘flowers.tif’);I=rgb2gray(I);imshow(I);figure;imhist(I);
اسلاید 33: 13-11-آناليز و بهسازي تصوير-ادامهبدست آوردن ارزش نقاط تصوير و اعمال عمليات آماري بر روي آنها-ادامهتوابع mean2 و std2:توابع mean و std در متلب به ترتيب براي بدست آوردن ميانگين و انحراف معيار بکار برده ميشوند. اما اين توابع بصورت برداري عمل ميکنند يعني ميانگين يا انحراف معيار عناصر يک بردار را محاسبه ميکنند. اگر اين توابع را بر روي يک ماتريس اعمال کنيم مانند اکثر توابع متلب بصورت ستوني روي عناصر آن ماتريس عمل خواهند کرد. يعني ميانگين يا انحراف معيار هر ستون ماتريس را بصورت جداگانه بدست ميآورند. براي آنکه بتوان ميانگين يا انحراف معيار تمامي نقاط يک ماتريس را بدست آورد بايد از توابع mean2 و std2 استفاده کرد.
اسلاید 34: 13-11-آناليز و بهسازي تصوير-ادامهآناليز تصوير:از آنجاييکه آناليز تصوير بيشتر بر روي تصاوير باينري انجام ميگردد اين مبحث به سرفصل “عمليات بر روي تصاوير باينري ” ارجاع ميشود.
اسلاید 35: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير:اين عمليات که به عمليات پيشپردازش نيز مشهور است معمولا پيش از عمليات پردازش اصلي يا عمليات آناليز تصوير انجام ميگيرد. در اين عمليات بهبودهايي بر روي دادههاي تصوير اعمال ميشود تا امکان استخراج دقيقتر و صحيحتر اطلاعات ميسر گردد. اين عمليات در سه بخش زير شرح داده خواهد شد:تنظيم شدتمتعادل کردن هيستوگرام يا بهسازي تباينحذف نويز
اسلاید 36: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير-ادامهتنظيم شدت-تابع imadjustبا استفاده از اين تابع ميتوان دامنه تغييرات روشنايي يک تصوير را تغيير داد. شکل کلي کاربرد اين تابع بصورت زير است:J=imadjust(I , [low , high] , [bottom , top]) آرگومان دوم برداري دو عنصري است که بيانگر دامنه حاوي روشناييهايي از تصوير است که عمليات تنظيم شدت بر روي آنها بايد اعمال گردد. آرگومان سوم، دامنه تغييرات جديد روشنايي براي نقاط فوق است.مثال:I=imread(‘pout.tif’);J=imadjust(I , [0.3 , 0.7] , [0 ,1]);subplot(2,2,1);imshow(I); subplot(2,2,2);imshow(J);subplot(2,2,3); imhist(I); subplot(2,2,4); imhist(J)
اسلاید 37: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير-ادامهتنظيم شدت-تابع imadjust-ادامه
اسلاید 38: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير-ادامهمتعادل کردن هيستوگرام يا بهسازي تباين-تابع histeqتابع histeq بصورت اتوماتيک بهترين تنظيم هيستوگرام را بر روي تصوير انجام ميدهد و معمولا کيفيت روشنايي تصوير را به ميزان زيادي بهبود ميبخشد.مثال:I=imread(‘tire.tif’);J=histeq(I);figure;subplot(2,2,1);imshow(I);subplot(2,2,2);imshow(J);subplot(2,2,3);imhist(I);subplot(2,2,4);imhist(J);
اسلاید 39: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير-ادامهمتعادل کردن هيستوگرام يا بهسازي تباين-تابع histeq-ادامه
اسلاید 40: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير-ادامهحذف نويزمعمولا تصاوير ديجيتال کم و بيش داراي نويز هستند. حذف نويز قبل از هرگونه عمليات پردازشي بايد انجام گيرد. فيلترهاي متعددي براي حذف نويز طراحي شدهاند. در متلب نيز چندين فيلتر براي حذف نويز وجود دارد که از اين ميان به سادهترين آنها اشاره خواهيم کرد:فيلتر ميانگينفيلتر ميانهبراي ايجاد فيلتر ميانگين از تابع fspecial که قبلا توضيح داده شد و تابع filter2 ميتوان استفاده کرد. براي اعمال فيلتر ميانه از تابع medfilt2 استفاده کنيد. بطورکلي تمامي فيلترهاي حذف نويز از وضوح (sharpness) تصوير ميکاهند. در ميان دو فيلتر ميانگين و ميانه، فيلتر ميانه معمولا نتيجه بهتري ايجاد ميکند و وضوح تصوير را نيز کمتر تحت تاثير قرار ميدهد.
اسلاید 41: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير-ادامهحذف نويز-مثال: مقايسه فيلتر ميانه و فيلتر ميانگين I = imread(‘eight.tif’); J= imnoise(I , ‘Salt & pepper’ , 0.02); % افزودن نويز K= filter2(fspecial(‘average’ , 3) , J) / 255; % فيلتر ميانگين L=medfilt2(J , [3 , 3]); % فيلتر ميانه subplot(2,2,1); imshow( I ); title(‘Initial Image’) subplot(2,2,2); imshow( J ); title(‘Noised Image’); subplot(2,2,3); imshow( K ); title(‘Mean Filter’); subplot(2,2,4); imshow( L ); title(‘Median Filter’);
اسلاید 42: 13-11-آناليز و بهسازي تصوير-ادامهبهسازي تصوير-ادامهحذف نويز-مثال: مقايسه فيلتر ميانه و فيلتر ميانگين-ادامه
اسلاید 43: 13-12- عمليات بر روي تصاوير باينرياگرچه عمليات بر روي تصاوير باينري زيرمجموعه مبحث آناليز تصوير است لکن بخاطر اهميت تصاوير باينري در علم پردازش تصوير، اين مبحث را در بخش جديدي ارايه نمودهايم.همانگونه که قبلا گفته شد تصوير باينري به تصويري گفته ميشود که پيکسلهاي آن تنها داراي يکي از دو مقدار ممکن 0 و 1 يا 0 و 255 باشند. در متلب تصاوير باينري ميتوانند بصورت تصاوير شدت و يا بصورت تصاوير انديسشده ذخيره و معرفي شوند. در حالت دوم ماتريس نقشه رنگ تنها داراي دو سطر خواهد بود.
اسلاید 44: 13-12- عمليات بر روي تصاوير باينري نمايش تصاوير باينريبراي نمايش تصاوير باينري نيز از تابع imshow استفاده ميشود. درصورتيکه تصوير از نوع شدت باشد فرم : imshow(m) و اگر از نوع انديسشده باشد فرم : imshow(I ,map) بکار برده خواهد شد.
اسلاید 45: 13-12- عمليات بر روي تصاوير باينريعمليات ساختاري Morphological Operationsعمليات ساختاري به عملياتي گفته ميشود که بر روي تصاوير باينري اعمال شده و هدف از آن ايجاد تغيير و يا تصحيح در اجزا داخل يک تصوير باينري باشد. اين عمليات معمولا يک مرحله قبل از عمليات پردازش نهايي انجام ميشود. منظور از عمليات پردازش نهايي عملياتي است که در آن اطلاعاتي از تصوير استخراج ميشود. مثلا محيط يا مساحت اجزا تصوير محاسبه ميگردد. از ميان اين عمليات در ادامه چهار نوع از مهترين آنها شرح داده خواهد شد که عبارتند از:- عمليات افزايش- عمليات فرسايش- عمليات گشودن- عمليات بستن
اسلاید 46: 13-12- عمليات بر روي تصاوير باينري-ادامهعمليات ساختاري Morphological Operations-ادامهعمليات افزايش و فرسايش(Dilation & Erosion)منظور از عمليات افزايش عملياتي است که باعث افزايش ابعاد اجزا داخل تصوير به اندازه يک يا چند پيکسل ميگردد. در اثر اين عمل ممکن است نقاطي که از يک تصوير باينري در اثر عواملي چون تاثير نويز يا اعمال حد آستانه نامطلوب جا افتاده است، تصحيح گردند. مثلا ممکن است دو جزء از تصوير به يکديگر متصل گردند. الگوريتم اعمال فيلتر افزايش بدين صورت است که تمامي نقاط سياه تصوير بررسي شده در صورتيکه حداقل يکي از همسايگان انتخابي نقطه مورد بررسي سفيد باشند، نقطه مزبور نيز سفيد خواهد شد در غير اينصورت سياه باقي خواهد ماند.عمليات فرسايش دقيقا عکس عمليات افزايش است. در اين عمليات معمولا نقاط ناخواسته تصوير باينري حذف ميشوند و ساير اجزا تصوير نيز به اندازه يک يا چند پيکسل نازکتر خواهند شد. عملا تمامي نقاط سفيد تصوير بررسي شده در صورتيکه حدافل يکي از همسايگان انتخابي آن سياه باشد، آن نقطه نيز سياه خواهد شد.
اسلاید 47: 13-12- عمليات بر روي تصاوير باينري-ادامهعمليات ساختاري Morphological Operations-ادامهعمليات افزايش و فرسايش-ادامهابعاد همسايگي و انتخاب همسايهها توسط يک ماتريس ماسک (Mask) مشخص ميشوند. مثلا اگر ماتريس ماسک يک ماتريس 3* 3 باشد که تماي عناصر آن برابر با 1 باشد. يعني يک همسايگي 3*3 بکار برده شود و تمامي 9 همسايه نقطه مورد بررسي براي عمليات افزايش يا فرسايش مد نظر قرار گيرند. براي عمليات افزايش در متلب از تابع imdilate و براي عمليات فرسايش از تابع imerode استفاده کنيد. اگرچه هردو عمليات را با استفاده از تابع کليتر bwmorph نيز ميتوان انجام داد.فرمول کلي استفاده از اين توابع بصورت زير است:bw2=imerode(bw1, se);bw2=imdilate(bw1 , se);
اسلاید 48: 13-12- عمليات بر روي تصاوير باينري-ادامهعمليات ساختاري Morphological Operations-ادامهعمليات افزايش و فرسايش-مثالbw1=imread(‘circbw.tif’); SE=eye(5);bw2=imerode(bw1 , SE);imshow(bw1); figure; imshow(bw2);
اسلاید 49: 13-12- عمليات بر روي تصاوير باينري-ادامهعمليات ساختاري Morphological Operations-ادامهعمليات گشودن و بستن Open & Close از ترکيبهاي مختلف دو عمليات افزايش و فرسايش ميتوان عمليات ديگري ايجاد کرد. مهمترين اين عمليات، عمليات گشودن و بستن است. در عمليات گشودن اجزايي از تصوير باينري که از يک اندازه تعيين شده کوچکتر باشند حذف ميشوند بدون آنکه ابعاد ساير اجزا تغيير کند. در عمليات بستن نيز نواحي جاافتاده تصوير باينري بدون تغيير در ابعاد ساير اجزا ترميم ميگردند.عملا در صورتيکه ابتدا عمليات فرسايش و سپس افزايش بر يک تصوير باينري اعمال شود، نتيجه، عمليات گشودن خواهد بود اما اگر ابتدا افزايش و سپس فرسايش اعمال گردد، عمليات بستن حاصل خواهد شد.در متلب براي اعمال عمليات گشودن و بستن و همچنين ساير عمليات مورفولوژي از تابع bwmorph بايد استفاده کرد. اگرچه ميتوان اين دو عمليات را از عمليات فرسايش و افزايش نيز بدست آورد.(همانگونه که در مثال بعدي عمل شده است)
اسلاید 50: 13-12- عمليات بر روي تصاوير باينري-ادامهعمليات ساختاري Morphological Operations-ادامهعمليات گشودن و بستن Open & Close-مثالbw1=imread(‘circbw.tif’);se= ones(40 , 30); bw2= imerode(bw1 , se);bw3=imdilate(bw2 , se);imshow(bw2); figure; imshow(bw3);
اسلاید 51: 13-12- عمليات بر روي تصاوير باينري-ادامهعمليات ساختاري Morphological Operations-ادامهعمليات از پيش تعريف شده: تابع immorphبا استفاده از تابع immorph ميتوان بسياري از عمليات ساختاري معروف پردازش تصوير را اعمال نمود. شکل کلي استفاده از اين تابع بصورت زير است: bw2 = bwmorph(bw1 , operation , [n]);آرگومان سوم اختياري بوده و بيانگر ابعاد ماسک مورد استفاده يا فاکتور ديگري با توجه نوع آرگومان دوم در عمليات است. در صورت حذف آرگومان سوم، مقدار پيش فرض آن بکار برده خواهد شد. مقدار آرگومان دوم يکي از رشتههاي زير است:erodefill hbreak open skel remove close dilateمثال بعدي نتيجه عمليات اسکلتون را بر روي تصوير قبلي نشان ميدهد
اسلاید 52: 13-12- عمليات بر روي تصاوير باينري-ادامهعمليات ساختاري Morphological Operations-ادامهعمليات از پيش تعريف شده: تابع immorph- مثال: bw1= imread(‘circbw.tif’); bw2= bwmorph(bw1 , ‘skel’ , inf)imshow(bw1); figure; imshow(bw2);
اسلاید 53: تکلیف 13-1- تصویری به نام flower.tif از نوع rgb در دست است. این تصویر شامل یک گل به رنگ قرمز و ساقه و برگ به رنگ سبز بر روی یک زمینه آبی است. برنامهای بنویسید که :الف – تصویر فوق را خوانده و دادههای آنرا در ماتریسی به نام m بریزدب- با استفاده از حد آستانه 120 برای جزء سبز و حد آستانه 180 برای جز قرمز، دو تصویر باینری بنامهای b1 و b2 ایجاد کند که در اولی تنها تصویر گل و در دومی تنها اجزاء ساقه و برگ وجود داشته باشند.راهنمایی: برای استخراج برگها تنها استفاده از یک شرط برای حد آستانه کافی نیست. مثلا شرط: m(:,:,2)>120 & m(:,:,1) < 100 را امتحان کنید.ج- مرز گل را در تصویر b1 استخراج کرده و در b11 بریزد.د- تصاویر b11 و b2 را با استفاده از عملگر یای منطقی در متلب، با یکدیگر تلفیق نماید تا تصویر باینری c بدست آید.ه- مساحت برگ و ساقه و مساحت و محیط گل را از تصاویر b1، b11 و b2 بدست آورد.و- مختصات نخستین پیکسل سفید(نسبت به گوشه بالا-سمت چپ تصویر) در تصاویر b1 و b2 را بدست آورد.ز- با استفاده از دستور text و نتایج قسمتهای “ه” و ” و” پس از نمایش تصویر مساحت و محیط هر جز را در کنار آن نمایش دهد
اسلاید 54: تکلیف 13-2- تصویر یک پارچه سفید با نام fabric.tif و از نوع شدت(grayscale) در دست است. این تصویر دارای یک طرح بافت خاص میباشد برنامهای بنویسید که با استفاده از تبدیل فوریه یک بعدی فرکانس تکرار طرح مزبور در جهت افقی و عمودی و با استفاده از این فرکانسها و طول و عرض تصویر، ابعاد طرح فوق را محاسبه کند و نمایش دهد. رزولوشن تصویر را 600dpi در نظر بگیرید.راهنمایی:بدین منظور یک سطر و یک ستون از تصویر را انتخاب و طیف فوریه آنرا بدست آورید...
نقد و بررسی ها
هیچ نظری برای این پاورپوینت نوشته نشده است.