پردازش تصویر در #C
یکشنبه 29 آذر 1394در این مقاله قصد داریم پردازش تصویر را در یک Windows form بررسی کنیم و پردازش خطی و انواع تبدیلها در آن را تعریف کنیم. برنامه یک تصویر ورودی را گرفته و پس از اعمال فیلترها می تواند آن را ذخیره کند.
در این مقاله قصد داریم پردازش تصویر را در یک 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; }
- C#.net
- 3k بازدید
- 5 تشکر