-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Phocube missing essential output options (local phase angle, slope, slope azimuth) #3645
Comments
This is incorrect. The phase angle calculation is independent of topography, and a "localphase" does not need to be calculated in isis, as it is the same calculation as the normal phase. Phase angle is the angular seperation between the camera look vector and the solar vector, and does not change with local slopes. NO CHANGE NEEDED FOR PHASE ANGLE. While the idea of being able to calculate local slope with phocube is enticing, it is likely better for the user to know what the baseline is of the slope being calculated. If the user were to create a slopemap with known dimensions, the user could run map2cam to get the slopes in image space. I would recommend not adding slope to phocube. |
Well, duh, Aaron is completely correct. I was being a total doofus and thank you for commenting to catch that. So, LOCALPHASE is a stupid non-existent concept, please ignore. However, I would really still like to see SLOPE and SLOPEAZIMUTH because I am having trouble sorting out the source of mismatches between where I see craters in the image (i.e., the DNs) and where the LOCALEMISSION and LOCALINCIDENCE seem to be responding to slopes. I can run slpmap, but I cannot confirm that everything is identical to how phocube does its slope calculations. Exposing the numbers phocube is using for topography would be very helpful in figuring out where the issue is. Thank you! |
@lavalaz I am very hesitant to expose information so that users can try and debug the software. Would you be okay with a software developer checking that phocube and slpmap are using equivalent methods? For a little bit more information, here's how phocube computes the local photometric angles:
The two main reason your local photometric angles may not line up with the topography you see in the imagery are:
|
I need the slope information to compute correlation statistics between slope and DN values for my photometric analysis. While I can generate a slope map outside of phocube and mosaic it into the phocube output, this breaks an existing rigorous chain between the slopes and the DN values at each pixel. And is a lot of extra work to get numbers that are already being computed within phocube. This is not a matter of a user trying to do a programmer's job, it is a case of a scientist trying to do a scientist's job. |
This issue is still open and is a candidate for discussion at the product support sprint prioritization meeting. It looks to me like a solution was presented 2/28 and then a response came in 5/3. Can we continue the discussion in here prior to the meeting? |
The "local-phase-angle" request was stupid, please ignore that part. |
There was some concern during the prioritization about adding more information to phocube but looking over what's already there, I think these would fit. @lavalaz Can you provide a definition, including the math, for the slope azimuth? The sensor model has the following:
|
Short version: it is the compass direction in degrees of the surface normal vector (N,S,E,W in numerical form - most people have north = 0, east = 90, etc., but I believe ISIS has a different convention that I have to look up every time). Let me know if you need a more precise definition...
…-------------
Laszlo Kestay
Research Geologist
USGS Astrogeology Science Center
________________________________
From: Jesse Mapel <[email protected]>
Sent: Friday, September 4, 2020 11:01 AM
To: USGS-Astrogeology/ISIS3 <[email protected]>
Cc: Kestay, Laszlo P <[email protected]>; Mention <[email protected]>
Subject: [EXTERNAL] Re: [USGS-Astrogeology/ISIS3] Phocube missing essential output options (local phase angle, slope, slope azimuth) (#3645)
This email has been received from outside of DOI - Use caution before clicking on links, opening attachments, or responding.
There was some concern during the prioritization about adding more information to phocube but looking over what's already there, I think these would fit.
@lavalaz<https://github.com/lavalaz> Can you provide a definition, including the math, for the slope azimuth? The sensor model has the following:
* The position of the sensor (and thus the look vector)
* The position of the sun
* The ground point
* The surface normal vector at the ground point (both from the DEM and the ellipsoid)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#3645 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AKMB27SSAMKMWHJI4BZNMJDSEETPTANCNFSM4KGE53GQ>.
|
A more precise definition would be good. What two vectors is it the compass angle between; the surface normal and what? |
Its not an angle between two vectors. Its a projection of the vector onto the plane of the map. And then the angle between that vector and a reference direction (north, if you use the normal convention, which isis does not).
It is exactly the same as the sub-spacecraft and sub-solar azimuth...
I can't give you the math because I don't know the way in which isis describes vectors, planes, map directions, etc. But I'll send some figures in a few minutes...
-------------
Laszlo Kestay
Research Geologist
USGS Astrogeology Science Center
…________________________________
From: Jesse Mapel <[email protected]>
Sent: Friday, September 4, 2020 11:12 AM
To: USGS-Astrogeology/ISIS3 <[email protected]>
Cc: Kestay, Laszlo P <[email protected]>; Mention <[email protected]>
Subject: [EXTERNAL] Re: [USGS-Astrogeology/ISIS3] Phocube missing essential output options (local phase angle, slope, slope azimuth) (#3645)
This email has been received from outside of DOI - Use caution before clicking on links, opening attachments, or responding.
Let me know if you need a more precise definition...
A more precise definition would be good. What two vectors is it the compass angle between; the surface normal and what?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#3645 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AKMB27T4PJZ4CJMWYFNW7LLSEEUX7ANCNFSM4KGE53GQ>.
|
Perhaps the confusion is that slope "azimuth" and slope "aspect" are used interchangeably in the literature. Looks like isis follows the ArcGIS terminology and uses "aspect". Please look at the slpmap application, output = aspect, for the math and description. https://isis.astrogeology.usgs.gov/Application/presentation/Tabbed/slpmap/slpmap.html |
The term "aspect" looked funny to me (because I usually think of this as azimuth, maybe my astronomy roots), but apparently this aliasing between aspect and azimuth is pervasive. There is a |
@lavalaz That's what I was looking for, thank you. We should be able to implement this based on that. |
I've got an idea of what code needs to be added for this all worked out. @lavalaz @rbeyer Any thoughts on whether to call this slope azimuth or slope aspect? Aspect seems to be more common, but phocube in general uses azimuth for calculations like this (the similar options are subspacecraftgroundazimuth & subsolargroundazimuth). |
I'd make sure to have both in the documentation, and be clear about it (unlike the gdal docs). Clearly, you have to pick one word for a key or an argument, but in the documentation be clear that "aspect" and "azimuth" are synonyms here. This way people familiar with just one term or the other can both "get it." As far as which one to use, there are arguments both ways. If phocube already uses "azimuth" in this exact same way for other things, then maybe staying with that pattern makes sense? |
I've got this all coded and I'm looking at the results and seeing some interesting things. This picture compares the slope computations from phocube with the slope computation from slpmap. This is the CTX image P07_003621_1980_XI_18N133W which has a nice view of some craters in it. Here's the steps I took to generate the new phocube image:
Then to produce the slpmap comparison I did the following
In this image you can see that the slopes from phocube line up nicely with slpmap. The top left is the projected phocube output, the top right image is the slpmap output, the bottom left is the MOLA sub-section, and the bottom right is a 2d plot comparing the phocube and slpmap output. The slpmap output looks very strange with huge variations and a strange gridding happening. I'm not sure why that's happening, but the phocube output looks like a less noisy version of it. In this image you can see the slope aspect/azimuth comparison. This one's a bit stranger. It is roughly the same region and you can see that on the walls of the crater rims the two line up again. The slpmap output also has an odd grid effect for the slope aspect and the phocube output is like a less noisy version of it. On the "flat" ground, though, things go a bit wild. The slope in these regions is very nearly 0, so it's not strange that the azimuth angles vary wildly, but it varies in a different way than the slpmap output. Is that okay? |
Very interesting! My guess is that the grid on the MOLA is from running slpmap at a spatial resolution higher than the grid spacing (you seem to be resolving the edges of the grids in the gridded data). It does look like the way slope and azimuth/aspect are being computed is consistent. The slope values look reasonable. I'm not sure I can validate the aspect values from just the screen shot, but the range is a bit odd - I would expect 0 to 360 (or -180 to +180, but 0-360 is more typical). |
Yeah, Laz is right, the MOLA data is definitely oversampled, and the gridwork is because of that. However, phocube must be using the same DEM, just sampling it differently. If you map-project the MOLA, but don't alter its resolution, the output of slpmap on it should then be commensurate with what phocube is now doing. The "aspect" image might even look more similar. |
This is all looking good. My only concern is that the plots seem to show some pixels have negative values for azimuth/aspect. The way it flips from 360 to 0 looks correct. And FYI, I can confirm that this ability to visualize the slope and aspect behind the local emission and incidence angles is really going to help me understand what is real versus noise in the data. Thank you! |
I regenerated the slpmap output with the correct resolution and it looks much better. Unfortunately, there appears to be an issue with the slope azimuth. The slpmap output looks quite nice, but the phocube output is a mess. I am going to look back into what could be going on and try another path to computing the azimuth that's more direct. |
I tinkered with this more over the weekend but couldn't get something that computed the slope azimuth correctly on the flat portions of my test image. I've updated the status on the PR and am going to leave this issue open until it can be worked on more. |
The incomplete code that produced the above results can be found here: https://github.com/jessemapel/ISIS3/tree/phoslope |
Description
The name of the phocube application suggests it is for doing photometric analyses which is the comparison of phase angle versus reflectivity. The most important photometric parameter is the phase angle, corrected for topography. This would be called "LOCALPHASE" in the parlance of phocube. Phocube has LOCAL_EMISSION and LOCAL_INCIDENCE which means all the math to calculate local phase angle is being done, but there is no option to output the one parameter that really matters. It is essential to also output the local incidence and local emission angle values to allow proper error analysis of the local phase angles.
The request is to add three (3) new output options in phocube:
LOCALPHASE (phase angle computed for each image pixel, using the DEM. Same math as calculating the phase angle without the DEM, but using the local incidence and local emission angle)
SLOPE (slope from the DEM that is used to calculate LOCALEMISSION, LOCALINCIDENCE, and LOCALPHASE; this is already being computed for each pixel, just asking for an option to output it as a band)
SLOPEAZIMUTH (azimuth of the downslope direction from the DEM that is used to calculate LOCALEMISSION, LOCALINCIDENCE, and LOCALPHASE; this is already being computed for each pixel, just asking for an option to output it as a band)
Example
phocube from=EW0131773041G_cal.cub to EW0131773041G_cal.pho.cub dn=yes localphase=yes slope=yes slopeazimuth=yes
The text was updated successfully, but these errors were encountered: