آموزش متلب
برنامه نویسی و پردازش تصویر در متلب 3 (3)
4 مهر 1401
آموزش متلب
پردازش شدت نور تصاویر در نرم افزار متلب (5)
17 مهر 1401
Show all

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

آموزش متلب

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

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

بخش 4 آموزش برنامه نویسی درنرم افزار متلب 

در این بخش میخوانیم :

1- تابع imtool

2- تابع imresize

3- تابع imfinfo

4- تابع imread

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

6- مثال برای آموزش تابع imread

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

imtool یکی دیگر از ابزار های پردازش تصویر است .

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

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

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

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

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

وقتی میخواهیم سایز تصویر را تغییر دهیم از تابع imresize استفاده میکنیم ، تصویری که به 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 شکل فرمول درون یابی دو خطی را مد نظر قرار میدهد .

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

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

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

 کار با تابع imresize  در محیط متلب 

 

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

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

 

  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 هماهنگی اجزای تصویر بیشتر تصویر نرمتر و زمان پردازش بیشتر میشود

 ( به خاطر دقت بالای بایکیوبیک برای تصاویر کوچک توصیه میشود )

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

مثلا :

 اطلاعات تصویری mypic.jpg  را ببینیم ،

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

 با استفاده از تابع imfinfo در متلب میفهمیم فایل چه اطلاعاتی دارد . 

  متغیرans را میتوانیم خودمان به شکل یه اسکرابچر ذخیره کنیم و بنویسیم : 

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

تابع imtool imresize imfinfo imread در متلب

برای نوشتن کپی رایت تصویر :

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

خواندن و ذخیره سازی مطالب  imtool- imresize- imfinfo- imread درمحیط متلب را آموختیم در ادامه همه الگوریتم هایی که با آن کار میکنیم ابتدا از تابع imread استفاده میکنیم .

 

Bit Depth:24

24 یعنی سه لایه 8 تایی (یک تصویر رنگی سه لایه )

شماره هر Bit بین 0 تا 255 است 

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

Integer 8 bit طبق قرار داد پیش فرض ذخیره شده در اطلاعات کامپیوتر بین 0 تا 255 است ، اگر سه لایه 0تا255  باشدانگار سه تا Component رنگی ، قرمز – سبز – ابی از پیکسل های (RGB) روی هم قرار گرفته این bitdepth :24 را اصطلاحا ترو کالر هم میگویند که یک عدد ثابت  16777216 میباشد از تنوع رنگ و دقتی بالا برخوردار است .

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

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

 مفهومِ Bit Depth میزان تفکیک پذیری رنگی میشود .

چیزهایی که در رایانه های عادی استفاده میکنیم همین 32 Bit 24 ، Bit است .

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

 

دستگاه مختصات در متلب

 

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

دراین مثال (R , G ) را جا به جا میکنیم :

 

 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);   

     

     imread در متلب 

رنگ قرمز و سبز با هم جا به جا میشود ماتریسی به دست می آید که دارای یک سطح و دو ستون است .

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

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

 

 تصاویری که ترکیب مساوی از رنگهای قرمز و سبز دارند زیاد تحت تاثیر این جا به جا یی قرار نمیگیرند .

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

 

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

     

فرمول نگاتیو میشود

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

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

ادامه آموزش متلب در بخش 5

دیدگاهتان را بنویسید