تفریق دو تصویر

تفریق دو تصویر هم اندازه بدین مفهوم است که شدت روشنایی پیکسل های متناظر دو تصویر را از هم کم کنیم . فرض کنید می خواهیم تغییرات مغز افرادی را بررسی کنیم که دچار بیماری آلزایمر هستند. برای این منظور می توانیم تصویری از یک مغز سالم را در مراحل مختلف با تصویر مغز فردی که دچار بیماری آلزایمر است ، مقایسه کنیم . با اعمال عملگر فوق بر روی دو تصویر مذکور نقاطی از مغز که در آن نقاط مغر دچار تغییر شده است مشخص می شوند . تصویر زیر عکس اسکن PET مغز نرمال و بیمار را به همراه حاصل تفریق آن ها نشان می دهد :

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

Procedure Subtract (image1, image2 : Byte[][])
Begin
  result :Byte[][]
  sub:integer
  For i = 1 To Height Do
    For j = 1 To Width Do
      sub = image1[i, j] - image2[i, j]
      result[i, j] = sub < 0 ? 0 : sub
    End For
  End For
  Return result
End

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

پردازش تصویر در MATLAB

برای تفریق دو تصویر هم اندازه از تابع imsubtract در MATLAB می توان استفاده کرد. به عنوان مثال مجموعه دستورات زیر دو تصویر را خوانده و حاصل تفریق آن ها را نشان می دهد.

>> im = imread('rice.png');
>> imshow(im);
>> imBack = imread('background.png');
>> imshow(imBack);
>> res = imsubtract(im,imBack);