جمع دو تصویر  (پردازش تصویر)

جمع دو تصویر بدین مفهموم است که در دوتصویر ، شدت روشنایی پیکسل های متناظر دو تصویر را از باهم جمع کنیم . تصاویر زیر نتیجه اعمال عملگر جمع را نشان می دهند: 
AISRG AISRG AISRG
حاصل جمع دو تصویر تصویر دوم تصویر اول

 شبه کد زیر نحوه پیاده سازی عملگر جمع را نشان می دهد :
 
Procedure Add (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 > 255 ? 255 : sub
    End For
  End For
  Return result
End

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

پردازش تصویر در MATLAB :
برای تفریق دو تصویر هم اندازه از تابع imadd در MATLAB می توان استفاده کرد. به عنوان مثال مجموعه دستورات زیر دو تصویر را خوانده و حاصل جمع آن ها را نشان می دهد.
>> im = imread('rice.png');
>> imshow(im);
>> imBack = imread('background.png');
>> imshow(imBack);
>> res = imadd(im,imBack);
منبع : www.hamedhabibi.com

تفریق دو تصویر  (پردازش تصویر)

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

 شبه کد زیر نحوه پیاده سازی عملگر تفریق را نشان می دهد :
 
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);
منبع : www.hamedhabibi.com

خاکستری (Grayscale) کردن تصویر  (پردازش تصویر)

در رایج ترین مدل رنگ گرافیک کامیوتری، رنگ ها از ترکیب سه رنگ قرمز، سبز و آبی به وجود می آیند که در مجموع 16581375 رنگ متفاوت توسط این سه مولفه می توان تولید کرد. این مدل رنگ در گرافیک کامپیوتری با نام RGB شناخته می شود. در کنار مدل رنگ RGB مدل های دیگری همچون CMYK ، HSI ، HSV و Grayscale نیز وجود دارد که هریک از آن ها به روش متفاوتی به نمایش رنگ ها می پردازند. در این بین مدل رنگ Grayscale از اهمیت ویژه ای برای ما برخوردار است. چرا که در بیشتر کاربردها نیازی به یک تصویر رنگی نمی باشد و داشتن تنها یک تصویر خاکستری کافی خواهد بود. در میان عموم ، تصویر خاکستری با نام تصویر سیاه و سفید شناخته می شود (البته استفاده از نام سیاه سفید به جای خاکستری اشتباه است و در اینجا فقط برای روشن تر شدن مطلب از این نام استفاده کرده ایم)

یک تصویر RGB متشکل از سه ماتریس است که هریک از آنها مقادیر Red ( قرمز ) ، Green ( سبز ) و Blue ( آبی ) تصویر رنگی را نگه می دارند. نمایش تصویر بر روی صفحه نمایش نیز از ترکیب مقادیر درآیه های متناظر در سه ماتریس انجام می پذیرد. همانطور که در ابتدا یادآور شدیم ، در بیشتر کاربردها نیازی به تصویر رنگی نداریم و استفاده از یک تصویر خاکستری کافی خواهد بود. یک پیکسل زمانی مقدار خاکستری خواهد داشت که مولفه های R ، G و B آن مقادیر یکسانی داشته باشند. با توجه به این تعریف، در مواردی که تصویر ورودی یک تصویر RGB است، برای Grayscale کردن آن از فرمول زیر می توانیم استفاده می کنیم :

                                      S_R(x, y) = S_G(x, y) = S_B(x, y) = [R(x, y) + G(x, y) + B(x, y)] / 3

در این فرمول S_X مولفه های تصویر خروجی و R ، G و B هر یک به تریبب ماتریس مولفه های سبز قرمز و آبی تصویر ورودی می باشند. شبه کد زیر نحوه Grayscale کردن یک تصویر RGB با سایز M * N را نشان می دهد :
Procedure Grayscale( output , input As Bitmap )
Begin
  For I = 1 to M Do
    For J = 1 To N Do
      Temp = ( input.R( I,J ) + input.G( I,J ) + input.B( I,J ) ) / 3
      Output.R ( I,J ) = Temp
      Output.G ( I,J ) = Temp
      Output.B ( I,J ) = Temp
    End For
  End For
