اطلاعیه

Collapse
No announcement yet.

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

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

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

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

    Bitmap bmp = new Bitmap("adress of picture"

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

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

    جلسه 2:انجام تغییرات روی پیکسل ها بدون استفاده از اشاره گر ها
    در ابتدا به این نکته دقت کنید که برای پردازش تصویر در C#‎‎‎ بایستی برای دسترسی به سرعت بالا از اشاره گر ها استفاده کنید ولی در ابتدا من این کار رو انجام نمی دهم تا در ابتدا به طور کلی با پردازش تصویر آشنا شوید و سپس وارد کار با اشاره گر ها خواهیم شد.
    برای دریافت رنگ یک پیکسل دلخواه از getpixel به صورت زیر استفاده می کنیم.
    BMP.GetPixel(x, y);l

    برای تنظیم رنگ یک نقطه یا پیکسل هم به صورت زیر استفاده می کنیم.
    Bmp.Setpixel(x,y,(red,green,blue))l
    رنگ پیکسلی را که با دستور get pixel به دست می آید می توان با فرمول زیر رنگ های آبی , قرمز , سبز را تفکیک کرد.
    r = color % 256 ;
    g = ( color % ( 256 * 256 ) ) / 256 ;
    b = color / ( 256 * 256 );l

    البته در #c یک شئ Color وجود دارد که می تواند خود رنگهای اصلی را تفکیک بدهد.

    Color col;
    r = col.R;
    g = col.G;
    b=col.Bl
    زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...

    دیدگاه


      #3
      پاسخ : آموزش پردازش تصویر از پایه در 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 set color ));l
      {
      {
      زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...

      دیدگاه


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

        پاسخ به سوال ها:
        چند نفر از دوستان یک سری سوال پرسیدم و پیشنهاد داشتن که قصد دارم الان در موردشون صحبت کنم.البته قبلش از توجه و نظر لطفتون بسیار سپاس گزارم...
        با C# می شود به صورت آنلاین از دوربین تصاویر رو capture کرد و سپس به پردازش تصویر روی اون ها پرداخت.فعلا در آموزش ها از عکس استفاده می کنیم ولی در ادامه شروع به کار روی تصاویری که مستقیما از webcam دریافت می کنیم خواهیم شد.برای capture کردن از کتابخانه ی Aforge استفاده خواهیم کرد...
        در روباتیک(برای مثال روبات های فوتبالیست سایز متوسط) هر روبات یک دوربین داره و روی هر روبات یک لپ تاپ قرار داده شده که پردازش به وسیله ی اون انجام می شه.با استفاده از میکرو های سری ARM هم می شه پردازش تصویر انجام داد.میکرو های ARM دارای سیستم عامل(لینوکس و ...) هستند که باعث می شه کار کردن باهاشون به سادگی لپ تاپ بشه...
        یک سری از دوستان درخواست کردن که سرفصل های آموزش رو قرار بدم.در ادامه ی کار با یک سری فیلتر های پر کاربرد در پردازش تصویر آشنا خواهیم شد و الگوریتم های اون ها مورد بحث قرار داده می شود...
        زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...

        دیدگاه


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

          آقا احسان سلام
          آقا من دارم درسهای شما را با تجربه خودم داخل vb.net به بیسیک تبدیل می کنم
          http://www.eca.ir/forum2/index.php?topic=61348.0
          آقا می خواستم بدونم کتاب یا رفرنس اصلی شما دقیقا چی هست که منم بر اساس همون یکم بیشتر یاد بگیرم و همچنین پاسخگوی دوستان داخل زمینه پردازش تصویر با VB.net باشم

          ممنونم
          هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

          دیدگاه


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

            سلام دوست عزیز، راستش من می شه گفت هیچ منبع خاصی ندارم و پردازش تصویر رو با دیدن سورس های مختلف و تحلیلشون و یک سری سایت های خارجی و یه کم کتاب گنزالس یاد گرفتم،مثلا من برای capture کردن از دوربین در C# حدود یک هفته دنبال یک dll مناسب می گشتم...
            از این که آموزش ها ی من رو در زبان VB.net پیاده سازی می کنید بسیار خوشحالم.این جوری باعث می شه در آخر دو تا مقاله ی جامع و کامل در رابطه با پردازش تصویر در دو زبان برنامه نویسی معروف داشته باشیم و دبگران دیگه مثل ما این همه سختی نکشن...
            زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...

            دیدگاه


              #7
              پاسخ : آموزش پردازش تصویر از پایه در 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;l
              {

              زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...

              دیدگاه


                #8
                پاسخ : آموزش پردازش تصویر از پایه در 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;l
                }
                }
                در برنامه ی بالا از یک اسکرول بار استفده شده است و عدد آن به مقدار رنگ هر پیکسل اضافه یا کم می شود و اگر مقدار رنگ از 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;l
                اگز مقدار رنگ پیکسل از 128 بیشتر بود،پیکسل به رنگ سفید و اگر کمتر بود، به رنگ سیاه در خواهد آمد.
                زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...

                دیدگاه


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

                  یه سوال بی ربط!!!
                  r = Int32.Parse(hScrollBar1.Value.ToString()) + col.R;
                  g = Int32.Parse(hScrollBar1.Value.ToString()) + col.G;
                  b = Int32.Parse(hScrollBar1.Value.ToString()) + col.B;
                  چرا اینجا هم از تابع parse استفاده کردید و هم to string ؟ از اول مگه نمیشد نوشت hscrollbar1.value ؟ خودش که integer بر میگردونه!
                  [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                  دیدگاه


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

                    سلام دوست عزیز،این جوری هم می شه،ممنون از تذکرتون...
                    زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...

                    دیدگاه


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

                      سلام
                      پروژه بنده تشحیص متن پلاک خودرو در حال حرکت با سرعت بالا از روی فیلم هست
                      هم سایز پلاک ها تغیر می کنه و اندازه اونا ثابت و هم کیفیت اونا حیلی جالب نیست

                      ممکنه کمکم کنید که از کجا شروع کنم
                      آیا قبلا کسی این پروژه رو انجام داده؟

                      ممنون از کسانی که جواب میدن

                      دیدگاه


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

                        سلام
                        چی شد ادامه نمیدید .؟
                        من تازه C# شروع کردم و اومدم رو پردازش کار کنم.
                        بحثتون عالیه .اگه میشه ادامه بدین.

                        رفيقان قدر يكديگر بدانيد چو معلوم است شرح از بر مخوانيد

                        مقالات نصيحت گو همين است كه سنگ انداز هجران در كمين است

                        دیدگاه

                        لطفا صبر کنید...
                        X