کاربرد smooth چیه؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۲۲۰ نفر آنلاین
۷۰ عضو و ۱۵۰ مهمان در سایت حاضرند

کاربرد smooth چیه؟

+3 امتیاز
سلام. انواع روش هایی که برای smooth کردن تصویر وجود دارند چه فرقی دارن با هم؟ چطور بایستی در جاهای مختلف استفادشون کنیم.؟
سوال شده آذر 29, 1392  بوسیله ی saleh110 (امتیاز 70)   2 11 16
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ
smooth کردن با blur کردن که بارها تو پردازش تصویر استفاده میشه چه توی تصویرو چه ویژگی هایی از تصویر استخراج کردیم .اغلب زمانی استفاده میشه ما قصد داشته باشیم نویز رو توی سیگنال یک بعدی و دو بعدی کاهش بدیم.تو حوزه مکانی به حوزه فرکانس تبدیل می کنیم تصویر به 2 ناحیه تقسیم میشه ناحیه فرکانس پایین و ناحیه فرکانس بالا.
ناحیه فرکانس پایین نواحی هستند که پیکسل مقادیرشون به هم نزدیک یا به عبارت دیگر واریانس در این ناحیه پایین نواحی فرکانس بالا نواحی هستند مثل لبه ها که در این نواحی
مقادیر شدت نور پیکسل تغییراتی شدیدی دارند یا به عبارت دیگر واریانس مقادیر بالا هستش.(برای تحلیل فرکانس می تونید از تبدیل فوریه و تبدیل کسینوسی استفده کنید)
ممکنه بار ها فیلتر پایین گذر یا بالاگذر را شنیده باشید به فیلتری پایین گذر گفته میشه که فرکانس های بالا را کاهش بده و  به فیلتری بالا گذر گفته میشه که فرکانس های پایین را کاهش بده.
smooth کردن در واقع فیلتر پایین گذر هستش که قصد داره فرکانس های بالا را حذف کنه.انواع فیلترها از یک کرنل ثابت استفاده می کنند و این کرنل را در کل تصویر کانوالو می کنند.
 یک چیزی ساده ای که به ذهن همه میرسه و به سادگی میشه ازش استفاده کرد مثل میانگین با وزن یکسان هستش که تو یک پنجره همه پیکسل ها رو با هم جمع کرده و بر مساحت پنجره تقسیم کنید این نوع فیلتر به box شهرت داره از این نوع فیلتر جهت حذف additive white noise استفاده میشه.تابعی هم که در OpenCV نسخه C++ برای اینکار در نر گرفته شده blur هستش نکته دیگر اینکه در بین فیلترهای پایین گذر این فیلتر به علت سادگی از همه فیلترهای دیگر سریع تر هستش.
یکی از فیلترهای دیگری که خیلی کاربردی هستش فیلتر گوسین هست که بجای استفاده از وزن های یکسان از وزن هایی استفاده میکنه در میان کرنل قوی تر و در اطراف کرنل ضعیف تر هستند شکل یک بعدی توزیع گوسین بهمراه فرمولش را در زیر قرار دادم.
از این نوع فیلتر جهت حذف aaditive gaussian noise استفاده میشه و تو Opencv هم می تونید از تابع GaussianBlur برای اینکار استفاده کنید.
یکی از مشکلاتی که 2 فیلتر بالا دارند تر و خشک را با هم می سوزنند گاهی اوقات شما قصد دارید تصویر را smooth کنید ولی لبه به همان قوت سابق باقی بمونه با 2 فیلتر بالا لبه های نیز smooth می شن زمانیکه قصد انجام چنین کاری را داشته باشید می تونید از فیلترBilateral استفاده کنید.این فیلتربرای محاسبه وزن در کرنل از روش گوسین استفاده میکنه با این تفاوت فیلتر گوسین در هر بلوک به طور جداگانه محاسبه میشه ولی در گوسین معولی به این صورت نیست به تعبیر دیگه هرچه در نقاط لبه باشیم نقطه وسط توزیع بیشتر تقویت شده و هر چقدر در نقاط غیر لبه باشیم که واریانس کمی دارند peak توزیع گوسین کوتاهتر میشه .تو OpenCV هم می تونید از تابع bilateralFilter برای اینکار استفاده کنید.
فیلتر بعدی که باید کمی در موردش توضیح بدم فیلتر median هستش از این فیلتر جهت از بین بردن نویز salt &papper استفاده میشه این فیلتر بدین صورت عمل می کنه
که تمام مقادیر در مجاورت پیکسل جاری به اندازه کرنل در یک لیست قرار میده سپس این مقادیر را sort میکنه و سپس میانه این مقادیر را محاسبه می کنه این مقدار را
در پیکسل جاری قرار میده تو OpenCV هم می تونید از تابع medianBlur برای اینکار استفاده کنید. در شکل پایین با استفاده از فیلتر median نویز حذف شده .
 
 
در ضمن شما همه این فیلتر ها رو می تونید بر روی آرایه یا vector نیز اعمال کنید چون برخی اوقات شما داده ها را از profile ، projection و غیره محاسبه می کنید
که در آنها هم نیاز به حذف فیلتر دارید.
 

 

پاسخ داده شده دی 2, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد دی 2, 1392 بوسیله ی saleh110
...