OM-1: Tag for AF-Mode / Subject detection

Started by abgestumpft, February 23, 2023, 07:08:22 AM

Previous topic - Next topic

abgestumpft

Hi Phil,

on the Olympus cameras and now also OM System with e.g. the OM-1 we have two different C-AF modes:
C-AF: normal C-AF
C-AF+TR: C-AF + Tracking. This will try to identify an Object based on color etc. and try to track it.

Both of them can also be combined with the AI Subject detection.

At the moment I found no know tag that contains the information that C-AF+TR was used (both via exiftool but also via OM Workspace Software). Here it always shows C-AF.


I did some investigation and found that tag Olympus_FocusInfo_0x031b contains information about focus mode and subject detection used (on bit level).
Attached you will find a picture how the different bits are used.
Olympus_FocusInfo_0x031b.jpg

Of course this was reverse-engineered so it might be incomplete or with some errors. But I did my best to try it on many different files.
Personally I think the yellow marked (AF Mode) and the purple+red (Subject AI Mode and if object was found) are the most interesting...

e.g:
35870 = 1000110000011110 = C-AF+TR with Bird AF and bird was found
35858 = 1000110000010010 = C-AF with Bird AF but no bird was found

Just FYI: there is already a tag that contains the AI Subject Tracking Modes discussed here, but none that contains C-AF+TR was used:
https://exiftool.org/forum/index.php?topic=13341.msg73439#msg73439


kind regards
Sebastian

Phil Harvey

Thanks for this.

Just looking at this tag for a set of test files I see some unknown bits set, but the value is zero for most samples even though they weren't shot in MF according to the FocusMode tag.

0x0c01 OlympusOM_5
0x041e OlympusE-M1X
0x0400 OlympusE-M1MarkIII
0x0381 OlympusE-P7
0x0381 OlympusE-M10MarkIV
0x0108 OlympusE-PL1
0x0102 OlympusE-M1MarkII
0x0100 OlympusE-3
0x0008 OlympusE-PM2
0x0008 OlympusE-P5
0x0008 OlympusE-P3
0x0008 OlympusE-P1
0x0008 OlympusE-M5MarkII
0x0008 OlympusE-M5
0x0008 OlympusE-M1MarkII
0x0008 OlympusE-M10MarkIII
0x0008 OlympusE-M10MarkII
0x0008 OlympusE-450
0x0008 OlympusAIR-A01
0x0005 OlympusE-P2
0x0005 OlympusE-M5
0x0005 OlympusE-5
0x0003 OlympusE1_1280x960
0x0003 OlympusE-500
0x0002 OlympusE1_SQ
0x0002 OlympusE1_1600x1200
0x0002 OlympusE-P1
0x0002 OlympusE-510
0x0002 OlympusE-410
0x0002 OlympusE-30
0x0002 OlympusE-1_50-200_1.4TC
0x0002 OlympusE-1_350mm_OM
0x0002 OlympusE-1_350mm_OM_1.4TC
0x0002 OlympusE-1_300mm
0x0001 OlympusE-M10
0x0000 OlympusXZ-1
0x0000 OlympusTG-6
0x0000 OlympusTG-5
0x0000 OlympusTG-4
0x0000 OlympusSTYLUS1
0x0000 OlympusPEN-F
0x0000 OlympusOM-1
0x0000 OlympusE500-2900kelvin
0x0000 OlympusE1
0x0000 OlympusE1-b
0x0000 OlympusE-PM2
0x0000 OlympusE-PM1
0x0000 OlympusE-PL9
0x0000 OlympusE-PL8
0x0000 OlympusE-PL7
0x0000 OlympusE-PL6
0x0000 OlympusE-PL5
0x0000 OlympusE-PL3
0x0000 OlympusE-PL2
0x0000 OlympusE-PL1s
0x0000 OlympusE-PL10
0x0000 OlympusE-PL1
0x0000 OlympusE-P5
0x0000 OlympusE-P3
0x0000 OlympusE-P2
0x0000 OlympusE-P1_pre-production
0x0000 OlympusE-M5MarkIII
0x0000 OlympusE-M5MarkII
0x0000 OlympusE-M10MarkII
0x0000 OlympusE-M10
0x0000 OlympusE-620
0x0000 OlympusE-600
0x0000 OlympusE-520
0x0000 OlympusE-510
0x0000 OlympusE-500
0x0000 OlympusE-5
0x0000 OlympusE-450
0x0000 OlympusE-420
0x0000 OlympusE-400
0x0000 OlympusE-3ZD
0x0000 OlympusE-330
0x0000 OlympusE-300
0x0000 OlympusE-300_ZuikoED7-14mm_f4.0
0x0000 OlympusE-300_Zuiko40-150mm_f3.5-4.5
0x0000 OlympusE-300_SHQ
0x0000 OlympusE-300_ED150mm_f2.0
0x0000 OlympusE-300_14-45mm_f3.5-5.6
0x0000 OlympusE-30
0x0000 OlympusE-1_300mm-b
0x0000 OlympusE-1_14-54mm
0x0000 OlympusAIR-A01

So I don't know what to do about this.  Other than determining if C-AF+TR was used for the OM-1, I think that trying to decode this could confuse things more than it could help.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

herb

Hello,

at first I have to say thanks
@Phil: for the new version 12.57
@abgestumpft: for this great analysis

In order to make it a little bit more complicated I have to add what I have seen for tag "Olympus_FocusInfo_0x031b" doing tests with my Olympus E-M5iii camera:
Bit 0 and bit 1 of the left byte store a more detailed information about eye-autofocus (of face-priority-AF)
- 0: no eye-focus - only face-priority-AF
- 1: priority on right eye
- 2: priority on left eye
- 3: priority on eyes (left or right)

