Grayscale EXR


Larry Gritz
 

It would be a great addition for the project documentation itself to give more prescriptive/opinionated advice on interpretation of channel names.


On Apr 16, 2021, at 12:43 PM, Eskil Steenberg <eskil@...> wrote:

Hi

When I implemented OpenEXR, this was one of my pain points. There are specifications for how to find the different channels like R G and B in a property or a pixel, but no specification of what the properties should be named, other then left/right eye. I would like to see Depth, diffuse, spectacular, transparency, normals, roughness and other usual suspects. Adding guidelines for this would make it much easier to write applications that does the right thing without user input.

Cheers

E


--
Larry Gritz





Eskil Steenberg
 

Hi

When I implemented OpenEXR, this was one of my pain points. There are specifications for how to find the different channels like R G and B in a property or a pixel, but no specification of what the properties should be named, other then left/right eye. I would like to see Depth, diffuse, spectacular, transparency, normals, roughness and other usual suspects. Adding guidelines for this would make it much easier to write applications that does the right thing without user input.

Cheers

E


Brendan Bolles
 

From the Technical Introduction to OpenEXR:
Converting RGB data to luminance/chroma format also allows space-efficient storage of gray-scale images. Only the Y channel needs to be stored in the file.
The RgbaInputFile class works this way. So I think it's safe to say Y for grayscale is the standard.

There's a sample file in openexr-images on Github. After Effects and Nuke both read it properly.


On Thu, Apr 15, 2021 at 07:33 PM, Larry Gritz wrote:
It's common practice to write grayscale as a single channel image.
 
I tend to like "Y" as the channel name when there is only one channel and it represents gray scale. I think this is better than "R" because it isn't red.
 


Larry Gritz
 

I agree, if the data represents a coverage mask, "A" is the more appropriate name. "Y" implies that it's intensity or something.

Hopefully, any reader should be smart enough that if you're looking for one channel and it sees a file with one channel, it's flexible enough to use it even if it's not the expected channel name.


On Apr 16, 2021, at 1:07 AM, Michael Wolf <michael.wolf@...> wrote:

Hallo Rhys,

On Friday, April 16, 2021, 4:06:15 AM, you wrote:

None of these solutions seem ideal. Is there some other method I have
missed?

My end goal is to create masks and textures for use in a wide variety of 3D
applications that use less memory due to the fact that they are single
channel.

Afaik Nuke assumes masks to be stored as 'A' - which stumped me as well since I initially used 'Y' as well.

Cheers,
Mike

--
db&w Bornemann und Wolf GbR
Seyfferstr. 34
70197 Stuttgart
Deutschland

michael.wolf@...

http://www.db-w.com

tel: +49 (711) 664 525-3
fax: +49 (711) 664 525-1
mob: +49 (173) 66 37 652

skype: lupus_lux
Support us on Patreon: https://www.patreon.com/dbw







--
Larry Gritz





Michael Wolf
 

Hallo Rhys,

On Friday, April 16, 2021, 4:06:15 AM, you wrote:

None of these solutions seem ideal. Is there some other method I have
missed?
My end goal is to create masks and textures for use in a wide variety of 3D
applications that use less memory due to the fact that they are single
channel.
Afaik Nuke assumes masks to be stored as 'A' - which stumped me as well since I initially used 'Y' as well.

Cheers,
Mike

--
db&w Bornemann und Wolf GbR
Seyfferstr. 34
70197 Stuttgart
Deutschland

michael.wolf@...

http://www.db-w.com

tel: +49 (711) 664 525-3
fax: +49 (711) 664 525-1
mob: +49 (173) 66 37 652

skype: lupus_lux
Support us on Patreon: https://www.patreon.com/dbw


Rhys D
 

Seems like I have my answer then.

Thanks.


On Fri, 16 Apr 2021 at 14:51, Larry Gritz <lg@...> wrote:
I have no idea. 

I would like to think that any sane application would notice a single channel and know what to do? But applications can do anything, it doesn't have to make sense. There is nothing you can do that will guarantee the behavior you are hoping for across all apps that you didn't write.

I really only access OpenEXR files via the OpenImageIO APIs, and they will definitely do the right thing. I would like to think that if OIIO was writing OpenEXR files in ways that other non-OIIO-based apps were misinterpreting, I would have heard complaints a long time ago.

-- lg


On Apr 15, 2021, at 7:44 PM, Rhys D <heyrhys@...> wrote:

Thanks Larry. If I have a single Y channel, can I count on most applications to open that channel if there is no RGB?

On Fri, 16 Apr 2021 at 14:33, Larry Gritz <lg@...> wrote:
It's common practice to write grayscale as a single channel image.

I tend to like "Y" as the channel name when there is only one channel and it represents gray scale. I think this is better than "R" because it isn't red.



On Apr 15, 2021, at 7:06 PM, Rhys D <heyrhys@...> wrote:

Hi,

I am a new list member, so I hope I am asking my question appropriately.

What I am wondering is if there is any standard practice when it comes to writing grayscale EXR files.
The reason I want to write grayscale files is to save memory when my images are just single channel.

As far as I know there are 4 options that I can see.

1: Write full RGB with the same in each channel.
Problems: Uses 3X memory when loaded into another application. Larger files.

2: Write just R channel.
Problems: Loads as a black and red image in a lot of programs.

3: Write just the Y channel of a YUV image.
Problems: When it loads into another application, it expands out to RGB.

4: Write a custom single channel.
Problems: Other applications won't know to read that channel.

None of these solutions seem ideal. Is there some other method I have missed?

My end goal is to create masks and textures for use in a wide variety of 3D applications that use less memory due to the fact that they are single channel.

Thanks,

Rhys.

--
Larry Gritz





--
Larry Gritz





Larry Gritz
 

I have no idea. 

I would like to think that any sane application would notice a single channel and know what to do? But applications can do anything, it doesn't have to make sense. There is nothing you can do that will guarantee the behavior you are hoping for across all apps that you didn't write.

I really only access OpenEXR files via the OpenImageIO APIs, and they will definitely do the right thing. I would like to think that if OIIO was writing OpenEXR files in ways that other non-OIIO-based apps were misinterpreting, I would have heard complaints a long time ago.

-- lg


On Apr 15, 2021, at 7:44 PM, Rhys D <heyrhys@...> wrote:

Thanks Larry. If I have a single Y channel, can I count on most applications to open that channel if there is no RGB?

On Fri, 16 Apr 2021 at 14:33, Larry Gritz <lg@...> wrote:
It's common practice to write grayscale as a single channel image.

I tend to like "Y" as the channel name when there is only one channel and it represents gray scale. I think this is better than "R" because it isn't red.



On Apr 15, 2021, at 7:06 PM, Rhys D <heyrhys@...> wrote:

Hi,

I am a new list member, so I hope I am asking my question appropriately.

What I am wondering is if there is any standard practice when it comes to writing grayscale EXR files.
The reason I want to write grayscale files is to save memory when my images are just single channel.

As far as I know there are 4 options that I can see.

1: Write full RGB with the same in each channel.
Problems: Uses 3X memory when loaded into another application. Larger files.

2: Write just R channel.
Problems: Loads as a black and red image in a lot of programs.

3: Write just the Y channel of a YUV image.
Problems: When it loads into another application, it expands out to RGB.

4: Write a custom single channel.
Problems: Other applications won't know to read that channel.

None of these solutions seem ideal. Is there some other method I have missed?

My end goal is to create masks and textures for use in a wide variety of 3D applications that use less memory due to the fact that they are single channel.

Thanks,

Rhys.

--
Larry Gritz





--
Larry Gritz





Rhys D
 

Thanks Larry. If I have a single Y channel, can I count on most applications to open that channel if there is no RGB?

On Fri, 16 Apr 2021 at 14:33, Larry Gritz <lg@...> wrote:
It's common practice to write grayscale as a single channel image.

I tend to like "Y" as the channel name when there is only one channel and it represents gray scale. I think this is better than "R" because it isn't red.



On Apr 15, 2021, at 7:06 PM, Rhys D <heyrhys@...> wrote:

Hi,

I am a new list member, so I hope I am asking my question appropriately.

What I am wondering is if there is any standard practice when it comes to writing grayscale EXR files.
The reason I want to write grayscale files is to save memory when my images are just single channel.

As far as I know there are 4 options that I can see.

1: Write full RGB with the same in each channel.
Problems: Uses 3X memory when loaded into another application. Larger files.

2: Write just R channel.
Problems: Loads as a black and red image in a lot of programs.

3: Write just the Y channel of a YUV image.
Problems: When it loads into another application, it expands out to RGB.

4: Write a custom single channel.
Problems: Other applications won't know to read that channel.

None of these solutions seem ideal. Is there some other method I have missed?

My end goal is to create masks and textures for use in a wide variety of 3D applications that use less memory due to the fact that they are single channel.

Thanks,

Rhys.

--
Larry Gritz





Larry Gritz
 

It's common practice to write grayscale as a single channel image.

I tend to like "Y" as the channel name when there is only one channel and it represents gray scale. I think this is better than "R" because it isn't red.



On Apr 15, 2021, at 7:06 PM, Rhys D <heyrhys@...> wrote:

Hi,

I am a new list member, so I hope I am asking my question appropriately.

What I am wondering is if there is any standard practice when it comes to writing grayscale EXR files.
The reason I want to write grayscale files is to save memory when my images are just single channel.

As far as I know there are 4 options that I can see.

1: Write full RGB with the same in each channel.
Problems: Uses 3X memory when loaded into another application. Larger files.

2: Write just R channel.
Problems: Loads as a black and red image in a lot of programs.

3: Write just the Y channel of a YUV image.
Problems: When it loads into another application, it expands out to RGB.

4: Write a custom single channel.
Problems: Other applications won't know to read that channel.

None of these solutions seem ideal. Is there some other method I have missed?

My end goal is to create masks and textures for use in a wide variety of 3D applications that use less memory due to the fact that they are single channel.

Thanks,

Rhys.

--
Larry Gritz





Rhys D
 

Hi,

I am a new list member, so I hope I am asking my question appropriately.

What I am wondering is if there is any standard practice when it comes to writing grayscale EXR files.
The reason I want to write grayscale files is to save memory when my images are just single channel.

As far as I know there are 4 options that I can see.

1: Write full RGB with the same in each channel.
Problems: Uses 3X memory when loaded into another application. Larger files.

2: Write just R channel.
Problems: Loads as a black and red image in a lot of programs.

3: Write just the Y channel of a YUV image.
Problems: When it loads into another application, it expands out to RGB.

4: Write a custom single channel.
Problems: Other applications won't know to read that channel.

None of these solutions seem ideal. Is there some other method I have missed?

My end goal is to create masks and textures for use in a wide variety of 3D applications that use less memory due to the fact that they are single channel.

Thanks,

Rhys.