شدت نور تصاویر در متلب 3 (7)

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

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

ادامه آموزش نرم افزار متلب بخش 7

در این مبحث آشنا میشویم با :

1- CDF ( تابع تجمعی احتمال )

2- هیستوگرام هدف

3- تابع Hgram

4- تابع  adapthisteq

 

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

 نمودارشدت نور تصویر

 

 

CDF  ( تابع تجمعی احتمال ) از کارآئی های آن یک تناظر یک به یک بین مقادیرتصادفی  هرتوزیع آماری پیوسته برقرار میکند . شرط این که تابعی یک به یک باشد این است که اکیدا صعودی باشد شرط آن این است که مشتق آن همیشه مثبت باشد حتی صفر هم نباشد .

(PDF  مشتق CDF  است ) مقدار    PDF اگر همیشه بزرگتر از صفر باشد    CDF  یک تابع اکیدا صعودی خواهد بود .

اگر هیستوگرام Uرا ترسیم کنیم یک خط صاف میشود یعنی یک کمیتی که تاجائی که امکان دارد به صورت یکنواخت از همه طیف های رنگی استفاده کرده این بهترین هیستوگرامی است که میشود از یک تصویر گرفت لذا هر تصویری که باشد CDF  معادل با آن تصویر را حساب کنیم معادل با هر روشنائی u  معادل را حساب کنیم این u ها را به جای x  ها در آن تصویر استفاده کنیم یعنی نگاشت غیر خطی به این کار اصطلاحا هموار سازی یا یکنواخت سازی هیستوگرام گویند .

وقتی که هیستوگرام کوالیزیشن اتفاق میافتد نتیجه در تصاویر چه خواهد شد ؟

Histeq
Syntax
J = histeq ( I , hgram )
J = histeq ( I , n )
[ J , T ] = histeq ( I  , … )
Newmap = histeq ( X , map , hgram )
Newmap = histeq ( X , map )
[ newmap , T ] = histeq ( X , … )
Img 4 = histeq ( img 1 )

 

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

 

 

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

 

لِوِلها نسبت به موارد دیگر خیلی به هم نزدیک شده از نظر یکنواختی بهتر است .

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

اختلاف بینCDF یکنواخت ( تابع توزیع یکنواخت ) وتابع تولید را کم میکند چون برای تصاویرگسسته این امکان وجود ندارد (اگر تصاویر پیوسته بود میشد کاری کرد که حتما فِلَت شود)

تبدیل شده به یک مسئله  هیستوگرام مچینگ (Histogram Matching) یک هیستوگرام مبدا را در نظر میگیرد اختلاف اینها را کمینه میکند.

 

I = imread ( ‘tire . tif ‘ ) ;
J = histeq ( I ) ;
Imshow ( I )
Figure , imshow ( J )

 

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

 

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

 

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