I feel free to enhance an example of abgestumpft:
35870 = 1000 1100 0001 1110 = C-AF+TR with Bird AF and bird was found
               xx --> eye-autofocus


I also checked values of tag 0x013b with content of pictures taken with my E-M5iii:
I checked only fields that are used (E-M5iii has no "Subject Detection Modes")
(yellow) MF/S-AF/C-AF/C-AF+TR: same
(red)    One of the C-AF modes used: same
(blue)   One of the AF modes was used: different (always 0)

And I also have questions to abgestumpft:
Did you compare the values for "One of the Subject Detection Modes was used ..." with tag 0x0309 "AISubjectTrackingMode"?
Can you check the eye-focus values in pictures of your OM-1?
Thanks in advance

At comments of Phil:
QuoteJust looking at this tag for a set of test files I see some unknown bits set, but the value is zero for most samples even though they weren't shot in MF according to the FocusMode tag.
QuoteOther than determining if C-AF+TR was used for the OM-1, I think that trying to decode this could confuse things more than it could help.
I have seen that the tag 0x013b is handled different by different camera models
E-M5iii stores information about eye-autofocus;
E-PL6 does not store any value although both models have identical settings in menues and both write MakerNote Olympus2.

Assuming that OM-1 and E-M5iii store identical values
my suggestion/proposal for a next step:
(1)
we have to group cameras into - older models and newer models.
What is a "newer camera"?
For me this are all cameras: E-P... , E-M... and OM-...
Should we use MakerNote version Olympus2 or Olympus3 for grouping? Sorry I cannot prove/verify it.
(2)
Maybe we should do an internal "ExifTool" defined grouping; do we need 2 or do we need 3 groups?
This grouping should also be used for tag "AFPoint" -- see thread https://exiftool.org/forum/index.php?topic=14144.0 "Unknown values for AFPoint of newer Olympus cameras"

For group "older models" like E-620 E-600 (and may others also)
- tag "AFPoint" gives correct values
- Olympus_FocusInfo_0x031b is not written (or should not be taken into account)
  i.e.: the stored value should be shown -- but please not shown as Unknown(xxx)

For group models e.g. OM-1 (uses MakerNote Olympus3) or EM5iii (uses MakerNote Olympus2)
- tag AFPoint has values we cannot decode currently
  i.e.: the stored value should be shown -- but please not shown as Unknown(xxx)
- Olympus_FocusInfo_0x031b has values as explained in this thread

Best regards
herb

abgestumpft

#3
Hi,

@Phil: thanks for checking. Looks like this tag get's starting to be used more and more with newer models (which have more and more AF functions).But I agree that this can get very complicated when you have to consider the camera model when interpreting this tag.

@herb: thanks for your tests. I can confirm that on the OM-1 the Eye AF info is stored the same way.

I did some more tests now and was able to find out some more bits and also have some corrections (e.g. I wondered why yes/no info for AF/MF used (turquoise) should be stored in two bits - and: this info is already available via the AF mode (yellow), similar for the red C-AF/S-AF info)

1. Red:
This is if release priority was used. Since default is OFF for S-AF and ON for C-AF it initially looked like this was info about S-AF or C-AF...

2. Blue:
New: info if the option AF+MF is activated. This allows manual focus in all AF modes.

3. Dark green:
Face Detection ON/OFF. Face detection can be enabled without Eye AF, but is always enabled when EyeAF is active.

4. Grey:
Eye AF info: as found out by herb

5. turquoise:
Is AF activated by half pressing the shutter button?

6. dark red:
Face and Eye AF Button: Face/Eye or AF Target priority

Here the new image:
Olympus_FocusInfo_0x031b_V2.jpg

For the other two remaining (white) bits I have no clue at the moment:
The fist one is always 1, the second one always 0 - no matter what setting I changed...

abgestumpft

Small correction to the yellow marked bits:
Did a typo here: C-AF+TR is 110, not 11

Looks like AF mode are the two first bits and the third one is Tracking ON/OFF.
But since tracking is only working with C-AF, it will always be 110 when active.

Olympus_FocusInfo_0x031b_V3.jpg

herb

Hello abgestumpft, hello Phil,

@abgestumpft
Thanks again for your very good reverse engineering.

@ Phil
Thanks for ExifTool version 12.58
I thought or better I hoped that this version will also decode Olympus-FocusInfo tag 0x031b.
I hope there are no arguments against this enhancement of ExifTool.

To decode this tag and to satisfy all changes/modification done by Olympus/OMDS for "newer" camera models
I started to build an own (attached) file Olympus_new.pm

(a) I grouped the Olympus cameras in "older" and "newer" models.
    Newer models are all E-Mxxx and OM-x cameras

(b) For "newer" cameras I tried to decode tag 0x031b and called it "AFPointDetails"
    PrintConv is working, but I could not do a PrintConvInv.
    From Perl point of view - maybe there could be better Perl code.

(c) I also did some modifications for existing tag 0x308 "AFPoint"
    - For models E-520, E-600 and E-620 I added missing values for "FocusPoint" based on code/formula given
      by user W.P. in post "Unknown values for AFPoint of newer Olympus cameras"
      https://exiftool.org/forum/index.php?topic=14144.0
    - For "older" models the values will be displayed unchanged (as currently coded).
    - But for "newer" models only the value itself is printed.
      I did it, because (for me obviously) Olympus did a big change here.
      So currently we do not know how to decode "AFPoint" for "newer" models and
      without this change ExifTool will always print "Unknown (xxx)", which should be avoided.

I hope you can agree to the changes and will decode also tag 0x031b in next version.
Thanks in advance and
best regards
herb

Phil Harvey

Hi Herb,

Thanks!  I'll include this in the next release.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).