1 ضمیمه
آموزش پردازش تصویر از پایه در C#
جلسه ی اول:آشنایی با نحوه ی وارد کردن تصویر در C#
سلام خدمت دوستان خوبم،در این تاپیک به آموزش پردازش تصویر در C# از پایه می پردازیم. امیدوارم که آموزش رو به طور مستمر دنبال کنید و براتون مفید باشه...
اول یک PictureBox به فرم اضافه می کنیم سپس برای نمایش یک فایل گرافیکی ما شئ Bitmap استفاده می کنیم به صورت زیر:
http://uploadkon.ir/uploads/322d8f99...fe117c3a3f.jpg
Bitmap bmp = new Bitmap("آدرس عکس");
pictureBox1.Image = bmp;
اکنون برنامه را اجرا کنید . می بینید که تصویر مورد نظر فراخوانی و در PictureBox نمایش داده شده است.
برخی از ویژگی های کلاس PictureBox
ClienRectangle :کادر مشخص کننده محدوده کنترل (بدون در نظر گرفتن نوارهای لغزان , حاشیه ها , نوار عنوان و...)
Image : مشخص کننده کلاس Image که در بردارنده تصویری است که نمایش داده میشود.
SizeMode :تعیین نحوه نمایش تصویر.
نقل قول: آموزش پردازش تصویر از پایه در C#
جلسه 2:انجام تغییرات روی پیکسل ها بدون استفاده از اشاره گر ها
در ابتدا به این نکته دقت کنید که برای پردازش تصویر در C# بایستی برای دسترسی به سرعت بالا از اشاره گر ها استفاده کنید ولی در ابتدا من این کار رو انجام نمی دهم تا در ابتدا به طور کلی با پردازش تصویر آشنا شوید و سپس وارد کار با اشاره گر ها خواهیم شد.
برای دریافت رنگ یک پیکسل دلخواه از getpixel به صورت زیر استفاده می کنیم.
BMP.GetPixel(x, y);
برای تنظیم رنگ یک نقطه یا پیکسل هم به صورت زیر استفاده می کنیم.
BMP.SetPixel(x, y, (red,green,blue));
رنگ پیکسلی را که با دستور get pixel به دست می آید می توان با فرمول زیر رنگ های آبی , قرمز , سبز را تفکیک کرد.
r = color % 256 ;
g = ( color % ( 256 * 256 ) ) / 256 ;
b = color / ( 256 * 256 ) ;
البته در #c یک شئ Color وجود دارد که می تواند خود رنگهای اصلی را تفکیک بدهد.
نقل قول: آموزش پردازش تصویر از پایه در C#
جلسه3:طریقه ی پیمایش تمام پیکسل های تصویر
یکی از کارهای مهم که در پردازش تصویر انجام می شود نحوه پیمایش یک شئ گرافیکی می باشد , که نحوه دسترسی به اجزا یا پیکسل های یک تصویر برای تحلیل و پیاده سازی الگوریتم ها ی خود بر روی تصاویر می باشد. همانطور که می دانید تصاویر ما دو بعدی هستند پس ما دارای دو بردار X,Y برای تعیین مختصات داریم.
برای پیمایش یک شئ گرافیکی در زبان C# روشهای مختلفی وجود دارد که ما در اینجا فعلا یک روش را به شما معرفی می کنیم.
Color col;
for (int i = 0; i < Int32.Parse(BMP.Width.ToString()); i++)
{
for (int j = 0; j < Int32.Parse(BMP.Height.ToString()); j++)
{
col = BMP.GetPixel(i, j);
BMP.SetPixel(i, j, Color.FromArgb(RGBست کردن رنگ دلخواه بر اساس ));
}
}
نقل قول: آموزش پردازش تصویر از پایه در C#
جلسه4:نگاتیو کردن عکس
یکی از ساده ترین فیلتر ها در پردازش تصویر فیلتر نگاتیو کردن می باشد.به وسیله ی این فیلتر مقدار رنگ قرمز،سبز و آبی هر پیکسل از عدد 255 کم می شود و در اصطلاح عکس نگاتیو می شود.برای اجرای این فیلتر روی عکس با استفاده از دو حلقه for شروع به پیمایش در تصویر می کنیم و رنگ هر پیکسل را با استفاده از دستور getpixel دریافت می کنیم و پس از آن به وسیله ی دستور setpixel رنگ هر پیکسل را از 255 کم کرده و به آن پیکسل اعمال می کنیم:
public Bitmap interval(Bitmap BMP){
Color col;
for (int i = 0; i < Int32.Parse(BMP.Width.ToString()); i++)
{
for (int j = 0; j < Int32.Parse(BMP.Height.ToString()); j++)
{
col = BMP.GetPixel(i, j);
BMP.SetPixel(i, j, Color.FromArgb(255 - col.R, 255 - col.G, 255 - col.B));
}
}
return BMP;
}
http://uploadkon.ir/uploads/70bc73b4...4ccb959715.pnghttp://uploadkon.ir/uploads/8984eaa9...a4c3a67305.png
نقل قول: آموزش پردازش تصویر از پایه در C#
جلسه5:فیلتر تنظیم روشنایی و فیلتر سیاه سفید
فیلتر تنظیم روشنایی:
Bitmap BMP = new Bitmap("adress of picture");
Color col;
int r, g, b;
for (int i = 0; i < Int32.Parse(BMP.Width.ToString()); i++)
{
for (int j = 0; j < Int32.Parse(BMP.Height.ToString()); j++)
{
col = BMP.GetPixel(i, j);
r = Int32.Parse(hScrollBar1.Value.ToString()) + col.R;
g = Int32.Parse(hScrollBar1.Value.ToString()) + col.G;
b = Int32.Parse(hScrollBar1.Value.ToString()) + col.B;
if (r > 255)
r = 255;
else if (r < 0)
r = 0;
if (g > 255)
g = 255;
else if (g < 0)
g = 0;
if (b > 255)
b = 255;
else if (b < 0)
b = 0;
BMP.SetPixel(i, j, Color.FromArgb(r, g, b));
pictureBox2.Image = BMP;
}
}
در برنامه ی بالا از یک اسکرول بار استفده شده است و عدد آن به مقدار رنگ هر پیکسل اضافه یا کم می شود و اگر مقدار رنگ از 255 بیشتر شدT، عدد 255 و اگر از صفر کمتر شد، عدد 0 به عنوان رنگ پیکسل در نظر گرفته می شود.
http://uploadkon.ir/uploads/70bc73b4...4ccb959715.png
http://uploadkon.ir/uploads/13841047...95a156161b.png
فیلتر سیاه سفید:
Bitmap BMP = new Bitmap("adress of picture");
Color col;
int r, g, b, rgb;
byte blue, green, red;
for (int i = 0; i < Int32.Parse(BMP.Width.ToString()); i++)
{
for (int j = 0; j < Int32.Parse(BMP.Height.ToString()); j++)
{
col = BMP.GetPixel(i, j);
blue = col.B;
green = col.G;
red = col.R;
if (red < 128)
{
BMP.SetPixel(i, j, Color.FromArgb(0, 0, 0));
}
if (red >= 128)
{
BMP.SetPixel(i, j, Color.FromArgb(255, 255, 255));
}
}
}
pictureBox2.Image = BMP;
اگز مقدار رنگ پیکسل از 128 بیشتر بود،پیکسل به رنگ سفید و اگر کمتر بود، به رنگ سیاه در خواهد آمد.
http://uploadkon.ir/uploads/b04cd879...c84c9fb1cd.png
1 ضمیمه
نقل قول: آموزش پردازش تصویر از پایه در C#
من قبلن قبنا یه عالمه از این کدها نوشته بودم برای تغییر دادن تصاویر تو سی شارپ.
مثلا افکت های هنری مثل oilpainting و موزتئیک و کارهای ساده دیگه و کانولوشن و لبه یابی و اینا...
اینها رو برای دانلود گذاشتم اینجا شاید بدردتون خورد.
البته پیشنهاد میکنم کتابخانه AFORGE رو دانلود کنید که کد بازه خیلی از کدهارو میتونید از اونجا کمک بگیرید.
نقل قول: آموزش پردازش تصویر از پایه در C#
ببخشید مورد Crop کردن عکس هم یه توضیحی میدید ؟!
چطوری میشه قسمتی از عکس مثلا از (5,5) تا (20,20) رو انتخاب کرد و تویه picturebox نشون داد؟
نقل قول: آموزش پردازش تصویر از پایه در C#
نقل قول:
نوشته شده توسط
mortezamsp
من قبلن قبنا یه عالمه از این کدها نوشته بودم برای تغییر دادن تصاویر تو سی شارپ.
مثلا افکت های هنری مثل oilpainting و موزتئیک و کارهای ساده دیگه و کانولوشن و لبه یابی و اینا...
اینها رو برای دانلود گذاشتم اینجا شاید بدردتون خورد.
البته پیشنهاد میکنم کتابخانه AFORGE رو دانلود کنید که کد بازه خیلی از کدهارو میتونید از اونجا کمک بگیرید.
کاش کمی توضیح بدین
من این ترم گرافیک کامپیوتری دارم
اگه میشه توضیح بدین /از اونجا که معلومه شما واردین تو این درس و مباحث ...
ما الان تا لبه یابی خوندیم
از برنامه ای که گذاشتین هیچی سر در نیوردم
لطفا توضبح بدین
کمک کنین ...
نقل قول: آموزش پردازش تصویر از پایه در C#
مثلا این تابع : static public string edge(string filename)
که در فایل edge.cs هست، آدرس یک فایل بیت مپ رو میگیره و تصویر لبه یابی شده رو تو یه فایل بیت مپ ذخیزه میکنه و اسم اون رو برمیگردونه.
یا مثلا تابع public static Bitmap ApplyFilter(ref Bitmap image, int[,] filter, int filtersize, int filterZarib)
تو فایل filters.cs یک رفرنس به بیت مپ میگیره و یک آرایه دوبعدی که اون رو روی تصویر کانولو میکنه. و اندازه ماتریس و ضریب اون.
نمیدونم اگه به کد نگاه کنین راحت میفهمین...
نقل قول: آموزش پردازش تصویر از پایه در C#
آقا خوب داری پیش میری ادامه بده
نقل قول: آموزش پردازش تصویر از پایه در C#
خیلی ممنون توضیحات خیلی خوبی بود امیدوارم در کارهایتان موفق باشد و اجرکمم عند الله:لبخندساده:
نقل قول: آموزش پردازش تصویر از پایه در C#
دلیل جواب ندادن این کد چیه
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
Color k1;
int i1;
k1 = picture.GetPixel(e.X, e.Y);
i1=(k1.B+k1.R+k1.G)/3;
MessageBox.Show(Convert.ToString(i1));
}
نقل قول: آموزش پردازش تصویر از پایه در C#
نقل قول:
نوشته شده توسط
modern_amin
دلیل جواب ندادن این کد چیه
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
Color k1;
int i1;
k1 = picture.GetPixel(e.X, e.Y);
i1=(k1.B+k1.R+k1.G)/3;
MessageBox.Show(Convert.ToString(i1));
}
شما کد رو به صورت زیر تغییر بدید:
Color k1;
int i1;
k1 =((Bitmap)pictureBox1.Image).GetPixel(e.X, e.Y);
i1 = (k1.B + k1.R + k1.G) / 3;
MessageBox.Show(Convert.ToString(i1));
نقل قول: آموزش پردازش تصویر از پایه در C#
سلام
خسته نباشید
اگه بخواییم تو یه عکسه سیاهو سفید که دو یا سه تیکه سفید داره، پیکسل تیکه های سفیدو جدا جد ا بدست بیاریم چیکار باید کرد؟؟؟؟؟؟؟؟؟؟:گریه:
کلشو بدست آوردم جداگونش مونده
پلیززززززز کمک کنید
نقل قول: آموزش پردازش تصویر از پایه در C#
دمت گرم خیلی قشنگ توضیح دادی.
اگه بخوایم یه مقدار و از تصویر در بیاریم چیکار باید بکنیم مثلا داخل تصویر عدد پنج کشیده شده و بعد از پردازش مثلا داخل یک تکست باکس بنویسه پنج
نقل قول: آموزش پردازش تصویر از پایه در C#
سلام اگه بخوایم تمام کدهای رنگ هر پیکسل در یک تصویر رو داشته باشیم باید چکار کنیم ممنون می شم کدش رو بنویسید
نقل قول: آموزش پردازش تصویر از پایه در C#
سلام ، ببخشید که تاپیک رو بالا میارم ، ممنون از توضیحات .
چطور میشه مختصات یک شی (مثلا یک دایره ) رو در تصویر بدست آورد ؟
نقل قول: آموزش پردازش تصویر از پایه در C#
سلام ، ممنون بابت اموزش خوبتون امیدوارم بازم ادامه داشته باشه
ی سوال دارم
اینکه من یک تصویر سیاه سفید دارم که در بعضی قسمت های تصویر یک تیکه سیاه وجود داره ، یعنی پیکسل ها کاملا سیاه هستند
حالا من چطوری میتونم دور این قسمت های سیاه رو خط بکشم ؟؟
یجوری مشخص کردن پیکسل های کاملا سیاه میشه که کنار هم تشکیل یک لکه سیاه میکنند
نقل قول: آموزش پردازش تصویر از پایه در C#
سلام ببخشید من می خوام یه عکس تو فرم لود کنم بعد تابعی بنویسم دوعدد تصادفی تولید کنه واون دوعدد در حکم مختصاتxوy, پیکسل روی عکس رو به من نشون بده و اطلاعات rgbرو هم نمایش بده لطفا مرا راهنمایی بفرمایید.
نقل قول: آموزش پردازش تصویر از پایه در C#
نقل قول: آموزش پردازش تصویر از پایه در C#
نقل قول:
نوشته شده توسط
mortezamsp
من قبلن قبنا یه عالمه از این کدها نوشته بودم برای تغییر دادن تصاویر تو سی شارپ.
مثلا افکت های هنری مثل oilpainting و موزتئیک و کارهای ساده دیگه و کانولوشن و لبه یابی و اینا...
اینها رو برای دانلود گذاشتم اینجا شاید بدردتون خورد.
البته پیشنهاد میکنم کتابخانه AFORGE رو دانلود کنید که کد بازه خیلی از کدهارو میتونید از اونجا کمک بگیرید.
استاد فایل ضمیمش یا فایل هایی ک برای دانلود گفتید کجاست چطوری باید دانلودشون کنم ؟؟