آموزش برنامه نویسی و پردازش تصویر در نرم افزار متلب 2 (2)

آموزش متلب

آموزش برنامه نویسی و پردازش تصویر در نرم افزار متلب 2

کار با توابع , zeros ,figure ,  imtool ، imresize ، imfinfo ، imread در متلب

 آموزش برنامه نویسی در متلب 2

 نوشته ها :

1-کار با توابع imshow -imread -imwrite

2- معرفی تابع figure

3- معرفی تابع  zeros

4- تابع imtool

5- تابع imresize

6- تابع imfinfo

7-  تعریف تروکالر 

8-  نگاتیو کردن عکس

 

چهار نوع تصویر از لحاظ رنگ را مورد بررسی قرار میدهیم .

zeros   imtool ، imread در متلب

 

  1. >>imshow(img)
    >>size(img)
    ans=
    384        512         3

3 تعداد طبقات رنگی ، دو عدد بعد سایز عمودی و افقی تصویر (نمایش تابع imshow در متلب)

  1. >>size(img( : ,  :  ,  1 ))

علامت (: )یعنی همه میشود همه ستون ها وسطرها در طبقه اول

تابع imshow در متلب

 

فقط رنگ قرمز را نمایش میدهد قسمتهای تیره یعنی رنگ قرمز ندارد .

  1. >>imshow(img ( :  ,  :  ,  1  ))
    >>figure ; imshow (img)    

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

 

zeros   imtool ، imread در متلب

نمایش طبقه دو تصویر  .

  1. >>figure; imshow (img ( :  ,  :  ,  2))

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

 

imshow در متلب

 

این سه طبقه کانال های رنگی روی هم هستند که ترکیب آنها باعث میشود ما تصویر را رنگی ببینیم .

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

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

  1. >>img = imread(‘ rice . png ‘);
    >>imshow (img)


یک لایه است .

imread در متلب

 

ایجاد تصویر دستی در تابع imread 

تصویر دستی در تابع imread 

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

تابع  zeros 

  1.  
    
    
    >>img=zeros(400,400);
    >>imshow (img)
    >>img (100:200 , 100:200)= 1 ; 

     

تابع  zeros در متلب

به تصاویر سیاه و سفید در اصطلاح منطقی گویند . نوع سوم تصاویر

این مسئله در دایره دو دایره تو در تو میشود که نقاط داخل دایره یک  و خارج آن صفر است شرط حضور داخل دایره فاصله کمتر یا مساوی شعاع که در این صورت مختصات را یک میگیریم

نمونه خوب برای تصاویر Index Color نقشه های فرش میباشند .

نوع چهارم تصاویر دیجیتال Index Color Imasge است جای کمتری در پهنای باند وب میگیرد یک سری رنگهای اندیس گزاری شده هستند .

معروف ترین نوع تصاویر Index Color Imasge فورمت gif ,png 

اگر با تابع imread و دو خروجی اجرا کنیم map نقشه رنگ را بیان میکند و دیگری خود نقشه را بیان میکند باعث کم شدن سه برابری داده میشود و روی ماتریس یک طبقه کار میکنیم با این روش هر رنگی را در تصویر نداریم .

  1. >>img=imread(‘ rice . png ‘) ;
    >>imshow (img )

در تابع ImShow  نمایش فایل مستقیم انجام میشود .

  1. >>imshow( ‘coins .png ‘)

تابع ImShow در متلب

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

کار با تابع imwrite

بخش 100 تا 200 از یک فایل 400 در 400 برابر یک میکنیم .

  1. >>img=zeros(400 , 400 );
    >>img (100 : 200 , 100 :200 )=1;
    >>imwrite (img , ‘mypic .gpg ‘ );
    

رایت کن  تصویر را  در   MyPic.jpg

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

با فرمت Last Less داده را میتوانیم به شکل تصویر save کنیم حتی اگر از جنس تصویر نباشد .

فرمت jpg اطلاعات دقیق نمیدهد با  فشرده سازی اطلاعات را ذخیره میکند .

ذخیره سازی با فرمت png  یا bit map حجم دلتا زیادتر میشود .

میتوانیم با Visualise کردن یک ماتریس کار تابع imwrite را انجام دهیم .

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

از ابزارهای پردازش تصویرimtool میباشد .

  1.  
  2. >>img=imread(‘rice . png ‘);
    >>imtool(img)

فاصله بین نقاط و جزئیات تغییرات شدت نور در imtool حساب میشود .

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

برای اطمینان از درستی انجام کار مثل level  یا اندازه گیری شعاع از imtool استفاده کنیم .

برای تغییر سایز با تابع imresize  بعد از خروج scale میکنیم .

 

  1. Imresize
    Syntax 
    B = imresize (A , scale)

بین صفر و یک به scale عدد میدهیم .

 

  1. B = imresize (A ,[numcows  numcols ])

 

اضافه کردن تعداد سطرها و ستون ها .

  1. [Y new map ] = imresize ( X , map , scale )
    […] = imresize ( …, method )

شیوه به کار گیری متد :

نزدیکترین جزء اطراف را در نظر میگیرد = nearest 

از روش فرمول درون یابی دو خطی میرود = bilinear 

با روش فرمول درجه 3 تصاویر نرمی را در زمان طولانی تری میسازد = bicubic 

  1. [… ] = imresize ( …, parameter , Value , … )

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

تابع imresize

 

  1. >>img half = imresize ( img ,0/5);
    >> size (img – half )
    And=
    128            128 
    >>imshow (img – half );
zeros   imtool ، imread در متلب

 نیم شدن سایز تصویر .

 

  1. >>img half = imresize( img , 0/5 , ‘ nearest ‘) ;
    >>im show ( imresize ( img , 0/5 , ‘ nearest ‘ );

     

imresize در متلب

  1. >>figure ; imshow ( imresize ( img , 0/5 , ‘ blinear ‘))

با  bicubic تصویر نرم هماهنگی بیشتر و زمان پردازش زیادتر

بابت ظرافت زیاد bicubic برای تصاویر کوچک بهتر است از این ابزار استفاده کنیم .

تابع شبیه explore ویندوز در متلب داریم 

 mypic.jpg  را بررسی کنیم :

  1. >>img = imread(‘mypic . gpg ‘)
    >>imshow (img)

تابع  imfinfo اطلاعات فایل  را نمایش میدهد . 

ذخیره اسکرابچر متغیر ans :

  1. Info = imfinfo ( ‘ pepper4s . png ‘);

تابع  imfinfo در متلب

ایجاد کردن کپی رایت تصویر :

  1. >>info.Copyright ans = Copyright the mathWorks, Unc.
    >> info.width ans = 512 
    >> info.Height ans = 384 
    >> c

برای کار با هر الگوریتمی اول از  تابع imread  باید استفاده کنیم .

 

Bit Depth:24

24 یک تصویر سه لایه رنگی میباشد .

0 تا 255 شماره هر Bit  است .

  1. ;img = imread( ‘ rice . png ‘ )<<
           img<256 .  256 uint8<<

مطابق با پیش فرض کامپیوتر Integer 8 bit بین 0 تا 255 است ، سه لایه آن یعنی سه تا Component رنگی از پیکسل های (RGB) قرمز – سبز – ابی 

bitdepth :24 همان عدد ثابت  16777216 که ترو کالر گویند دقت زیاد و خیلی تنوع  رنگ دارد .

  1. >> 2 ^ 8
    ans =
    256
    >> 2 ^ 24
    ans =
    16777216

تفکیک پذیری رنگی همان Bit Depth  است .

 با 32 Bit 24 ، Bit در کامپیوترها ی عادی کار میکنیم .

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

 

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

 

عوض کردن  (R , G ) با هم :

 

zeros   imtool ، imread در متلب

 

 

  1. >>img1=imread(‘peppers . png’) 
     >>img2=Zeros(size(img1));    
     >>img2 (: ,: ,1) = img1 (: , : , 2);  
    >>img2(:,:,2)= img1 (: ,: ,1);   
     >> img2 (: , : , 3) = img1 (: , : ,3);    
     >>figure ;  
     >>subplot (1 ,2 ,1) ;    
     >>Imshow (img1) ;  
    >>subplot (1 ,2 , 2 );   
      >>imshow (img2);   

     

    zeros   imtool ، imread در متلب 

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

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

  1. Img 1 <384  .  512 . 3 uint8>
    Img2 <384  . 512  . 3 double>
    Img2 = uint8(img 2 );

 

به جای255 عدد صفر را در نظر میگیریم اگر یکی از لایه ها را معکوس کنیم .

 

  1. Img3 = 255 – img2;
    Imshow (img3) 

     

 نگاتیو میشود .

 نگاتیو در متلب

با تابش نور به ظهور نورهای عکس تصویر اصلی را عبور میدهد در واقع همان تصویر اصلی حاصل میشود .

ادامه در مبحث 3

دیدگاه ها بسته شده است