[Insight-users] Determine if BMP is color or grayscale

Bill Lorensen bill.lorensen at gmail.com
Fri Oct 26 08:41:26 EDT 2007


Sebastien,

Thanks for the bug report and sample data. I fixed the problem. Update
Code/IO/itkBMPImageIO.cxx and let us know if you still have problems.

I also added your data to Testing/Data/Input and added 2 tests to read your
data. The next time you update all of itk, you'll get the data and new
tests.

Thanks,

Bill


On 10/25/07, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>
> Sebatien,
>
> This looks like a bug to me. Can you add it to the bug tracker:
> http://public.kitware.com/Bug/view_all_bug_page.php
>
> Also, include url's to a sample 24 bit and 8 bit grayscale images.
>
> I looked at the itkBMPImageIO.cxx code. For sure, it is not setting the
> pixel type correctly. It looks like it should be setting the number of
> components correctly, but the logic may be flawed.
>
> Bill
>
>  On 10/25/07, Sébastien Fricker <sebastien.fricker at phaseview.net> wrote:
>
> >   Dear ITK users,
> >
> > Since I didn't get any answer, let me try to explain my problem
> > differently:
> >
> > In my project, I open 2 types of BMP images:
> >
> > -          8 bits grayscale images
> >
> > -          24 bits RGB images
> >
> >
> >
> > When I use an imageIO to read the file headers, I obtain the following
> > (for both types of images):
> >
> >
> >
> > imageIO->GetPixelType() returns SCALAR
> >
> > imageIO->GetComponentType returns UCHAR
> >
> > imageIO-GetNumberOfComponents returns 3
> >
> >
> >
> > Instead, I would expect:
> >
> >
> >
> > For 8 bits grayscale:
> >
> > Pixel type = SCALAR
> >
> > Component type = UCHAR
> >
> > Number of components = 1
> >
> >
> >
> > For 24 bits RGB:
> >
> > Pixel type = RGB
> >
> > Component type = UCHAR
> >
> > Number of components = 3
> >
> >
> >
> > Is this a bug or am I missing something? For example the user manual
> > says that if pixel type is SCALAR, then number of components should always
> > be 1, which is not the case here…
> >
> >
> >
> > Thank you,
> >
> >
> >
> > Sebastien Fricker
> >  ------------------------------
> >
> > *From:* insight-users-bounces+sebastien.fricker=phaseview.net at itk.org[mailto:insight-users-bounces+sebastien.fricker=phaseview.net at itk.org]
> > *On Behalf Of *Sébastien Fricker
> > *Sent:* mardi 23 octobre 2007 08:54
> > *To:* 'insight-users'
> > *Subject:* [Insight-users] Determine if BMP is color or grayscale
> >
> >
> >
> > Dear ITK users,
> >
> >
> >
> > How can I determine if a BMP image is 8 bits grayscale or 24 bits RGB?
> >
> > I was able to use an ImageIO to read image information, but I can't seem
> > to access the bit depth information (m_Depth being private).
> >
> >
> >
> > I would like to write an application that can open and process grayscale
> > or color images, then save the output as grayscale or color.
> >
> > Color images are processed differently (they are treated as vector
> > images) so I need to differentiate them.
> >
> >
> >
> > Here is a sample of my code:
> >
> >
> >
> > itk::ImageIOBase::Pointer imageIO = itk::ImageIOFactory::CreateImageIO(
> > fileName.c_str(), itk::ImageIOFactory::ReadMode );
> >
> > imageIO->SetFileName( fileName );
> >
> > imageIO->ReadImageInformation();
> >
> >
> >
> >
> >
> >
> >
> > imageIO->GetComponentType() returns UCHAR in both cases .
> >
> > imageIO->GetNumberOfComponents() returns 3 in both cases .
> >
> >
> >
> > Thanks for your help,
> >
> > Sébastien Fricker
> >
> >
> >
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users at itk.org
> > http://www.itk.org/mailman/listinfo/insight-users
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20071026/63890100/attachment.htm


More information about the Insight-users mailing list