پردازش تصویر در #C

یکشنبه 29 آذر 1394

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

پردازش تصویر در #C

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

پردازش خطی

پردازش خطی و انواع آن را بررسی خواهیم کرد.  پردازش خطی شامل identity یا هویت ساده  و تبدیل منفی است.  تبدیل هویت را مورد بحث قرار خواهیم داد .

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

 Log Transform

اولین نوع از پردازش خطی   Log Transform  یا تبدیل لگاریتمی است که  به صورت زیر تعریف می شود.

s = c log(r + 1)

S  و  R  مقدار   پیکسل تصاویر خروجی و ورودی هستند و  C  یک ثابت است. مقدار 1 به هر مقدار پیکسل تصویر ورودی اضافه می شود چرا که اگر مقدار اولیه پیکسل  0  باشد آنگاه log(0)   برابر است با بینهایت. پس مقدار 1 را اضافه میکنیم تا مقدار مینیمم حداقل یک باشد.

s = c log(r + 1)
c = 255/log(1+r)

Negative Transform

دومین پردازش خطی ، تبدیل منفی یا  Negative Transform  است که بر عکس تبدیل هویت است. در تبدیل منفی هر مقدار از تصویر ورودی از  L-1 کم می شود و در تصویر خروجی نگاشت می شود.  که به صورت زیر تعریف می شود.

s = (L – 1) – r
s = 255 – r

 Power-law Transform

در Power law transformation  دو تبدیل بیشتر وجود دارد که شامل توان n و ریشه n  است. که به صورت زیر تعریف می شوند.

s=cr^γ

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

s = 255*(r/255)^gamma

Gray Transform

به صورت زیر تعریف می شود و تصویر ورودی را به رنگ خاکستری در می آورد :

int gray =(R+G+B)/3;

نحوه استفاده از آن به صورت زیر می باشد :

public Bitmap gray(Bitmap resim)
{
    Color p;
    for (int y = 0; y < resim.Height; y++)
    {
        for (int x = 0; x < resim.Width; x++)
        {
            p = resim.GetPixel(x, y);
            int gri = (p.R + p.G + p.B) / 3;
            resim.SetPixel(x, y, Color.FromArgb(p.A, gri, gri, gri));
        }
    }
    return resim;
}

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 3k بازدید
  • 5 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید