- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I am trying to convert a LAB image into a BGR image. I am not getting the expected values when I compare with conversions done with other software (Photoshop). More specifically, I am using this routine:
IppStatus ippiLabToBGR_16u8u_C3R(const Ipp16u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize);
According to the doc, the 16U lab dataarefirst converted to original/unscaled LAB value asfollows:
L = L * 100./65535.
a = (a/255. - 128.)
b = (b/255.) - 128.)
When I try simple values, the conversion seems wrong. Here are a few examples:
LAB values 16U values passes toIPP 8u values returned by ippiLabToBGR
------------- --------------------------- -------------------------------------
L= 50 32767 R=46
A= 0 32640 G=47
B= 0 32640 B=48
For a L of 50, we should get a much higher intensity then RGB~=46 as returned now by the routine (it should be close to 128 IMHO)
Here is another example:
LAB values 16U values passes to IPP 8u values returned by ippiLabToBGR Conversion with Photoshop
------------- --------------------------- ------------------------------------- ---------------------------
L= 60 39321 R= 26 R=90
A= -20 27540G= 81 G=154
B= +30 40290B= 55 B=123
The IPP conversion is not even close to the value obtained with Photoshop (which I trust for that).
I suspect that this might be related to gamma-correction but I am not sure. Is there a way to disable gamma-correction?
Am I missing something else? Any help would be appreciated.
Thanks you!
Gilbert
I am trying to convert a LAB image into a BGR image. I am not getting the expected values when I compare with conversions done with other software (Photoshop). More specifically, I am using this routine:
IppStatus ippiLabToBGR_16u8u_C3R(const Ipp16u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize);
According to the doc, the 16U lab dataarefirst converted to original/unscaled LAB value asfollows:
L = L * 100./65535.
a = (a/255. - 128.)
b = (b/255.) - 128.)
When I try simple values, the conversion seems wrong. Here are a few examples:
LAB values 16U values passes toIPP 8u values returned by ippiLabToBGR
------------- --------------------------- -------------------------------------
L= 50 32767 R=46
A= 0 32640 G=47
B= 0 32640 B=48
For a L of 50, we should get a much higher intensity then RGB~=46 as returned now by the routine (it should be close to 128 IMHO)
Here is another example:
LAB values 16U values passes to IPP 8u values returned by ippiLabToBGR Conversion with Photoshop
------------- --------------------------- ------------------------------------- ---------------------------
L= 60 39321 R= 26 R=90
A= -20 27540G= 81 G=154
B= +30 40290B= 55 B=123
The IPP conversion is not even close to the value obtained with Photoshop (which I trust for that).
I suspect that this might be related to gamma-correction but I am not sure. Is there a way to disable gamma-correction?
Am I missing something else? Any help would be appreciated.
Thanks you!
Gilbert
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - gsoucy
Hello,
I am trying to convert a LAB image into a BGR image. I am not getting the expected values when I compare with conversions done with other software (Photoshop). More specifically, I am using this routine:
IppStatus ippiLabToBGR_16u8u_C3R(const Ipp16u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize);
According to the doc, the 16U lab dataarefirst converted to original/unscaled LAB value asfollows:
L = L * 100./65535.
a = (a/255. - 128.)
b = (b/255.) - 128.)
When I try simple values, the conversion seems wrong. Here are a few examples:
LAB values 16U values passes toIPP 8u values returned by ippiLabToBGR
------------- --------------------------- -------------------------------------
L= 50 32767 R=46
A= 0 32640 G=47
B= 0 32640 B=48
For a L of 50, we should get a much higher intensity then RGB~=46 as returned now by the routine (it should be close to 128 IMHO)
Here is another example:
LAB values 16U values passes to IPP 8u values returned by ippiLabToBGR Conversion with Photoshop
------------- --------------------------- ------------------------------------- ---------------------------
L= 60 39321 R= 26 R=90
A= -20 27540G= 81 G=154
B= +30 40290B= 55 B=123
The IPP conversion is not even close to the value obtained with Photoshop (which I trust for that).
I suspect that this might be related to gamma-correction but I am not sure. Is there a way to disable gamma-correction?
Am I missing something else? Any help would be appreciated.
Thanks you!
Gilbert
I am trying to convert a LAB image into a BGR image. I am not getting the expected values when I compare with conversions done with other software (Photoshop). More specifically, I am using this routine:
IppStatus ippiLabToBGR_16u8u_C3R(const Ipp16u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize);
According to the doc, the 16U lab dataarefirst converted to original/unscaled LAB value asfollows:
L = L * 100./65535.
a = (a/255. - 128.)
b = (b/255.) - 128.)
When I try simple values, the conversion seems wrong. Here are a few examples:
LAB values 16U values passes toIPP 8u values returned by ippiLabToBGR
------------- --------------------------- -------------------------------------
L= 50 32767 R=46
A= 0 32640 G=47
B= 0 32640 B=48
For a L of 50, we should get a much higher intensity then RGB~=46 as returned now by the routine (it should be close to 128 IMHO)
Here is another example:
LAB values 16U values passes to IPP 8u values returned by ippiLabToBGR Conversion with Photoshop
------------- --------------------------- ------------------------------------- ---------------------------
L= 60 39321 R= 26 R=90
A= -20 27540G= 81 G=154
B= +30 40290B= 55 B=123
The IPP conversion is not even close to the value obtained with Photoshop (which I trust for that).
I suspect that this might be related to gamma-correction but I am not sure. Is there a way to disable gamma-correction?
Am I missing something else? Any help would be appreciated.
Thanks you!
Gilbert
Hi,
To get result like Photoshop you should work with gamma corrected RGB.
Use ippi functions:
- ippiGammaFwd which performs gamma-correction of the source image with RGB data.
- ippiGammaInv which converts a gamma-corrected RGB image back to the original RGB image.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page