نمایش نتایج 1 تا 21 از 21

نام تاپیک: آموزش پردازش تصویر از پایه در C#‎

  1. #1
    کاربر جدید آواتار EhsanHejazi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    قم
    سن
    29
    پست
    12

    آموزش پردازش تصویر از پایه در C#‎

    جلسه ی اول:آشنایی با نحوه ی وارد کردن تصویر در C#‎‎‎‎‎‎‎‎‎‎‎‎
    سلام خدمت دوستان خوبم،در این تاپیک به آموزش پردازش تصویر در C#‎ از پایه می پردازیم. امیدوارم که آموزش رو به طور مستمر دنبال کنید و براتون مفید باشه...
    اول یک PictureBox به فرم اضافه می کنیم سپس برای نمایش یک فایل گرافیکی ما شئ Bitmap استفاده می کنیم به صورت زیر:

    Bitmap bmp = new Bitmap("آدرس عکس");

    pictureBox1.Image = bmp;

    اکنون برنامه را اجرا کنید . می بینید که تصویر مورد نظر فراخوانی و در PictureBox نمایش داده شده است.
    برخی از ویژگی های کلاس PictureBox
    ClienRectangle :کادر مشخص کننده محدوده کنترل (بدون در نظر گرفتن نوارهای لغزان , حاشیه ها , نوار عنوان و...)
    Image : مشخص کننده کلاس Image که در بردارنده تصویری است که نمایش داده میشود.
    SizeMode :تعیین نحوه نمایش تصویر.


    عکس های ضمیمه عکس های ضمیمه  
    آخرین ویرایش به وسیله EhsanHejazi : چهارشنبه 16 فروردین 1391 در 23:45 عصر

  2. #2
    کاربر جدید آواتار EhsanHejazi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    قم
    سن
    29
    پست
    12

    نقل قول: آموزش پردازش تصویر از پایه در 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 وجود دارد که می تواند خود رنگهای اصلی را تفکیک بدهد.
    Color col;
    r = col.R;
    g = col.G;
    b = col.B;
    آخرین ویرایش به وسیله EhsanHejazi : چهارشنبه 16 فروردین 1391 در 22:42 عصر

  3. #3
    کاربر جدید آواتار EhsanHejazi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    قم
    سن
    29
    پست
    12

    نقل قول: آموزش پردازش تصویر از پایه در 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ست کردن رنگ دلخواه بر اساس ));
    }
    }
    آخرین ویرایش به وسیله EhsanHejazi : چهارشنبه 16 فروردین 1391 در 22:40 عصر

  4. #4
    کاربر جدید آواتار EhsanHejazi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    قم
    سن
    29
    پست
    12

    نقل قول: آموزش پردازش تصویر از پایه در 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;
    }

    آخرین ویرایش به وسیله EhsanHejazi : جمعه 18 فروردین 1391 در 23:08 عصر

  5. #5
    کاربر جدید آواتار EhsanHejazi
    تاریخ عضویت
    آبان 1390
    محل زندگی
    قم
    سن
    29
    پست
    12

    نقل قول: آموزش پردازش تصویر از پایه در 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 به عنوان رنگ پیکسل در نظر گرفته می شود.


    فیلتر سیاه سفید:
    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 بیشتر بود،پیکسل به رنگ سفید و اگر کمتر بود، به رنگ سیاه در خواهد آمد.
    آخرین ویرایش به وسیله EhsanHejazi : سه شنبه 22 فروردین 1391 در 13:51 عصر

  6. #6

    نقل قول: آموزش پردازش تصویر از پایه در C#‎‎

    من قبلن قبنا یه عالمه از این کدها نوشته بودم برای تغییر دادن تصاویر تو سی شارپ.
    مثلا افکت های هنری مثل oilpainting و موزتئیک و کارهای ساده دیگه و کانولوشن و لبه یابی و اینا...
    اینها رو برای دانلود گذاشتم اینجا شاید بدردتون خورد.
    البته پیشنهاد میکنم کتابخانه AFORGE رو دانلود کنید که کد بازه خیلی از کدهارو میتونید از اونجا کمک بگیرید.
    فایل های ضمیمه فایل های ضمیمه

  7. #7

    نقل قول: آموزش پردازش تصویر از پایه در C#‎

    ببخشید مورد Crop کردن عکس هم یه توضیحی میدید ؟!
    چطوری میشه قسمتی از عکس مثلا از (5,5) تا (20,20) رو انتخاب کرد و تویه picturebox نشون داد؟

  8. #8

    نقل قول: آموزش پردازش تصویر از پایه در C#‎‎

    نقل قول نوشته شده توسط mortezamsp مشاهده تاپیک
    من قبلن قبنا یه عالمه از این کدها نوشته بودم برای تغییر دادن تصاویر تو سی شارپ.
    مثلا افکت های هنری مثل oilpainting و موزتئیک و کارهای ساده دیگه و کانولوشن و لبه یابی و اینا...
    اینها رو برای دانلود گذاشتم اینجا شاید بدردتون خورد.
    البته پیشنهاد میکنم کتابخانه AFORGE رو دانلود کنید که کد بازه خیلی از کدهارو میتونید از اونجا کمک بگیرید.
    کاش کمی توضیح بدین
    من این ترم گرافیک کامپیوتری دارم
    اگه میشه توضیح بدین /از اونجا که معلومه شما واردین تو این درس و مباحث ...
    ما الان تا لبه یابی خوندیم
    از برنامه ای که گذاشتین هیچی سر در نیوردم
    لطفا توضبح بدین
    کمک کنین ...

  9. #9

    نقل قول: آموزش پردازش تصویر از پایه در C#‎‎

    مثلا این تابع :
    static public string edge(string filename)
    که در فایل edge.cs هست، آدرس یک فایل بیت مپ رو میگیره و تصویر لبه یابی شده رو تو یه فایل بیت مپ ذخیزه میکنه و اسم اون رو برمیگردونه.
    یا مثلا تابع
    public static Bitmap ApplyFilter(ref Bitmap image, int[,] filter, int filtersize, int filterZarib)
    تو فایل filters.cs یک رفرنس به بیت مپ میگیره و یک آرایه دوبعدی که اون رو روی تصویر کانولو میکنه. و اندازه ماتریس و ضریب اون.
    نمیدونم اگه به کد نگاه کنین راحت میفهمین...

  10. #10
    کاربر دائمی آواتار HadiVB
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    مشهد الرضا دیگه نایب الزیاره ایم
    پست
    216

    نقل قول: آموزش پردازش تصویر از پایه در C#‎

    آقا خوب داری پیش میری ادامه بده

  11. #11

    Red face نقل قول: آموزش پردازش تصویر از پایه در C#‎‎

    خیلی ممنون توضیحات خیلی خوبی بود امیدوارم در کارهایتان موفق باشد و اجرکمم عند الله

  12. #12
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    نقل قول: آموزش پردازش تصویر از پایه در 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));
    }

  13. #13
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    iran
    پست
    311

    نقل قول: آموزش پردازش تصویر از پایه در 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));

  14. #14

    نقل قول: آموزش پردازش تصویر از پایه در C#‎

    سلام
    خسته نباشید
    اگه بخواییم تو یه عکسه سیاهو سفید که دو یا سه تیکه سفید داره، پیکسل تیکه های سفیدو جدا جد ا بدست بیاریم چیکار باید کرد؟؟؟؟؟؟؟؟؟؟
    کلشو بدست آوردم جداگونش مونده
    پلیززززززز کمک کنید

  15. #15

    Unhappy نقل قول: آموزش پردازش تصویر از پایه در C#‎‎

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

  16. #16

    نقل قول: آموزش پردازش تصویر از پایه در C#‎

    سلام اگه بخوایم تمام کدهای رنگ هر پیکسل در یک تصویر رو داشته باشیم باید چکار کنیم ممنون می شم کدش رو بنویسید

  17. #17

    نقل قول: آموزش پردازش تصویر از پایه در C#‎

    سلام ، ببخشید که تاپیک رو بالا میارم ، ممنون از توضیحات .
    چطور میشه مختصات یک شی (مثلا یک دایره ) رو در تصویر بدست آورد ؟

  18. #18

    نقل قول: آموزش پردازش تصویر از پایه در C#‎

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

  19. #19

    نقل قول: آموزش پردازش تصویر از پایه در C#‎‎

    سلام ببخشید من می خوام یه عکس تو فرم لود کنم بعد تابعی بنویسم دوعدد تصادفی تولید کنه واون دوعدد در حکم مختصاتxوy, پیکسل روی عکس رو به من نشون بده و اطلاعات rgbرو هم نمایش بده لطفا مرا راهنمایی بفرمایید.

  20. #20
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1392
    محل زندگی
    دنیایی به نام برنامه نویسی
    پست
    99

    نقل قول: آموزش پردازش تصویر از پایه در C#‎

    ممنون استفاده کردم

  21. #21

    نقل قول: آموزش پردازش تصویر از پایه در C#‎‎

    نقل قول نوشته شده توسط mortezamsp مشاهده تاپیک
    من قبلن قبنا یه عالمه از این کدها نوشته بودم برای تغییر دادن تصاویر تو سی شارپ.
    مثلا افکت های هنری مثل oilpainting و موزتئیک و کارهای ساده دیگه و کانولوشن و لبه یابی و اینا...
    اینها رو برای دانلود گذاشتم اینجا شاید بدردتون خورد.
    البته پیشنهاد میکنم کتابخانه AFORGE رو دانلود کنید که کد بازه خیلی از کدهارو میتونید از اونجا کمک بگیرید.
    استاد فایل ضمیمش یا فایل هایی ک برای دانلود گفتید کجاست چطوری باید دانلودشون کنم ؟؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •