اطلاعیه

Collapse
No announcement yet.

پردازش تصاویر رنگی

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

    پردازش تصاویر رنگی

    سلام دوستان .
    آیا راهی هست که مثلا در تصویر زیر فقط رنگ قرمز نمایش داده بشه و بقیه رنگ ها سفید یا سیاه نمایش داده بشن .
    این ذستور رو که معرفی شده تست کردم ولی جواب نداد فقط تصویر سیاه وسفید شد .
    مرسی
    redChannel = rgbImage(:, :, 1);



    #2
    پاسخ : پردازش تصاویر رنگی

    سلام.
    منظورت رو دقیق متوجه نشدم ولی کد زیر رو امتحان کن:
    کد PHP:
     I=imread('rgb.png');;
    J=I(:,:,1);
    imshow(J)
    .* I(:,:,1);
    K(:,:,2) = J.* I(:,:,2);
    K(:,:,3) = .* I(:,:,3); 

    با این کد، قسمت قرمز، به رنگ خودش و دو قسمت دیگه سیاه میشن.
    ولی اگه تصویری داری و میخوای مثلاً قسمت های قرمزش رو در بیاری (Color Segmentation) یک راه ساده اینه که سیستم رنگ رو از RGB به HSI=HSV تغییر بدی که در متلب با دستور rgb2hsv انجام میشه و بعد با یک مقدار آستانه ساده، قسمت های قرمز رو پیدا کنی. (در سیستم HSI کانال H=Hue رنگ و S=Saturation غلظت رنگ و I=Intensity هم شدت رنگ رو مشخص می کنن برای درک سیستم HSV تصویر زیر رو ببینید) مقدار H برای رنگ قرمز حدود 0 و همچنین حدود 1 هست (مقدار H بین 0 تا 1 است).


    یک کد برای مثال تشخیص رنگ
    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    دیدگاه


      #3
      پاسخ : پردازش تصاویر رنگی

      مرسی هادی جان . دستت درد نکنه عالی بود .
      میشه خواهش کنم توضیح بدی این چند خط دقیقا چیکار میکنه ؟
      K = J .* I(:,:,1);
      K(:,:,2) = J.* I(:,:,2);
      K(:,:,3) = J .* I(:,:,3);

      دیدگاه


        #4
        پاسخ : پردازش تصاویر رنگی

        نوشته اصلی توسط hooman
        مرسی هادی جان . دستت درد نکنه عالی بود .
        میشه خواهش کنم توضیح بدی این چند خط دقیقا چیکار میکنه ؟
        K = J .* I(:,:,1);
        K(:,:,2) = J.* I(:,:,2);
        K(:,:,3) = J .* I(:,:,3);
        خواهش می کنم (برای تشکر از کلید تشکر استفاده کنید).
        نمیشه گفت ایده علمی خاصی پشت این چند خط کده، میشه گفت کاری که این چند خط می کنه اینه که هر چقدر یک پیکسل شدت کانال قرمزش بیشتر باشه، در تصویر خروجی مقدار بیشتری داره (چون همه کانالها در کانال قرمز ضرب شدن) ولی توی تصویر شما چون سه قسمت با سه رنگ خالص قرمز، سبز و آبی (رنگ های پایه سیستم RGB) وجود داشت تصویر خروجی این طوری شد که قسمت های غیر قرمز کلاً سیاه شدن.
        لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
        لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
        با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
        اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
        يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

        دیدگاه


          #5
          پاسخ : پردازش تصاویر رنگی

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

          دیدگاه


            #6
            پاسخ : پردازش تصاویر رنگی

            نوشته اصلی توسط hooman
            هادی جان می دونیم که مثلا یک گل قرمز خالص نیست حالا اگه بخوایم یه طیفی از رنگ قرمز رو جدا کنیم باید چکار کنیم .
            من به جای 1 عدد کوچکتر گذاشتم ولی نتیجه خوب در نیومد
            برای رنگ قرمز مقدار Hue فقط صفر و یک هست و با تغییر Saturation و (Intensity(Value میشه از قرمز روشن (در حد سفید) تا قرمز پررنگ (در حد سیاه) رو تولید کرد ولی اگه بخوای رنگ های نزدیک قرمز رو هم بگیری مثلاً Hue بین 0 تا 0.1 و 0.9 تا 1 رو در نظر بگیر. توی مثالی که توی پست اولم گذاشتم برای پیدا کردن محدوده ی رنگ هر میوه از یک برش کوچک (در حد چند پیکسل) از هر کدوم از میوه ها استفاده شده، اگه از قبل نمونه ای از رنگی که قصد تشخیص دادنش رو داری میتونی این طوری عمل کنی.
            لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
            لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
            با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
            اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
            يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

            دیدگاه


              #7
              پاسخ : پردازش تصاویر رنگی

              سلام ..

              علاوه بر مطالب خوبی که در بالا دوستان ذکر کردند؛ شاید مرتبط باشه اگه از Kmeans هم غافل نشید .. این الگوریتم؛ یک متد برای Clustering و یا دسته بندی داده ها بر حسب نزدیکی اونها (شباهت ساختار) در فضای دیتا هست و در پایان؛ ایندکس هایی به عنوان خروجی خواهیم داشت که به نوعی لیبل هر کلاستر هستند .. برای مثال، فرض کنیم ماتریس MX دیتاهای ما هستند و قصد داریم این مجموعه ی دیتا رو با 6 دسته یا کلاستر لیبل گذاری کنیم .. با دستور زیر در متلب؛ این کار قابل انجام هست ..


              از این روش هم برای دیتاهایی مثل پیکسل های یک تثویر و هم برای مجموعه ی دیتاهای بزرگتر؛ مثل لیبل گذاری شاید 50 تا 60 هزار تصویر از نظر شباهت ظاهری (به صورت خیلی شهودی) اونها استفاده میکنن .. یکی دیگه از کاربردهای این روش در مسائل vision استفاده از این الگوریتم برای Feature space هست .. شاید ارزش و مزیت الگوریتم در اونجا بیش از همه خودش رو نشون بده .. در کنار همه ی اینها، برای سگمنتیشن تصویر؛ یکی از الگوریتم هایی که معمولا به اون فکر میکنند؛ این الگوریتم هست .. برای مثال؛ تصویر زیر؛ یک نمونه از اجرای این ایده هست ..



              یک روش دیگه هم هست برای باینری کردن و Threshold گذاشتن روی تصاویر که شاید خیلی معروف نباشه امــا دیدم در یک Presentation ازش نام برده بودن؛ بهتر دونستم که اون رو هم اینجا مطرح کنم تا شاید از علامت سوال شدن این ایده در آینده، اجتناب کنیم .. الگوریتم Otsu (!) .. خیلی سریع، کد این الگوریتم و نتیجه ی اون بر روی یک تصویر نمونه ..


              و نتیجه ی تصویر ..


              خیلی صادقانه: زیاد متوجه نشدم مزیت این روش نسبت به im2bw چه چیزی میتونه باشه .. امــا اگر از im2bw استفاده کردید و به هر دلیل نتیجه ی خوبی به دست نیاوردید (در اون شرایط هم؛ این امکان هست که با threshold باینری کردن تصویر کمی بازی کرد و بعد از هــمــه ی این آزمایش ها ==&gt، شاید این روش بتونه به کمکتون بیاد .. موفق و سلامت و شاد باشید ..
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : پردازش تصاویر رنگی

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

                دیدگاه


                  #9
                  پاسخ : پردازش تصاویر رنگی

                  سلام ..

                  در انتهای این پست؛ یک دموی خیلی ساده ضمیمه شده که شاید بتونه پاسخ سوالتون رو مستقیم بده .. سعی کردم چند دستور معمولی بیشتر نباشه تا به ایده ی اصلی تصاویر RGB پرداخته بشه .. بعلاوه؛ در ایـن آدرس؛ یک دموی بسیار جالب طراحی شده که مفهوم ترکیب سه کانال R و G و B رو برای تشکیل تصویر رنگی نهایی به خوبی نشون میده .. نکته ی کوتاه اینکه برای اجرای دمو (به صورت آنلاین) نیاز هست که نرم افزار Flash 10 نصب داشته باشید بر روی سیستم .. امید که این مطالب بتونن براتون مفید باشن .. موفق و سلامت و شاد باشید ..
                  فایل های پیوست شده
                  دوستان! مدتی کمتر به سایت میام ..

                  دیدگاه


                    #10
                    پاسخ : پردازش تصاویر رنگی

                    بعد از کلاسترینگ چطوری میشه نتیجه رو نمایش داد
                    کد:
                    img = imread ('C');
                    img=rgb2gray(img);
                    img = imadjust(img);
                    img = medfilt2(img,[4 4]);
                    img = double(img);
                    [i,j] = kmeans(img,6)
                    مرسی

                    دیدگاه


                      #11
                      پاسخ : پردازش تصاویر رنگی

                      سلام ..

                      به طور مستقیم؛ اگر از دستوراتی که نوشتید، استفاده کنید؛ مسیر اشتباهی رو طی نکردید؛ امــا نمایش دادن تصویر حاصل کمی سخت میشه .. الان؛ شما به عنوان خروجی K-means یک بردار دارید که همه ی لیبل های پیکسل های تصویر شما رو در بر داره؛ نکته ای صحیح که از K-means انتظار داریم .. امــا امکان نمایش این بردار به عنوان یک تصویر؛ به این صورت میسر نیست .. از این جهت هست که شاید دستورات پیشنهادی زیر بتونن امیدوارانه کمکتون کنن تا بتونید تصویر سگمنت شده با این الگوریتم رو به خوبی ببینید .. دقت کنید که تعداد کلاسترهایی که انتخاب کردیم در این مثال؛ 5 دسته هستن .. موفق و سلامت و شاد باشید ..


                      نـتـیـجـه ی اعـمـال دسـتـورات
                      دوستان! مدتی کمتر به سایت میام ..

                      دیدگاه

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