کار دیگری که میتوان با تابع هیستیکیو(histeq (انجام داد این است که یک هیستوگرام هدف در نظر بگیریم وکاری کنیم که هیستوگرام ایمیج ورودی به این سمت میل کند اگر این را اختصاص دادیم  همان هیستوگرام یکنواخت میشود اما اگر بخواهیم به سمت هیستوگرام هدف میل کند بسته به نوع کاربردی که مطرح هست این شکل میتواندتغییر کند .

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

این چیزی هست که با تابع هیستیکیو(histeq ) هم میتوانیم انجام دهیم . در این حالت (وقتی که J=histeq (I , hgram )  ) هست هیستوگرام ایمیج آن را طوری عوض میکنید که این هیستوگرام خروجی بشود همان  (hgram  ) که داریم و این بردار باید شامل یک سری اعداد صحیح باشد که تعداد مطلوب هر کدام از روشنائی ها را نشان بدهد ودر واقع برای تصاویرباینری اگر hgram    برای یک تصویر یونیت 8 است باید بردار 256 اِلِمان داشته باشد اما برای تصاویر دابل باید تابع بدهید خود این تابع کاری میکند که مجموع اِلِمان های هیستوگرام برابر مجموع نقاط خود تصویرهم باشد برای اینکه اعداد هیستوگرام ی که داشتیم را با هم جمع بکنیم باید برابر تعداد پیکسل های تصویر باشد (مجموع فراوانی همه کلاس ها باهم میشود مجموع کل فراوانی )

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

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

%% Load Image
Mu = 180 ;
Sigma = 30 ;
H=@(X) exp(-1/(2*sigma^2)*(x-mu).^2;
X=0:255;
Hgram=H(x);
stem(x,hgram);
npixel=numel(img1);
>>size(img1)
Ans=
291    240
>>291*240
Ans=
69840
>>prod(size))
Ans=
69840

اما به جای همه اینها میتوانیم بنویسیم

>>numel(img1)
Ans =
69840

بایدکاری کنیم که مجموع Hgram بشود برابر npixel

 

Hgram= Hgram/sum(hgram);
>>sum(hgram)
Ans=
1.000
>>hgram=npixel*hgram/sun(hgram);

F5را بزنیم نمودار میاید و اعداد بزرگ میشوند.

 

 نمودارشدت نور تصاویر

مجموع این ها را بخواهیم حساب کنیم میشود

>>sum(hgram)
Ans=
6.9840e+04

چون اعداد غیر صحیح هستند همه را به نزدیکترین عدد صحیح رُند میکنیم .

>>sum(hgram) Ans= 69832 
>>npixel Npixel= 69840

در هیستوگرام هدف شدت نور تصاویر متلب وتابع Hgram  وقتی  هیستوگرام را به یک تصویر دیگراعمال کنیم   :

Img2=histeq(img1,hgram);
% % show Results
Figure ;
Subplot ( 2 , 2 , 1 ) ;
imshow ( img 1 ) ;
title ( ‘ original Image ‘ ) ;
subplot ( 2 , 2 , 2 ) ;
imshow ( img 2 ) ;
title ( ‘ Result of histeq ‘ ) ;
subplot ( 2 , 2 , 3 ) ;
imhist ( img 1 ) ;
subplot ( 2 , 2 , 4 ) ;
imhist ( img 2 ) ;

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

 

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

میخواهیم دو تا قله داشته باشیم

Img 1 imread ( ‘ pout . tif ‘ ) ;
Npixel 1 = nume 1 ( img 1 ) ;
W 1 = 5 ;
Mu 1 = 50 ;
Sigma 1 = 30 ;
W2 = 10 ;
Mu 2 =180 ;
Sigma 2 = 50 ;
H = @ ( X ) w 1 * exp ( -1 / ( 2 * sigma 1 ^ 2 ) * ( x – mu 1 ) . ^ 2 )  +w 2 * exp ( -1 / (2 * sigma 2 ^ 2 ) * (x – mu 2 ) . ^ 2 ) ;
X = 0 : 255 ;
Hgram = H ( x ) ;
Hgram = round ( npixe 1 * hgram / sum ( hgram ) ) ;
Img 2 = histeq ( img , hgram ) ;

 

 

 

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

 

همچین شکلی اتفاق می افتد .

 

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

 

به هر حال با تغییراتی که بر هیستوگرام هدف شدت نور تصاویر متلب وتابع Hgramانجام میدهیم یک جاهائی هست که میتوانیم به یک شکل مطلوب برسیم چیزی که یک تفکیکی رابرای ما به شکل بهینه قائل میشود حالا چه طور میتوانیم این را به صورت بهترین هیستوگرام مبدا پیدا بکنیم ؟

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

به عنوان مثال انحراف معیار این را به میزان تفکیک پذیری به شکل یک تابع هدف در نظر گرفت وسپرد دست یک الگوریتم بهینه سازی (مثل الگوریتم کلاسیک یا الگوریتم ژنتیک )که پارامترهای این را طوری پیدا میکند که در خروجی ما بیشترین تفکیک پذیری را بین دو بخش از تصویر داشته باشیم .

دربحث هیستوگرام مچینگ از نظر تئوری تصویر را با هیستیکیو تبدیل میکند به یک تصویر با هیستوگرام یکنواخت و یکنواخت را هم تبدیل میکند به آن چیزی که ما میخواهیم در واقع دو بار کار تبدیل را انجام میدهد .

 

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

چیزی که از هیستوگرام هدف گفتیم با پیش زمینه ذهنی بیان میشود ما رفتار تصادفی ابجکت ها در شئر را با یک تابع توزیع احتمال تخمین میزنیم توصیف میکنیم بعد کار هیستوگرام کوالیزیشن را انجام میدهیم .

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

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

 

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

جداگانه بخش های مختلف را آورده و به همچین مکانیزمی رسیده (خیلی مرکز گرا است)

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

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

 

ادامه آموزش نرم افزار متلب در بخش 8