آموزش متلب
برنامه نویسی و پردازش تصویر در متلب 4 (4)
11 مهر 1401
آموزش متلب
 شدت نور تصاویر با تابع Imhistدر متلب(6)
26 آبان 1401
Show all

پردازش شدت نور تصاویر در نرم افزار متلب (5)

آموزش متلب

 پردازش شدت نور تصاویر در نرم افزار متلب

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

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

1- پردازش شدت نور تصاویر 

2- تابع imadjust

3- نحوه فرا خوانی یک تابع 

4- تابع enhancement

5- ترسیم هیستوگرام فراوانی یک تصویر 

6- تابع stretchlim

 پردازش شدت نور  تصاویر

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

شدت نور یا Intensity Transforms که کار آن پرداختن به بهبود یا توسعه تصویر میباشد که Image Enhancement میگویند ( وقتی میخواهیم بر نقاط خاصی از یک تصویر تاکید کنیم مثلا واضحتر یا روشنتر کنیم. )

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

Syntax
J=imadjust(I)
J= imadjust (I, [low- in ; high- in] ,[low-out ; high- out ])
J=imadjust(I , [low –in ; high-in], [low-out ; high- out] , gamma)
Newmap = imadjust(map , [low-in ; high- in] , [low-out ; high-out] , gamma)
RGB2 = imadjust(RGB1 , … )


ورودی (آی)I   خروجی J (جی)  : کاری که میکند در حالت خاصی تصویر را میگیرد با دو ماتریس ورودی به نام

Low in put , high in put , روشنائی خروجی باout put ، اندازه روشنائی ورودی باin put محاسبه میشود .

اگر تصویر ورودی میان Low in put , high in put باشد به معادله خطی  lowoutput ,high output مربوط میشود .

اگر خروجی را ادامه دهیم بین حدود معلوم قرار میگیرد ، یک منحنی خطی اشباع است .

مقدار گاما جهت منحنی رانشان میدهد بزرگتر از یک بالا کمتر از یک منحنی به سمت پایین ( حالت غیر خطی )

تا الان با نحوه فرا خوانی تابع آشنا شدیم .

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

output ،  in put حد و حدود ورودی و خروجی را مشخص میکنند .

شاخص بعدی گاما را اضافه میکنیم  و حالت های دیگر که map را میدهیم .

اگر برای imread  دو شاخص خروجی در نظر بگیریم : خروجی اول خود تصویر ، خروجی دوم کالرمپ .

 وقتی یک تصویر کنتراست کافی ندارد تار است ( شکاف بین کمترین وبیشترین روشنائی در تصویر را کنتراست گویند ).

 

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

 

حالا enhancement میکنیم  بدون پارامتر به جای output ،  in put به طور خود کار مقدار کمتر وزیادتر روشنائی تصویر ورودی را قرار میدهد همه در میانگین رنگ سیاه و سفیدقرار گرفتند و حاصل یک تصویر تار است .

هرچه واریانس بیشتر شود تفاوت و پراکندگی بین داده ها بیشتر کنتراست تصویر بیشتر وضوح تصویر بیشتر این حالت را گسترش طیف دینامیکی تصویر گویند .

ببینیم چه طور میشود در محیط متلب برنامه ای بنویسیم که کار  enhancement  را انجام دهد .

ابتدا پوشه ای بنام Intensity Transfrom باز میکنیم  با دستور edit یک فایل جدیدایجاد میکنیم . 

Clc;  پاک کردن صفحه 

Clear;  پاک کردن حافظه 

Close all; تمام تصاویر یا نمودارهایی که در حال اجرا باشند میبندد

  1.  میکنیم Load یک تصویر را  

  2. %%Load Image 
    Img 1 = imread (‘pout . tif ‘) ;
    Img 2 = imadjust (img 1) ;
    %% Show Results
    Figure ;
    Subplot (1, 2, 1) ;
    Imshow (img 1) ; 
    Title (‘ Original Image ‘) ;
    Subplot (1 ,2 , 2) ;
    Imshow (img 2 ) ;
    Title (‘ Result of imadjust ‘) ;

Save میکنیم و با F5 اجرا میکنیم .

 

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

روشنائی نقاط به کمیت آماری مربوط است .

 نمودار فراوانی هیستوگرام تصویر اصلی  .

 

نمودار هیستوگرام فراوانی

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

 واریانس تصویر دوم بیشتر و پخشتر است وضوح تصویر بیشتر است با خط آبی نشان داده شده .

به خاطر تاکید در پیچرسلکشن واریانس آن همیشه بیشتر است .

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

نرم افزار پلاک خوان و تشخیص پلاک خودرو در نرم افزار کنترل تردد خودرو نیز استفاده میشود.

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

 یک راه برای انتخاب بهترین حالت ممکنimg1 از خود تصویر است :

  1. >>min (img 1 (:) )
    Ans =
    74 
    >>max (img 1 (:))
    Ans = 
    224 
    >> min (img 1 (:) ) /255
    Ans = 
    0 
    >>min (img 1 ( :) )
    Ans = 
    74 
    >> double (min (img 1 ( : ) ) ) / 255 
    Ans = 
    0/2902 
    >> double (max (img 1 ( : ) ) ) / 255 
    Ans = 
    0 /8784 
    >> 
    Img 3 = imadjust (img 1 , [0/29  0/87]  , [0 1] ) ;
    
    

در پردازش شدت نور تصاویر در نرم افزار متلب با تغییر اعداد مثلا به جای صفر و یک  (29 صدم و 87 صدم ) بگذاریم :

 

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

تفاوت های خیلی کوچکی با تصویر اصلی دارد .

 در img1 اگر تابع  stretchlim  را فرا خوانی کنیم :

  1. Img3 = imadjust (img 1 , stretchlim (img 1 ) , [0 1] ) ;

 

فرا خوانی تابع stretchlim

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

 برای ضعیف تر کردن تصویر :

  1. Img3 = imadjust (img 1 , stretchlim (img 1 ) , [0/49  0/51 ] )

 

فرا خوانی تابع stretchlim

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

  1. %%Load Image 
    Img 1 = imread (‘pout . tif ‘) ;
    Img 2 = imadjust (img 1) ;
    Img3 = imadjust (img 1 , stretchlim (img 1 ) , [0 1] ) ;
    Img 4 = imadjust ( img , stretchlim ( img 1 ) , [ 0/5  0/5 ] ) ;

     تصویر ارجینال  ترکیب خطی

 

تصویر اُرجینال از ترکیب خطی دو تصویر شماره 2 و3 حاصل شده که اگر میانگین وزن آن دو را حساب کنیم تصویر اول حاصل میشود .

زمانی منحنی و خط با هم تفاوت ندارند که اشباع در محدوده باشد همانند ضرب و تقسیم عدد ثابت در عدد روشنائی .

 

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

 

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

 

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