Re: Specific color channel to retrieve from an image in a plugin

Posted by Herbie-3 on
URL: http://imagej.273.s1.nabble.com/Specific-color-channel-to-retrieve-from-an-image-in-a-plugin-tp5004950p5005066.html

Philippe,

you say you need to inspect every pixel of your image and that this is slow.

Sorry, but I don't think it is slow but it simply takes time, especially
if your images are big. Don't you agree?

If you do the loop over all pixels in Java, I see little chance to speed
up the desired process.

Best

Herbie
_________________________________________
On 07.10.13 10:16, Philippe GENDRE wrote:

> Dear List,
>
> Recently, I posted a question to this list to retrieve a specific color
> channel (the red one for example) from a RGB image. The answer
> (ImageProcessor red = ((ColorProcessor)ip).getChannel(1, null);) is perfect
> but I have realized that it is not what I need. In fact I need to retrieve
> a specific color of pixel for example the blue ones and not the intensity
> of the channel. According to that I wrote the following code:
> ImageProcessor ipR=((ColorProcessor)ip).getChannel(1,null);
> ImageProcessor ipG=((ColorProcessor)ip).getChannel(2,null);
> ImageProcessor ipB=((ColorProcessor)ip).getChannel(3,null);
>
>      for (int x=0; x<frame_width; x++){
>          for (int y=0; y<frame_height; y++){
>              if
> (ipB.getPixelValue(x,y)<ipR.getPixelValue(x,y)&&ipB.getPixelValue(x,y)<ipG.getPixelValue(x,y))
>                  ipB.set(x,y,0);
>          }
>      }
> That sounds good but slow. How to speed up this ?
>
> Best regards,
>
> Philippe
>
>
> 2013/9/26 Philippe GENDRE <[hidden email]>
>
>> ImageProcessor red = ((ColorProcessor)ip).getChannel(1, null) is exactly
>> what I needed.
>>
>> This list is a marvel. Thanks a lot.
>>
>> Philippe
>>
>>
>> 2013/9/26 Rasband, Wayne (NIH/NIMH) [E] <[hidden email]>
>>
>> On Sep 26, 2013, at 1:02 PM, Philippe GENDRE wrote:
>>>
>>>> Dear List,
>>>>
>>>> I need to retrieve the red channel of an RGB image plus object as an
>>> image
>>>> processor in a plugin.
>>>>
>>>> What is the best solution ?
>>>
>>> Use the ImageProcessor.getChannel() method. Here is a JavaScript example:
>>>
>>>     imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
>>>     ip = imp.getProcessor();
>>>     red = ip.getChannel(1, null);
>>>     new ImagePlus("Red Channel", red).show();
>>>
>>> In a plugin, it would look like this:
>>>
>>>     ImagePlus imp = IJ.openImage("
>>> http://imagej.nih.gov/ij/images/clown.jpg");
>>>     ImageProcessor ip = imp.getProcessor();
>>>     ImageProcessor red = ((ColorProcessor)ip).getChannel(1, null);
>>>     new ImagePlus("Red Channel", red).show();
>>>
>>> -wayne
>>>
>>> --
>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>>
>>
>>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html