Effacer les filtres
Effacer les filtres

How do I decode DigitalCamera.MakerNote returned by imfinfo as a vector of doubles?

6 vues (au cours des 30 derniers jours)
  2 commentaires
Walter Roberson
Walter Roberson le 24 Juin 2023
is it currently uint8? Of so then typecast and maybe swapbytes
Duncan Carlsmith
Duncan Carlsmith le 24 Juin 2023
The data returned by imfinfo is double but appears to be all positive integers and I've tried char(V) and variants of char((u)intXX(V)). Can you be more explicit about using swapbytes?

Connectez-vous pour commenter.

Réponse acceptée

Duncan Carlsmith
Duncan Carlsmith le 24 Juin 2023
Answering my own question after much ferreting around. It appears that the APPLE makernotes file is a BLIST, a binary version of a property list (plist), and MATLAB's imagesci.rjpg8cimf, invoked from imfinfo, must just throw up its hands and encode the makerfile as a bunch of integers and return a doubles vector.
The EXIFTools source code in PERL for decoding the BLIST is at
https://github.com/exiftool/exiftool/blob/master/lib/Image/ExifTool/Apple.pm
and references
https://medium.com/@karaiskc/understanding-apples-binary-property-list-format-281e6da00dbd
A python decoder is at
https://docs.python.org/3/library/plistlib.html
Discussion: https://stackoverflow.com/questions/27509319/decoding-data-from-plist-file
It would be great if imfinfo were as complete as EXIFinfo. Not only does imfinfo not decode the MAKERNOTES, but it skips over quite a lot of other information.
It is possible to download and install EXIFinfo for various OSs from
https://exiftool.sourceforge.net/
and presumably to invoke it on a file programmatically from MATLAB but that makes its use out of the range of the novice user that I am writing code for, someone who never goes under the hood.
FYI, I've found a few free EXIFinfo servers including
https://www.metadata2go.com/view-metadata
https://jimpl.com/
and one with API access
https://www.conversion-tool.com/api-access/
but that API requires you put your image on a server someplace so you can't just upload a file via a MATLAB RESTFUL call. Not all of these services produce information identical to EXIFTools but they do return APPLE makernotes iPhone acceleration of gravity vector (from the built-in linear accelerometer chip sensor. This data and the bearing from the 3-axis magnetometer (compass) tell you the orientation of the camera locally and given the GPS info the orientation in celestial coordinates, which is what I'm after.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by