روش تنظیم شدت نور تصاویر در نرم افزارمتلب
با توابع imadjust – enhancement – stretchlim – Imhist
آموزش برنامه نویسی در متلب 3
نوشته ها :
1- تنظیم شدت نور تصاویر
2- کار با تابع imadjust
3- چگونگی فرا خوانی یک تابع
4- کار با تابع enhancement
5- رسم نمودن هیستوگرام فراوانی یک تصویر
6- کار با تابع stretchlim
7- کار با تابع Imhist
8- پراکندگی واریانس
الگوریتم میزان نور تصاویر را به عنوان پیش پردازش در نظر میگیریم .
وقتی میخواهیم نقاطی از تصویر را روشنتر یا واضحتر کنیم از وش 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 , … )
خروجی J (جی) ورودی (آی)I :
دو ماتریس ورودی Low in put , high in put میزان نور خروجی با out put و میزان نور ورودی با in put به دست میاید .
معادله خطی lowoutput ,high output به تصویر ورودی بین Low in put , high in put مربوط است .
اندازه گاما بزرگتر از یک جهت منحنی بالا و کوچکتر از یک جهت به سمت پایین میباشد .
مرز ورودی و خروجی با output ، in put معلوم میشود .
دو شاخص خروجی imread اول خود تصویر ، دوم کالرمپ
وقتی تصویر تار است کنتراست کافی ندارد .
فاصله بین بیشترین و کمترین روشنائی تصویر را کنتراست آن تصویر گویند .
enhancement بدون عدد برای output ، in put خودکار میانگین سیاه و سفید را قرار میدهد و یک تصویر کدر ارائه میدهد .
گسترش طیف دینامیکی تصویر : هر چه واریانس بیشتر وضوح و کنتراست و پراکندگی و تفاوت داده ها بیشتر میشود .
برنامه ای که کار enhancement را انجام دهد .
پوشه ی Intensity Transfrom را میسازیم با edit فایل جدید درست میکنیم .
علامت Clc; برای پاک کردن صفحه استفاده میکنیم .
علامت Clear; برای پاک کردن حافظه استفاده میکنیم .
علامت Close all; برای بستن همه تصاویر یا نمودارهای در حال اجرا ی برنامه استفاده میشود .
-
یک تصویر را باز میکنیم
-
%%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 ‘) ;
بعد از ذخیره کردن با زدن کلید F5 اجرا میکنیم .
مقدار نور تصاویر به کمیت آماری ربط دارد .
نمودار فراوانی هیستوگرام مربوط به تصویر اصلی .
واریانس تصویر اصلی محدود ونزدیک میانگین ( خط قرمز ) واریانس تصویر دوم پخشتر و وضوح بیشتر ( خط آبی )
img1 گرفتن از خود تصویر یکی از راه حل ها برای انتخاب بهترین حالت ممکن میباشد :
-
>>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 صدم )
واریانس صفر و یک برابر میانگین داده ها تصویر کلا تار و طوسی میسازد .
فرا خوانی تابع stretchlim در img1 :
-
Img3 = imadjust (img 1 , stretchlim (img 1 ) , [0 1] ) ;
خیلی کم باهم فرق میکنند ، (دست یابی به تصویر اصلی )
برای تصویر ضعیف تر :
-
Img3 = imadjust (img 1 , stretchlim (img 1 ) , [0/49 0/51 ] )
زمینه طوسی و تار حاصل نیم گرفتن دو عدد است .
-
%%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 را بگیریم تصویر اُرجینال به دست میاید .
اگر اشباع در محدوده باشد خط و منحنی با یکدیگر فرقی ندارند .
پارامترهای دیگر را مورد ارزیابی قرار میدهیم:
-
%%Load Image
Img 1 = imread (‘pout . tif ‘) ;
Img 2 = imadjust (img 1) ;
Img3 = imadjust (img 1 , stretchlim (img 1 ) , [0 1] ,0/5 ) ;
Img 4 = imadjust ( img , stretchlim ( img 1 ) , [0 1] , 2 ) ;
تصویر3 تیره تر و 2 روشنتر
در معادله خطی (y شیب خط ) :
منحنی اشباع شده :
توان گامائ آن فرمول متلب میشود :
حالت خطی گامائ یک تصویر نرمال .
گامائ بیشتر از یک رنگ تیره ترتصویر 3 .
گامائ کمتر از یک رنگ روشنترتصویر2 .
گاما همه حالتها را پوشش میدهد .
گاما ی صفر همان گامائ کمتر از یک محسوب میشود .
توسعه کنتراست مربوط به توابع imadjust , stretchlim میباشد .
هر چه پراکندگی واریانس رابیشتر کنیم وضوح تصویر بیشتر میشود .
-
>> A = magic (5)
راه های تبدیل ماتریس 5 × 5 به بردار :
راه اول جستجوی ریشه A که حاصل آن ماتریسی با یک سطر و هر تعداد ستون است .
-
>> reshape (A , 1 , [ ] )
راه دوم ماتریسی با یک ستون با هر تعداد سطر .
-
>>reshape (A , [ ] , 1 )
راه میانبری که تمامی اعضای A را با بردار عمودی نمایش میدهد .
-
>> A ( : )
ساده ترین راه تبدیل ماتریس به بردار در متلب تابع Imhist میباشد .
-
>>hist (img 1 ( : ) )
Error using
به دابل تبدیل میکنیم برای این که Error ندهد .
-
>> hist (double (img ( : ) ) )
خود نرم افزار اتو مات رسم میکند .
-
>> hist (double ( img 1 ( : ) ) , 50 )
>> hist (double (img ( : ) ) , 100 )
>> hist (double ( img 1 ( : ) ) , 256 )
-
>> Xlim ( [ 0 255 ] )
تمرکز تصویر روی وسط نمودار است Imag Histogram میزان روشنایی تقسیم شده در تصویر را نمایش میدهد .
-
Imhist
Display histogram of image data
Syntax
Imhist ( I )
Imhist ( I , n )
Imhist ( x , map )
[counts , x ] = imhist ( … )
اجرا به سه روش اول باعث ترسیم نمودار میشود .
برای پیدا کردن تعداد اعضا و مرکز دسته باید دو خروجی دهیم که ترسیم نمیکند .
از پردازش تصویر در متلب برای شناسایی قاب پلاک و سپس الگو یابی اعداد پلاک جهت نرم افزار پلاک خوان خودرو استفاده میشود. از نرم افزار پلاک خوان در مواردی مانند ساخت و طراحی اتوماسیون پارکینگ ، دستگاه پارکینگ هوشمند ، نرم افزار کنترل تردد خودرو و از این قبیل استفاده میگردد.
با ایجاد فیگور جدید هیستوگرام معادل هر شکل را رسم میکنیم .
-
Figure ;
Subplot ( 2 , 2 , 1 ) ;
Imhist ( img 1 , 256 ) ;
Title ( ‘ Original Image ‘ ) ;
Subplot ( 2 , 2 ,2) ;
Imhist ( img 2 , 256 ) ;
Title ( ‘ Result of imadjust ‘ ) ;
Subplot ( 2 , 2 ,3) ;
Imhist ( img 3 , 256 ) ;
Title ( ‘ Result of imadjust ( 2 ) ‘ ) ;
Subplot ( 2 , 2 ,4 ) ;
Imhist ( img 4 , 256 ) ;
Title ( ‘ Result of imadjust ( 3 ) ‘ ) ;
با استفاده همه طیف های رنگی ترکیب تفکیکی بیشتری به دست می آوریم .
ادامه در مبحث 4