Pixel to solid angle transformation

Hi,

I was exploring Jan's evalgalre tool, and found out that size of each pixel
is represented in calculations as its solid angle 'omega'.
I understand the concept of that, but couldn't find exact equations for
transformation from pixel x,y coordinates into omega.

I searched evalglare code, found appropriate functions, but it is not easy
to extract exact formulas from them. As I understand transformations used
are part of code Radiance code too.
My search on Internet was also futile (maybe wrong search keywords :slight_smile:

Can someone please point me to some site with such transformations or give
some equations here?

Thanks in advance,
Marija

Hi,

I think Marja wanted to know the math behind, not the tools available to query a pixel's solid angle. Unfortunately, the calculation depends on the projection, and there are several projections included in Radiance now. One simplification may be to reproject anything to e.g. an equisolid fisheye, where the solid angles of all pixels should be equal and could be calculated as the solid angle of the image divided by the amount of pixels.

Cheers, Lars.

Hi Lars,

You are right the math behind is what interests me.
I know that it depends on projection. For the moment I'm interested in
angular fisheye view used for evalglare input images. I thought that is
gives equal solid angle for every pixel, but it seems that angles vary
slightly (increasing towards image corners), and that's what is puzzling me.

Marija

···

On Thursday, February 14, 2013, Lars O. Grobe wrote:

Hi,

I think Marja wanted to know the math behind, not the tools available to
query a pixel's solid angle. Unfortunately, the calculation depends on the
projection, and there are several projections included in Radiance now. One
simplification may be to reproject anything to e.g. an equisolid fisheye,
where the solid angles of all pixels should be equal and could be
calculated as the solid angle of the image divided by the amount of pixels.

Cheers, Lars.
_______________________________________________
Radiance-general mailing list
[email protected] <javascript:;>
http://www.radiance-online.org/mailman/listinfo/radiance-general

Yes, although an equisolid-angle fisheye has been requested by users, since it matches commonly found lenses, it is pretty low on my priority list. All of the existing view types in Radiance vary solid angle somewhat with image position. The means used to calculate solid angle in pcomb involves taking the area contained by each pixel as its rays are projected onto a unit sphere, thus leveraging the existing image-position-to-ray calculations already present in the code. These latter routines are rather difficult to get right, which is why adding new view types is a bit painful. (It took over a year before all the bugs were worked out in the latest -vts addition.)

Best,
-Greg

···

From: Marija Velickovic <[email protected]>
Date: February 15, 2013 2:15:37 AM PST

Hi Lars,

You are right the math behind is what interests me.
I know that it depends on projection. For the moment I'm interested in angular fisheye view used for evalglare input images. I thought that is gives equal solid angle for every pixel, but it seems that angles vary slightly (increasing towards image corners), and that's what is puzzling me.

Marija

On Thursday, February 14, 2013, Lars O. Grobe wrote:
Hi,

I think Marja wanted to know the math behind, not the tools available to query a pixel's solid angle. Unfortunately, the calculation depends on the projection, and there are several projections included in Radiance now. One simplification may be to reproject anything to e.g. an equisolid fisheye, where the solid angles of all pixels should be equal and could be calculated as the solid angle of the image divided by the amount of pixels.

Cheers, Lars.

Just to round this out.

Me: For a hemispherical fish-eye view the total should of course be 2pi. Now I expected a little shortfall as things get 'wonky' towards the horizon, but not quite as big as this -

pcomb -e 'lo=S(1)' del.hdr | pvalue -H -h -o -b -d | total

on various size images gives:

256 sq 5.73709888
512 sq 5.90116727
1024 sq 6.01635629
4096 sq 6.14755086

Greg: The solid angle calculation in pcomb relies on being able to compute the neighboring pixel ray directions. For one side of the hemispherical view, these pixels fall off the image and so the returned solid angle is zero when it should not be. On the other side of the view, the solid angle is non-zero but still underestimated as the area isn't taken around the pixel center as it should be.

For normal views, this isn't a big deal, but since so much solid angle is packed into the rim of a hemispherical fisheye, the errors really add up! The accuracy anywhere away from the rim is probably fine.

···

----

Marija, I was mindful of your comment "to see how calculation is exactly done". As Greg indicates, solid angle in these instances is really, really hard to get right. Expect similar errors with hemispherical images depending on the image size.

Cheers
John

John Mardaljevic PhD FSLL
Professor of Building Daylight Modelling
School of Civil & Building Engineering
Loughborough University
Loughborough
Leicestershire
LE11 3TU, UK

Tel: +44 1509 222630 (Direct)
Tel: +44 1509 228529 (Pam Allen, secretary)

[email protected]
http://www.lboro.ac.uk/departments/cv/staff/profile/367.html

Personal daylighting website:
http://climate-based-daylighting.com