End

شکل زیر یک تصویر RGB را به همراه تصویر خاکستری آن نشان می دهد :
 
AISRG AISRG
 
از آنجا که مقادیر ماتریس های R , G , B پس از Grayscale کردن تصویر باهم برابر هستند ، بنابراین می توان تنها از یک ماتریس برای نشان دادن مقادیر استفاده کرد. در الگوریتم های بعدی که برای پردازش تصویر ارائه خواهند شد از تصاویر Grayscale استفاده خواهیم کرد . بنابراین عملیات نیز بر روی تنها یک ماتریس انجام خواهد پذیرفت.

پردازش تصویر در MATLAB :
برای خاکستری کردن یک تصویر RGB می توان از تابع rgb2gray استفاده کرد. به عنوان مثال تکه کد زیر یک تصویر رنگی را خوانده و آن را به تصویر خاکستری تبدیل می کند:
 
>> im = imread('onion.png');
>> imshow(im);
>> imGray = rgb2gray(im);
>> imshow(imGray);

منبع : www.hamedhabibi.com

تصویر دیجیتالی چیست ؟  (پردازش تصویر)

یک تصویر را می توان توسط تابع دوبعدی f(x,y) نشان داد که در آن X و Y را مختصات مکانی و مقدار f در هر نقطه را شدت روشنایی تصویر درآن نقطه می نامند. اصطلاح سطح خاکستری نیز به شدت روشنایی تصاویر مونوکروم اطلاق میشود . تصاویر رنگی نیز از تعدادی تصویر دوبعدی تشکیل می شود. زمانی که مقادیر X و Y و مقدار f(x,y) با مقادیر گسسته و محدود بیان شوند ، تصویر را یک تصویر دیجیتالی می نامند. دیجیتال کردن مقادیر X و Y را Sampling و دیجیتال کردن مقدار f(x,y) را quantization گویند. برای نمایش یک تصویر M * N از یک آرایه دو بعدی ( ماتریس) که M سطر و N ستون دارد استفاده می کنیم .
مقدار هر عنصر از آرایه نشان دهنده شدت روشنایی تصویر در آن نقطه است. هر عنصر آرایه یک مقدار 8 بیتی است که می تواند مقداری بین 0 و 255 داشته باشد. مقدار صفر نشان دهنده رنگ تیره ( سیاه ) و مقدار 255 نشان دهنده رنگ روشن ( سفید ) است.
به عنوان مثال تصویر روبرو که سایز آن 288 * 265 است از یک ماتریس که دارای 288 سطر و 265 ستون است برای نمایش تصویر استفاده می کند . هر پیکسل از این تصویر نیز مقداری بین 0 و 255 دارد . نقاط روشن مقادیری نزدیک به 255 و نقاط تیره مقادیر نزدیک به 0 دارد. همه توابع پردازش تصویر از این مقادیر استفاده کرده و اعمال لازم را بر روی تصویر انجام می دهند.
AISRG

پردازش تصویر در MATLAB :
خواندن تصویر در محیط MATLAB با استفاده از تابع imread و نمایش آن توسط تابع imshow انجام می پذیرد. به عنوان مثال دستور زیر تصویر rice.png را خوانده و ماتریس مربوط به تصویر را در اختیار ما قرار می دهد(در مثال زیر این ماتریس با نام im مشخص شده است). مقدار هر عنصر در این ماتریس شدت روشنایی تصویر در آن نقطه را نشان می دهد :
 

>> im = imread('rice.png');
>> imshow(im);

منبع : www.hamedhabibi.com

مقدمه پردازش تصویر

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

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

منبع : www.hamedhabibi.com