|
|
میانگین گیری از تصویر
فرض کنید چند تصویر یکسان داریم که بر روی هرکدام از آنها نویزهای مختلفی وجود دارد
و می خواهیم کیفیت این تصاویر را ارتقا دهیم. در چنین مواردی می توان از میانگن
گیری از همه تصاویر استفاده کنیم . بدین صورت که مقادیر پیکسل های متناظر در همه
تصاویر را باهم جمع کرده و سپس به تعداد کل تصاویر تقسیم کنیم. بدیهی است که هرقدر
تعداد تصاویر برای میانگین گیری بیشتر باشد ، تصویر حاصل از میانگین گیری آنها نیز
بیشتر به واقعیت نزدیک خواهد بود. به عنوان مثال مجموعه تصاویر زیر، تصویر
بدون نویز ، تصاویر نویز دار و حاصل میانگین تیری از تصاویر نویز را نشان می
دهد:
|
|
|
|
|
|
تصویر نویزدار |
تصویر نویزدار |
تصویر نویزدار |
تصویر نویزدار |
تصویر بدون نویز |
|
|
|
|
|
|
|
|
|
میانگین تصاویر نویزدار |
|
|
شبه کد زیر نحوه پیاده سازی عملگر میانگین را نشان می دهد : |
Procedure Average( bmp1 , bmp2 :Image)
Begin
Result:Image
For 1 To Height Do
For 1 To Width Do
Result.Pixels[ i , j] = ( bmp1.Pixels[ i , j ] + bmp2.Pixels[ i , j ] ) /2
End For
End For
End
|
|
هنگام تفریق مقادیر پیکس ها ، مقادیر منفی را به مقدار صفر تبدیل می کنیم . همچنینی
می توانیم هنگام تفرق از قدرمطلق تفریق نیز استفاده کنیم. به عنوان یک مثال کاربردی
از تفریق دو تصویر می توان به شناسایی حرکت در سیستم های دوربین مدار بسته اشاره
کرد. زمانی می گوییم حرکت رخ داده است که در بین دو فریم متوالی گرفته شده از
دوربین اختلاف وجود داشته باشد. و همانطور که در ابتدا یادآور شدیم، برای محاسبه
اختلاف بین دو تصویر از عملگر تفریق استفاده می کنیم. بنابراین با تفریق فریم فعلی
و فریم قبلی گرفته شده از دوربین می توانیم اختلاف موجود در دو تصویر را پیدا کنیم.
از دیگر کاربردهای تفریق دو تصویر می توان به حذف پشت زمینه ثابت از تصویر اشاره
کرد.
پردازش تصویر در MATLAB :
برای میانگین گیری از تصویر در محیط MALTAB به صورت زیر می توان عمل کرد :
|
>> im = imread('cameraman.tif');
>> imshow(im);
>> im1 = imread('rice.png');
>> imshow(im1);
>> imAvg = imadd(im,im1) ./ 2;
>> imshow(imAvg); |
|
|