کاربرد تابع normalize - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

کاربرد تابع normalize

+2 امتیاز
134 بازدید

سلام

میخواستم بدونم تابع normalize  چه کاری انجام میده و برای چه کاریباید از این تابع استفاده کنیم

خیلی ممنون

 

سوال شده اسفند 11, 1392  بوسیله ی mohsen (امتیاز 85)   11

1 پاسخ

+5 امتیاز
 
بهترین پاسخ

نرمالایز یا تو فیلد پردازش تصویر Contrast stretching هستش یک تکنیک ساده ارتقاء تصویر هستش که سعی می کنه کنتراست تصویر را افزایش بده این طور تصور کنید که از داده های تصویر تون هیستوگرام گرفتید به صورت شکل زیر شده .

 

همانطوری که می بینید پراکندگی پیکسل ها در بازه مشخصی هستش و شما در تصویر نه سیاه و نه سفید مطلق دارید با نرمالیز کردن می تونید طوری توزیع را مقدار پیکسل ها را تغییر بدید که کل بازه 0 تا 255 را پوشش بده که هیستوگرام و تصویر بعد از نرمالیزمیشه به صورت زیر:

 

یک نکته ای را که باید متذکر بشم تفاوت Normalize با histogram equalization هستش عملیات نرمالیز به صورت خطی داده ها را تغییر مقیاس میده ولی عملیات histogram equalization به صورت غیر خطی هستش.

 

اما توضیح فرمول برای نرمالیز کردن.

تصویر فعلی که قرار نرمالیز بشه دارای یک Max و Min هستش و شما قصد دارید تصویر را به بازه جدید تغییر مقیاس دهید یعنی یک بازه با حد پایین NewMin و حد بالای NewMax که ما توی تصویر معمولاً از بازه 0 و 255 استفاده می کنیم. حال باید dynamic range تصویر اصلی و تصویر نهایی را به صورت زیر محاسبه کنید.

dr_src = Max - Min

dr_dst = NewMax - NewMin

پس از آن مقدار scale  را محاسبه می کنیم.

scale = dr_dst/dr_src

I_n = (I - Min) * scale + NewMin

یکی دیگه از کاربردهای آماری دیگه ای که داره گاهی اوقات شما آرایه ای از مقادیر دارید و بازه اعداد ممکنه متفاوت باشند در این شرایط شما می تونید از نرمالیز استفاده کرده و داده را به بازه دلخواه تغییر مقیاس بدید مثال خیلی کاربردیش زمانیکه شما قصد دارید یک شبکه عصبی MLP را آموزش بدید و در شرایطی که active function شما از نوع سیگموید باشه برای همگرایی سریع شبکه باید داده های ورودی شبکه در بازه منفی یک و یک باشه که شما به راحتی می تونید با نرمالیز کردن داده های ورودی به شکل مطلوب تغییرشون بدید.

پاسخ داده شده اسفند 11, 1392 بوسیله ی مصطفی ساتکی (امتیاز 16,732)   17 25 66
...