What's the most efficient way of identifying items of a specific shade of colour in an image with matlab?












0















im trying to identify a specific shade of green leaves (e.g. navy green) from the attached image. how do i do that in the most efficient way? So far, i'm converting the RGB to HSV and then thresholding the image based on some specific range of saturation and value that will isolate my desired shade. it's working on some images and it's just all over the place on others. i want something that can isolate a specific shade of green in any different image that has slightly different saturation and value (e.g. if the picture was taken with too much light)
Image link



pic=imread('image.jpg');
q=rgb2hsv(pic);
H=q(:,:,1);
S=q(:,:,2);
V=q(:,:,3);
thresh=S>0.6111 & S<0.6666 & V>0.3888 & V<0.4583;
st=strel('diamond',20);
w=imdilate(thresh,st);
comps=bwconncomp(w,8);
num=comps.NumObjects;
fprintf('The number of leaves is %i',num)


% then i try to have some pointers on the image to show me where matlab has identified the the shade.
m = regionprops(w,'centroid');



boxes = cat(1, m.Centroid); 

imshow(pic)

hold on
plot(boxes(:,1),boxes(:,2), 'b*')
hold off


Your help will be highly appreciated.










share|improve this question





























    0















    im trying to identify a specific shade of green leaves (e.g. navy green) from the attached image. how do i do that in the most efficient way? So far, i'm converting the RGB to HSV and then thresholding the image based on some specific range of saturation and value that will isolate my desired shade. it's working on some images and it's just all over the place on others. i want something that can isolate a specific shade of green in any different image that has slightly different saturation and value (e.g. if the picture was taken with too much light)
    Image link



    pic=imread('image.jpg');
    q=rgb2hsv(pic);
    H=q(:,:,1);
    S=q(:,:,2);
    V=q(:,:,3);
    thresh=S>0.6111 & S<0.6666 & V>0.3888 & V<0.4583;
    st=strel('diamond',20);
    w=imdilate(thresh,st);
    comps=bwconncomp(w,8);
    num=comps.NumObjects;
    fprintf('The number of leaves is %i',num)


    % then i try to have some pointers on the image to show me where matlab has identified the the shade.
    m = regionprops(w,'centroid');



    boxes = cat(1, m.Centroid); 

    imshow(pic)

    hold on
    plot(boxes(:,1),boxes(:,2), 'b*')
    hold off


    Your help will be highly appreciated.










    share|improve this question



























      0












      0








      0








      im trying to identify a specific shade of green leaves (e.g. navy green) from the attached image. how do i do that in the most efficient way? So far, i'm converting the RGB to HSV and then thresholding the image based on some specific range of saturation and value that will isolate my desired shade. it's working on some images and it's just all over the place on others. i want something that can isolate a specific shade of green in any different image that has slightly different saturation and value (e.g. if the picture was taken with too much light)
      Image link



      pic=imread('image.jpg');
      q=rgb2hsv(pic);
      H=q(:,:,1);
      S=q(:,:,2);
      V=q(:,:,3);
      thresh=S>0.6111 & S<0.6666 & V>0.3888 & V<0.4583;
      st=strel('diamond',20);
      w=imdilate(thresh,st);
      comps=bwconncomp(w,8);
      num=comps.NumObjects;
      fprintf('The number of leaves is %i',num)


      % then i try to have some pointers on the image to show me where matlab has identified the the shade.
      m = regionprops(w,'centroid');



      boxes = cat(1, m.Centroid); 

      imshow(pic)

      hold on
      plot(boxes(:,1),boxes(:,2), 'b*')
      hold off


      Your help will be highly appreciated.










      share|improve this question
















      im trying to identify a specific shade of green leaves (e.g. navy green) from the attached image. how do i do that in the most efficient way? So far, i'm converting the RGB to HSV and then thresholding the image based on some specific range of saturation and value that will isolate my desired shade. it's working on some images and it's just all over the place on others. i want something that can isolate a specific shade of green in any different image that has slightly different saturation and value (e.g. if the picture was taken with too much light)
      Image link



      pic=imread('image.jpg');
      q=rgb2hsv(pic);
      H=q(:,:,1);
      S=q(:,:,2);
      V=q(:,:,3);
      thresh=S>0.6111 & S<0.6666 & V>0.3888 & V<0.4583;
      st=strel('diamond',20);
      w=imdilate(thresh,st);
      comps=bwconncomp(w,8);
      num=comps.NumObjects;
      fprintf('The number of leaves is %i',num)


      % then i try to have some pointers on the image to show me where matlab has identified the the shade.
      m = regionprops(w,'centroid');



      boxes = cat(1, m.Centroid); 

      imshow(pic)

      hold on
      plot(boxes(:,1),boxes(:,2), 'b*')
      hold off


      Your help will be highly appreciated.







      matlab image-processing image-thresholding






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 21 '18 at 11:40







      user3020881

















      asked Nov 21 '18 at 11:36









      user3020881user3020881

      11




      11
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Either the HSV color space (hey, S is saturation and V value), where H will give you the hue,or CIE-Lab color space, where euclidean distance will give you how close 2 specific pixel are to each other in color.



          This answer explains how to do it for HSV: Segment pixels in an image based on colour (Matlab)



          Using combined with CIE-LAB may help if the colors are very close together (like the greens in each leaf), but you should give HSV a shot






          share|improve this answer
























          • Thank you @ander. I'm trying to use HSV, but its so tricky because every image has a different hue value. some target images have a hue that falls outside the range and if i change the range to accomodate them i end up thresholding non-target materials as well. slippery slope.

            – user3020881
            Nov 21 '18 at 16:06






          • 1





            @user3020881 yup, you may need to use other object detection techniques together with color information, such as level sets or watershed ot even playing with canny

            – Ander Biguri
            Nov 21 '18 at 17:34











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53411235%2fwhats-the-most-efficient-way-of-identifying-items-of-a-specific-shade-of-colour%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          Either the HSV color space (hey, S is saturation and V value), where H will give you the hue,or CIE-Lab color space, where euclidean distance will give you how close 2 specific pixel are to each other in color.



          This answer explains how to do it for HSV: Segment pixels in an image based on colour (Matlab)



          Using combined with CIE-LAB may help if the colors are very close together (like the greens in each leaf), but you should give HSV a shot






          share|improve this answer
























          • Thank you @ander. I'm trying to use HSV, but its so tricky because every image has a different hue value. some target images have a hue that falls outside the range and if i change the range to accomodate them i end up thresholding non-target materials as well. slippery slope.

            – user3020881
            Nov 21 '18 at 16:06






          • 1





            @user3020881 yup, you may need to use other object detection techniques together with color information, such as level sets or watershed ot even playing with canny

            – Ander Biguri
            Nov 21 '18 at 17:34
















          0














          Either the HSV color space (hey, S is saturation and V value), where H will give you the hue,or CIE-Lab color space, where euclidean distance will give you how close 2 specific pixel are to each other in color.



          This answer explains how to do it for HSV: Segment pixels in an image based on colour (Matlab)



          Using combined with CIE-LAB may help if the colors are very close together (like the greens in each leaf), but you should give HSV a shot






          share|improve this answer
























          • Thank you @ander. I'm trying to use HSV, but its so tricky because every image has a different hue value. some target images have a hue that falls outside the range and if i change the range to accomodate them i end up thresholding non-target materials as well. slippery slope.

            – user3020881
            Nov 21 '18 at 16:06






          • 1





            @user3020881 yup, you may need to use other object detection techniques together with color information, such as level sets or watershed ot even playing with canny

            – Ander Biguri
            Nov 21 '18 at 17:34














          0












          0








          0







          Either the HSV color space (hey, S is saturation and V value), where H will give you the hue,or CIE-Lab color space, where euclidean distance will give you how close 2 specific pixel are to each other in color.



          This answer explains how to do it for HSV: Segment pixels in an image based on colour (Matlab)



          Using combined with CIE-LAB may help if the colors are very close together (like the greens in each leaf), but you should give HSV a shot






          share|improve this answer













          Either the HSV color space (hey, S is saturation and V value), where H will give you the hue,or CIE-Lab color space, where euclidean distance will give you how close 2 specific pixel are to each other in color.



          This answer explains how to do it for HSV: Segment pixels in an image based on colour (Matlab)



          Using combined with CIE-LAB may help if the colors are very close together (like the greens in each leaf), but you should give HSV a shot







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 21 '18 at 11:50









          Ander BiguriAnder Biguri

          26.6k105693




          26.6k105693













          • Thank you @ander. I'm trying to use HSV, but its so tricky because every image has a different hue value. some target images have a hue that falls outside the range and if i change the range to accomodate them i end up thresholding non-target materials as well. slippery slope.

            – user3020881
            Nov 21 '18 at 16:06






          • 1





            @user3020881 yup, you may need to use other object detection techniques together with color information, such as level sets or watershed ot even playing with canny

            – Ander Biguri
            Nov 21 '18 at 17:34



















          • Thank you @ander. I'm trying to use HSV, but its so tricky because every image has a different hue value. some target images have a hue that falls outside the range and if i change the range to accomodate them i end up thresholding non-target materials as well. slippery slope.

            – user3020881
            Nov 21 '18 at 16:06






          • 1





            @user3020881 yup, you may need to use other object detection techniques together with color information, such as level sets or watershed ot even playing with canny

            – Ander Biguri
            Nov 21 '18 at 17:34

















          Thank you @ander. I'm trying to use HSV, but its so tricky because every image has a different hue value. some target images have a hue that falls outside the range and if i change the range to accomodate them i end up thresholding non-target materials as well. slippery slope.

          – user3020881
          Nov 21 '18 at 16:06





          Thank you @ander. I'm trying to use HSV, but its so tricky because every image has a different hue value. some target images have a hue that falls outside the range and if i change the range to accomodate them i end up thresholding non-target materials as well. slippery slope.

          – user3020881
          Nov 21 '18 at 16:06




          1




          1





          @user3020881 yup, you may need to use other object detection techniques together with color information, such as level sets or watershed ot even playing with canny

          – Ander Biguri
          Nov 21 '18 at 17:34





          @user3020881 yup, you may need to use other object detection techniques together with color information, such as level sets or watershed ot even playing with canny

          – Ander Biguri
          Nov 21 '18 at 17:34




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53411235%2fwhats-the-most-efficient-way-of-identifying-items-of-a-specific-shade-of-colour%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          How to pass form data using jquery Ajax to insert data in database?

          National Museum of Racing and Hall of Fame

          Guess what letter conforming each word