#c, image processing, پردازش تصویر, پردازش تصویر در سی شارپ, سی شارپ

تبدیل لگاریتمی در سی شارپ (Logarithmic transformation)

تبدیل لگاریتمی در سی شارپ

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

  1. خواندن تصاویر در سی شارپ
  2. ایجاد تصویر در سی شارپ
  3. حلقه For در سی شارپ

بهبود تصاویر در سی شارپ

تصاویر بهبود یافته در مقایسه با تصاویری که بهبود یافته نیستند، جزییات بیشتری را نشان می‌دهد و جالب‌تر اینکه در صنعت پزشکی و تصاویر جغرافیایی کاربردهای بسیاری نیز دارند. معمولا برای بهبود تصاویر از transformation یا تبدیلات استفاده می‌کنند. تبدیلات یک سری توابعی هستند که با تغییرات مختلف بر روی هر پیکسل از تصویر ما باعث تغییر و بهبود آنها می‌شوند.

تابع تبدیل به صورت زیر تعریف می‌شود:

s = T ( r )

r همان پیکسلهای تصویر اصلی ماست و T تابع تبدیل ما است که تغییراتی بر روی ورودی(r) خود می‌دهد و s هم تصویر بهبود یافته است که از تابع تبدیل T بدست آمده است. در این آموزش تبدیل لگاریتمی را پیاده سازی می‌کنیم.

تبدیل لگاریتمی در سی شارپ

تبدیل لگاریتمی برای روشن کردن تصاویر سیاه و سفید استفاده می‌شود. فرمول این تبدیل به صورت زیر است:

s = c log(r + 1)

در فرمول بالا c یک متغیر ثابت است که هر عددی می‌توان به آن داد. متغیر r ورودی مسئله است و s خروجی این فرمول می‌باشد. برای پیاده سازی تبدیل لگاریتمی در سی شارپ از تصویر زیر استفاده شده است.

کد این تبدیل به صورت زیر می‌باشد:

class MainClass
	{
		public static void Main (string[] args)
		{
			Bitmap myBitmap = new Bitmap("LogTransformation.jpg");
			int width = myBitmap.Width;
			int height = myBitmap.Height;
			Bitmap output = new Bitmap(width, height);
			for (int x = 0; x < width; x++)
			{
				for (int y = 0; y < height; y++)
				{                    
					int red = myBitmap.GetPixel (x, y).R;
					int green = myBitmap.GetPixel (x, y).G;
					int blue = myBitmap.GetPixel (x, y).B;
					int c = 100;
					int newred =(int) (c * Math.Log10(red + 1));
					int newgreen =(int) (c * Math.Log10(green + 1));
					int newblue =(int) (c * Math.Log10(blue + 1));
					Color pixelColor = myBitmap.GetPixel(x, y);
					output.SetPixel(x, y, Color.FromArgb( newred, newgreen, newblue));
				}
			}
			output.Save("LogTransformation output.jpg");
			Console.WriteLine ("Press any key to Finish Transformation....");
			Console.ReadKey ();
		}
	}

در ابتدای کد بالا یک تصویر را خوانده و سپس تک تک پیکسل‌های آن را با فرمول تبدیل لگاریتمی تغییر می‌دهیم (درون 2 حلقه For) در آخر عکس تبدیل شده را ذخیره می‌کنیم. متغیرهای newred و newgreen و newblue پیکسل‌های جدید ما هستند. فایل خروجی به صورت زیر است:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *