اطلاعیه

Collapse
No announcement yet.

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

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

    #16
    پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

    شما می توانید برای حذف نویز ابتدا از تابع cvErode استفاده نمایید.و سپس برای بازگرداندن لبه ها تابع cvDilate را بر روی تصویر بکار ببرید.
    اگر منظورتان کدام سیستم رنگی برای تعیین رنگ بهتر است ،همانطور که قبلا نیز گفته ام سیستم رنگی HSV خیلی بهتر و راحتر می توانید جواب بگیرید.

    دیدگاه


      #17
      پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

      نوشته اصلی توسط mostafa.bahriny
      [color=blue]اگه تصویر شما دارای نویز فلفلی است. شما میتوانید از تابع زیر استفاده کنید:
      void cvErode(
      IplImage* src,
      IplImage* dst,
      IplConvKernel* B = NULL,
      int iterations = 1
      );
      این تابع باعث می شود که پیکسل یک ناحیه همرنگ تر باشند.و در واقع رنگ یک ناحیه یکدست شود.
      همانطور که می بینید این تابع دو تصویر مبدا و مقصد را می گیرد(src,dst).
      و پارامتر int iterations نمایانگر این است که جند بار این عمل تکرار شود( منظور از عمل خود تابع است).
      سلام
      تابعی که معرفی کردید برای چه نوع تصاویری به کار میره ؟
      ایا از اون برای تصاویر رنگی هم میشه استفاده کرد؟

      دیدگاه


        #18
        پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

        نوشته اصلی توسط samin1991
        سلام
        تابعی که معرفی کردید برای چه نوع تصاویری به کار میره ؟
        ایا از اون برای تصاویر رنگی هم میشه استفاده کرد؟
        من از این تابع تا حالا برای تصویر سیاه و سفید استفاده کردم.و برای رنگی مطمن نیستم. داخل کتاب Opencv نیز اسمی از کاربرد این تابع برای چه تصویری نیاورده . فقط تاکیده کرده که دو تصویر مبدا و مقصد باید یک نوع باشند.شما تست کنید ببیند برای تصویر رنگی جواب میده؟ .بی زحمت نتیجه تستان را به ما بگوید.

        دیدگاه


          #19
          پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

          سلام دوستان
          اگه دو تا تصویر داشته باشیم و توی هر کدوم از اونا یه مربع یا مستطیل داشته باشیم برای پیدا کردن لبه های این مستطیلهای داخلی و کنار هم گذاشتن اونا میشه از توابعی نظیر soble استفاده کنم تا اول مختصات پیکسل ها در لبه ی این مستطیل رو پیدا کنم و بعد اونا رو کنار هم قرار بدم؟
          چه راه های دیگه ای برای این کار وجود داره؟
          زندگی یعنی شب نو
          روز نو
          اندیشه ی نو...

          دیدگاه


            #20
            پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

            نوشته اصلی توسط sohail68
            سلام دوستان
            اگه دو تا تصویر داشته باشیم و توی هر کدوم از اونا یه مربع یا مستطیل داشته باشیم برای پیدا کردن لبه های این مستطیلهای داخلی و کنار هم گذاشتن اونا میشه از توابعی نظیر soble استفاده کنم تا اول مختصات پیکسل ها در لبه ی این مستطیل رو پیدا کنم و بعد اونا رو کنار هم قرار بدم؟
            چه راه های دیگه ای برای این کار وجود داره؟
            اولا تابع soble دیگر چه تابعی است ؟ من داخل کتاب جستجو کردم ولی تابعی با این عنوان پیدا نکردم.
            دوما اگر دوربین ثابت باشد و اندازه مربع شما داخل تصویر همواره ثابت باشد ( یا مربع همواره در یک محدوده ای باشد) شما می توانید بوسیله تابع زیر .ابتدا مربع را یک contour بگیرید و سپس مساحت انرا حساب کنید.
            double cvContourArea(
            const CvArr* contour,
            CvSlice slice = CV_WHOLE_SEQ
            );

            همانطور که می بینید این تابع یک کانتور (محیط بسته)می گیرد (const CvArr* contour).
            این تابع یک مقدار double را نیز باز می گرداند.که همان مقدار مساحت مربع است.
            ثالثا راه حل دیگر این است که شما مربع را یک contour بگیرید . وسپس بوسیله مفاهیم ریاضی مانند چهار گوشه قائم و ویژگی مربع برروی contour یک الگوریتم پیاده نمایید.

            دیدگاه


              #21
              پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

              سلام
              اگر از دو حلقه ی for و
              uchar*ptr=&CV_IMAGE_ELEM(img,uchar,j,i);
              برای دسترسی به هر پیکسل استفاده بشه برای تصاویر grayscale میشه مثلا ptr[]رو مساوی صفر یا 255 قرارداد.
              حالا اگه بخوایم مختصات یه پیکسل رو که نسبت به پیکسل های قبلش تغییر رنگ داده رو ذخیره کنیم ویا با ثابت بودن ستون پیکسل ها رو در جهت مورد مقایسه و بررسی قرار بدیم چطور میتونم ptr رو بر حسب یه آرایه ای ازi, j طوری بنویسم که با داشتن مختصات هر پیکسل بتونم اونو با پیکسل های تصویر دیگه مقایسه کنم؟


              دیدگاه


                #22
                پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv


                سلام
                چه راه هایی برای ایجاد یک تصویر پانوراما وجود دارد؟
                ایا از تابع cvMaxRect می توان استفاده کرد؟
                زندگی یعنی شب نو
                روز نو
                اندیشه ی نو...

                دیدگاه


                  #23
                  پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                  نوشته اصلی توسط sohail68
                  سلام
                  چه راه هایی برای ایجاد یک تصویر پانوراما وجود دارد؟
                  ایا از تابع cvMaxRect می توان استفاده کرد؟
                  سلام اقا سهیل
                  شما قرار بود تابع soble را معرفی کنید .تا ما هم یک چیزی یاد بگیریم.
                  اما برای ساخت تصویر پانوراما نرم افزارهای مثل Panorama Studio Pro 2.0.5
                  وجود داره که میتوانید استفاده کنید .
                  حقیقتش من تا به حال این تصویر نساختم.
                  ولی فکر کنم ابتدا باید یک تصویر بزرگتر بسازی وسپس در محل برخورد دو تصویر از تابع cvMaxRect استفاده کنی.

                  دیدگاه


                    #24
                    پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                    نوشته اصلی توسط samin1991
                    سلام
                    اگر از دو حلقه ی for و
                    uchar*ptr=&CV_IMAGE_ELEM(img,uchar,j,i);
                    برای دسترسی به هر پیکسل استفاده بشه برای تصاویر grayscale میشه مثلا ptr[]رو مساوی صفر یا 255 قرارداد.
                    حالا اگه بخوایم مختصات یه پیکسل رو که نسبت به پیکسل های قبلش تغییر رنگ داده رو ذخیره کنیم ویا با ثابت بودن ستون پیکسل ها رو در جهت مورد مقایسه و بررسی قرار بدیم چطور میتونم ptr رو بر حسب یه آرایه ای ازi, j طوری بنویسم که با داشتن مختصات هر پیکسل بتونم اونو با پیکسل های تصویر دیگه مقایسه کنم؟

                    اگه میشه بیشتر توضیح بده . تا اگر چیزی بلد باشم در خدمتان باشم.
                    ولی یک مثال در کتاب O'Relly در صفحه 44 هست شاید بدردتان بخورد.

                    دیدگاه


                      #25
                      پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                      سلام
                      در مورد تابع soble که منظورم همون sobelبود ! این فقط یه اشتباه تایپی بود...
                      این که شما گفتید یه تصویر بزرگ بسازم من این کارو امتحان کردم ولی برای همه ی تصاویر جواب نمیده چون اندازه ی تصاویر ممکنه با هم برابر نباشه باری ساختن یه تصویر از cvcreateimage که استفاده کردمامکان این که width یا height دو image رو با هم جمع کنم وجود نداشت!شایدم من کد رو اشتباه نوشتم که به این قسمت برنامه ایراد گرفت.
                      یه کار دیگه هم میشه کرد.میشه اول دو تا تصویرو به هم بچسبونم بعد توی یه پنجره ی autosize نمایش بدم.
                      نظرتون چیه؟
                      راستی برای چسبوندنشون میشه ادرس پیکسل های لبه های تصویردو عکس رو با هم برابر قرار داد؟
                      را ه آسون تری به نظر شما می رسه؟
                      زندگی یعنی شب نو
                      روز نو
                      اندیشه ی نو...

                      دیدگاه


                        #26
                        پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                        نوشته اصلی توسط sohail68
                        سلام
                        در مورد تابع soble که منظورم همون sobelبود ! این فقط یه اشتباه تایپی بود...
                        این که شما گفتید یه تصویر بزرگ بسازم من این کارو امتحان کردم ولی برای همه ی تصاویر جواب نمیده چون اندازه ی تصاویر ممکنه با هم برابر نباشه باری ساختن یه تصویر از cvcreateimage که استفاده کردمامکان این که width یا height دو image رو با هم جمع کنم وجود نداشت!شایدم من کد رو اشتباه نوشتم که به این قسمت برنامه ایراد گرفت.
                        یه کار دیگه هم میشه کرد.میشه اول دو تا تصویرو به هم بچسبونم بعد توی یه پنجره ی autosize نمایش بدم.
                        نظرتون چیه؟
                        راستی برای چسبوندنشون میشه ادرس پیکسل های لبه های تصویردو عکس رو با هم برابر قرار داد؟
                        را ه آسون تری به نظر شما می رسه؟
                        شما نباید دو تصویر باهم جمع کنید.بلکه باید بهم اضافه کنید(Add) شما ابتدا تصویر کوچک را بوسیله تغیر رزلوشن بزرگ می کنید.و سپس از همین تصویر یک ROI به اندازه خود تصویر می گیرید. و از تصویر قبلی نیز به اندازه خود تصویر ROIمی گیرید و سپس هر دو را بهم اضافه می نمایید.
                        دستورات زیر برای شما مفید خواهند بود:
                        cvSetImageROI(src1, cvRect(x,y,width,height));
                        cvSetImageROI(src2, cvRect(0,0,width,height));
                        cvAddWeighted(src3, alpha, src2, beta,gamma,src1);
                        cvResetImageROI(src);

                        تابع cvAddWeighted یک فایده دیگری نیاز دارد که می تواند پیکسل های محل اتصال را بوسیله ضرایب gamma،beta، alpha همرنگ و سنکرون نمایید.
                        البته این ضرایب خود داری یک رابطه می باشند که می توانید به کتاب O'Relly مراجعه نمایید.

                        دیدگاه


                          #27
                          پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                          سلام
                          چطور میتونم اطلاعات مربوط به یک پیکسل(سطر ٍستون ورنگ) رو ذخیره کنم؟
                          باید از اشاره گر ها استفاده کنم یا تابعی وجود داره که این سه تا مولفه رو تو خودش داشته باشه؟
                          زندگی یعنی شب نو
                          روز نو
                          اندیشه ی نو...

                          دیدگاه


                            #28
                            پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                            نوشته اصلی توسط sohail68
                            سلام
                            چطور میتونم اطلاعات مربوط به یک پیکسل(سطر ٍستون ورنگ) رو ذخیره کنم؟
                            باید از اشاره گر ها استفاده کنم یا تابعی وجود داره که این سه تا مولفه رو تو خودش داشته باشه؟

                            من معمولا تک پیکسل کار نمی کنم.چون سرعت برنامه را کم می گنه.
                            من در این رابطه چیزی نمی دونم.ولی یک مثال در کتاب O'Relly در صفحه 44 است که از ماتریس و اشاره گر استفاده کرده.میتوانید از ان استفاده کنید.

                            دیدگاه


                              #29
                              پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                              سلام
                              اگه ممکنه در مورد توابع هیستوگرام در opencvو چگونگی دسترسی به نمودار آنها را توضیح بدید.
                              من به کمک توابع تو کتاب یه برنامه نوشتم ولی اصلا سر در نمی یارم این خروجی یعنی چی؟!
                              راستی در مورد توابع erode یادم رفت بگم فقط برای تصاویر gray به کار میره!

                              دیدگاه


                                #30
                                پاسخ : پردازش تصویر و جداسازی رنگ و اجسام مشخص از تصویر رنگی بوسیله کتابخانه OpenCv

                                نوشته اصلی توسط mostafa.bahriny
                                از همین تصویر یک ROI به اندازه خود تصویر می گیرید. و از تصویر قبلی نیز به اندازه خود تصویر ROIمی گیرید و سپس هر دو را بهم اضافه می نمایید.

                                من تصویر اول رو با دستور ROI به تصویر بزرگی که از قبل ساخته بودم اضافه کردم ولی برای اضافه کردن تصویر دوم به تصویر بزرگ یه مشکلی وجود داره!
                                این که ممکنه width دو تصویر با هم برابر نباشهو برای همه ی تصاویر جواب نمیده!
                                اگر من اول دو تصویر رو add کنم چه طور میتونم اون رو تو یه پنجره که به اندازه ی دو تصویر باشه نمایش بدم؟

                                دیدگاه

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