[Insight-users] How to cast from RGB to short?

Michael Xanadu xanadu.michael at googlemail.com
Tue Sep 1 08:39:45 EDT 2009


Are you sure that each segment has a different gray value? There are no
multiple segments with the same value?

Michael


2009/8/31 Gaëtan Lehmann <gaetan.lehmann at jouy.inra.fr>

>
> Le 31 août 09 à 17:23, Michael Xanadu a écrit :
>
>  Hi Gaëtan,
>>
>> thank you for your support. Actually, I thought that there's a difference
>> in the number of segments between using <long> or colormapper for the output
>> of watershed filter. It seemed to me that I receive more segments by using a
>> RGB output. I found out that the problem lies in the viewer I use to watch
>> the images. It had a wrong color level and showed the image to bright, so
>> that a lot of segments disapeared.
>> The clue of watershed is, that it delivers no single segment I'm looking
>> for, but all segments it can find. To extract a single segment, I want to
>> use Connected Threshold (with seed) afterwards. That was the reason I asked
>> for help.
>>
>>
> For a single object, I think it's easier (and more efficient) to simply use
> a BinaryThresholdImageFilter, and to set both UpperThreshold and
> LowerThresold to the pixel value of the object of interest. The output is a
> simple binary image with only your object.
>
> Gaëtan
>
>
>
>  Regards, Michael
>>
>>
>>
>> 2009/8/31 Gaëtan Lehmann <gaetan.lehmann at jouy.inra.fr>
>>
>> Le 31 août 09 à 15:33, Michael Xanadu a écrit :
>>
>>
>> Hi,
>>
>> I've got a watershed filtered image processed by a colormapper. So it's an
>> image of type:
>>
>>   typedef itk::RGBPixel<short>   RGBPixelType;
>>   typedef itk::Image<RGBPixelType, 2>    RGBImageType;
>>
>> Now I want to filter that image with a connected threshold filter, because
>> I need it this way.
>> But ConnectedThresholdImageFilter can't process such RGB images.
>> I tryed to convert the image into a short type by using CastImageFilter,
>> too.
>> But I always get:
>>
>>   error C2440: 'static_cast' : cannot convert from
>> 'itk::RGBPixel<TComponent>' to 'short'
>>
>> So how can I cast from RGB to short? Or how to filter a RGB image with a
>> connected threshold filter?
>>
>>
>> You can extract one of the channels with
>> VectorIndexSelectionCastImageFilter or go to an intensity image with
>> RGBToLuminanceImageFilter, but I doubt that's what you want. The color image
>> is only a representation of the watershed output easier to read for humans,
>> but not for computer. If you want to work on the output of the watershed,
>> it's better to not use a color mapper, but directly on the output image of
>> the watershed - the image should be of type itk::Image< unsigned long, 2 >.
>>
>> And even if you don't use a color mapper, it may not be a good idea to
>> process the output of the watershed filter (a labeled image) with a filter
>> (ConnectedThresholdImageFilter) made to work on a grayscale images.
>>
>> Can you explain what you want to achieve?
>>
>> Regards,
>>
>> Gaëtan
>>
>> --
>> Gaëtan Lehmann
>> Biologie du Développement et de la Reproduction
>> INRA de Jouy-en-Josas (France)
>> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
>> http://voxel.jouy.inra.fr  http://www.itk.org
>> http://www.mandriva.org  http://www.bepo.fr
>>
>>
>>
> --
> Gaëtan Lehmann
> Biologie du Développement et de la Reproduction
> INRA de Jouy-en-Josas (France)
> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
> http://voxel.jouy.inra.fr  http://www.itk.org
> http://www.mandriva.org  http://www.bepo.fr
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090901/5f495a0c/attachment.htm>


More information about the Insight-users mailing list