Beginner level projection |
Beginner level projection |
Nov 6 2019, 11:50 PM
Post
#1
|
|
Junior Member Group: Members Posts: 31 Joined: 31-October 19 Member No.: 8699 |
Hi,
I'm trying to do the mapping just using SPICE for the Junocam images rather than going through ISIS. It might seem like I'm making life difficult for myself but I just wanted to make sure I'm doing the bare minimum amount of processing so it looks as close to a non-spinny-push-frame image as I can. I'm making all the beginner mistakes but I can't seem to figure out what they are so I was hoping someone might give me a hint? First I want to figure out how far Jupiter is because I want to have anything that didn't hit Jupiter get mapped to a sphere that hits Jupiter. This means any lens effects can get mapped in space near where they originated from which should hopefully make the edges of the planet seem less processed: [jupiterPos, jupiterLt] = spice.spkpos('JUPITER', et0, 'JUNO_SPACECRAFT', 'NONE', 'JUNO') jupiterDistance = np.linalg.norm(jupiterPos) Then I go through all the undistorted Junocam pixel vectors and figure Jupiter intercept points in the IAU_JUPITER frame so now I have a point cloud of all the planet mapped pixels: [point, trgepc, srfvec, found ] = spice.sincpt( 'Ellipsoid', 'JUPITER', et, 'IAU_JUPITER', 'LT+S', 'JUNO_SPACECRAFT', 'JUNO_JUNOCAM', v) If it didn't find an intersection then I figure out where that invisible sphere is going to be by extending out the pixel vector by the separation and move that to the IAU_JUPITER frame: direction = np.array(v) pos = direction*jupiterDistance/np.linalg.norm(direction) rotationMatrix = spice.pxform('JUNO_JUNOCAM','IAU_JUPITER',et-jupiterLt) pos = spice.mxv(rotationMatrix, pos) It works terribly! I seem to have a timing error in the frame offsets that seems suspiciously close to the light time between Jupiter and Juno and the sphere that catches all the sincpt misses is completely miles off. I've been staring at the code for a while and not figuring my mistake, I was hoping someone might point out where I've gone wrong. Many thanks Adam |
|
|
Nov 14 2019, 11:34 PM
Post
#2
|
|
Junior Member Group: Members Posts: 31 Joined: 31-October 19 Member No.: 8699 |
Update: I think my issue is that the transform doesn't do light stuff which I was assuming. So the first has apparent position and the second doesn't. I've tried shifting everything by the difference between the corrected and uncorrected limb to get it equivalent to the apparent poisition but not luck yet :-/
--- I've been looking at this pretty carefully and I'm not seeing my error, when I map this back to the juno location it comes out evenly spaced (so I'm mapping back to the same spot) but there's a gap. So the result from one branch is being mapped a little bit off the other. If someone could give me a hint that would be great. I used the LT method thinking it would match method wise but I tried a few and it makes very little difference. Thanks for any help. CODE [jupiterPos, jupiterLt] = spice.spkpos('JUPITER', et0, 'IAU_JUPITER', 'NONE', 'JUNO')
frac = 0.63 jupiterDistance = np.linalg.norm(jupiterPos) # This fragment has the pixel direction vectors already calculated as "direction" with spice.no_found_check(): [point, trgepc, srfvec, found ] = spice.sincpt( 'Ellipsoid', 'JUPITER', et, 'IAU_JUPITER', 'LT', 'JUNO', 'JUNO_JUNOCAM', v) if found: cloundInd = (thisSlice - sliceLow)*1648*128 + y*1648 + x pointCloud[cloundInd,:] = point else: direction = np.array(v) pos = frac*direction*jupiterDistance/np.linalg.norm(direction) rotationMatrix = spice.pxfrm2('JUNO_JUNOCAM','IAU_JUPITER',et, et-jupiterLt*frac) pos = spice.mxv(rotationMatrix, pos) pos -= jupiterPos cloundInd = (thisSlice - sliceLow)*1648*128 + y*1648 + x pointCloud[cloundInd,:] = pos |
|
|
Lo-Fi Version | Time is now: 13th June 2024 - 05:02 AM |
RULES AND GUIDELINES Please read the Forum Rules and Guidelines before posting. IMAGE COPYRIGHT |
OPINIONS AND MODERATION Opinions expressed on UnmannedSpaceflight.com are those of the individual posters and do not necessarily reflect the opinions of UnmannedSpaceflight.com or The Planetary Society. The all-volunteer UnmannedSpaceflight.com moderation team is wholly independent of The Planetary Society. The Planetary Society has no influence over decisions made by the UnmannedSpaceflight.com moderators. |
SUPPORT THE FORUM Unmannedspaceflight.com is funded by the Planetary Society. Please consider supporting our work and many other projects by donating to the Society or becoming a member. |