supplierdeeply

Aperture control + test script

  • 31 Replies
  • 4331 Views
*

Offline reyalp

  • ******
  • 11542
Re: Aperture control + test script
« Reply #20 on: 14 / September / 2018, 02:04:57 »
Advertisements
Updated first post to fix logged non-APEX aperture values.
Don't forget what the H stands for.

Re: Aperture control + test script
« Reply #21 on: 14 / September / 2018, 03:44:08 »
Presumably someone didn't want to figure out how to do it in integer-only hostlua.
Is it possible to use the CHDK C implementation in hostlua (like a library call)?

If the error has a repeatable component it would be relatively easy to come up with a correction table and apply the difference in Tv.

The value will not be constant at the aperture. I have already measured this at constant aperture in the past.

With a time lapse, I would change the aperture in one direction only. If, for example, you reach the maximum exposure time with a time-lapse, then I would continue to open the aperture. If it gets brighter again, then I would shorten the exposure time (with a hysteresis like the ND filter).

A better way to measure error might be to take several shots at a fixed value, and then compare subsequent to the average. In the current script, the accuracy of the previous shot can significantly affect the error reported.

Yes of course, but a certain systematics can be seen in meter96.

As next step, I will also create a time lapse with variable aperture. For moving objects, of course, it would be an advantage if the script ran at a fixed interval.

Re: Aperture control + test script
« Reply #22 on: 17 / September / 2018, 13:27:55 »
I did another test run with the M3 (cont mode).
25 pictures with AV96 = 560 and 25 pictures with AV96 = 576. As you can see well, only larger errors occur (at index 25) when the aperture is changed. At constant aperture, the m96_err is only + -1.

In another run (30 pictures) I fixed the aperture in which I twisted the lens after dimming (Canon Lens Twist trick). For the script to work like this I had to delete Set TV. Here you can see very well that no more error arises. So my light source does not seem to flicker.

Re: Aperture control + test script
« Reply #23 on: 17 / September / 2018, 14:15:17 »
Interestingly, your error does not appear to be random: The 4th, 7th, 10th and 11th all have high error, but across runs are within 2 units.

I think I know the cause now. I have now used as a increment 1. I suspect that the aperture really changed only every 12 steps, so not like the G7x at every step.


Re: Aperture control + test script
« Reply #24 on: 20 / September / 2018, 13:12:14 »
Another run with the EF 50mm from AV96=160 to 210 and with EFM 15-45 from 480 to 530.
Actually, I always see jumps to 12 APEX96 with the exception of the EF 50mm between AV96 = 160 and 192. Here the aperture seems to change by 1/3 EV.

But why does the aperture only change every 12 APEX96 values?
8, 16 or 32 I could understand yes ....

Re: Aperture control + test script
« Reply #25 on: 20 / September / 2018, 14:53:20 »
My first test video with M3 and EF 50mm from f1.8 until f16. 1/8 EV steps a still small enough to get smooth aperture ramping. I used deflicker CS in VirtualDub.

Really great stuff and great work from reyalp :)


Update:
Download link:
https://drive.google.com/file/d/1vKuuqLesvFZ6tEPQIFqqWypD4GDGmYT-/view?usp=sharing
« Last Edit: 21 / September / 2018, 08:11:12 by c_joerg »

*

Offline reyalp

  • ******
  • 11542
Re: Aperture control + test script
« Reply #26 on: 22 / September / 2018, 22:21:32 »
My first test video with M3 and EF 50mm from f1.8 until f16. 1/8 EV steps a still small enough to get smooth aperture ramping. I used deflicker CS in VirtualDub.

Really great stuff and great work from reyalp :)
Nice work and thanks for all the test reports. It doesn't surprise me that the EOS M cameras are different, or that some work in 1/8th stop (12 unit) steps.

It would be nice for CHDK to be able to know which stops are valid.

There are quite a few iris related eventprocs that seem to be specific to the M cameras. Some I noticed
MoveIrisWithAvNotSupportAbsFNo
IsIrisSlowCtrlAvailable
EFLensCom.GetFNo
EFLensCom.GetFNoRange
EFLensCom.MoveIris_FNo
EFLensCom.MoveIris

edit:
Quote
Get_min_av96 returns a nil value on M3 so I set values from 200 to 600 (may be max as well).

Looking a bit more, this surprises me. The functions are found and appear to be real code that is used elsewhere in the firmware.


Edit:
Never mind, I see you are using CHDK build 4928. The min / max Av functions were added in 4998. The error you get is that the function itself is nil.
« Last Edit: 22 / September / 2018, 23:26:28 by reyalp »
Don't forget what the H stands for.

Re: Aperture control + test script
« Reply #27 on: 24 / September / 2018, 07:41:46 »
or that some work in 1/8th stop (12 unit) steps.
Looks like my entire lens has 12 unit step (with the exception of the beginning).
Here is another run with step size 1 with
EF 24mm f/2.8 IS USM
EF-S 55-250mm f/4-5.6 IS STM  at 55mm
EF-S 10-18mm/f4.5-5.6 EF-S IS STM at 10mm

It would be nice for CHDK to be able to know which stops are valid.

Yes of course…

Edit:
Never mind, I see you are using CHDK build 4928. The min / max Av functions were added in 4998. The error you get is that the function itself is nil.

Ups, still used a test version from lapser ;) . Update done…

I tested my entire lens with the following Script:

Code: [Select]
press'shoot_half'
repeat sleep(10) until get_shooting()
  local AV96=get_prop(props.AV)
release'shoot_half'
   
print_screen(get_day_seconds()/10)
local dof=get_dofinfo()
print("AV Values")
print('    FL=',dof.focal_length)
print('    AV96=',AV96,',f',fmt_av(AV96))
print('Min AV96=',get_min_av96(),',f',fmt_av(get_min_av96()))
print('Max AV96=',get_max_av96(),',f',fmt_av(get_max_av96()))


On some lenses I got smaller AV96 values with get_prop(props.AV) as with get_min_av96 like:

EF 24mm f/2.8 AV96=288 (what I expect) and Min AV96=300
or
EF-S 55-250mm f/4-5.6 IS STM at 55mm AV96= 384 (what I expect) and Min AV96= 396

Interesting on both lens:
Min AV96 on this lens is exactly 12 stops before the first real aperture change.

Here are complete results:

Code: [Select]
EF 24mm f/2.8 IS USM
    AV96= 288 ,f 2.82
Min AV96= 300 ,f 2.95
Max AV96= 876 ,f 23.62

EF 50mm f1.8 USM
    AV96= 168 ,f 1.83
Min AV96= 168 ,f 1.83
Max AV96= 864 ,f 22.62

EF-M 15-45mm f3.5-6.3 IS STM at 15mm
    AV96= 348 ,f 3.51
Min AV96= 348 ,f 3.51
Max AV96= 864 ,f 22.62
EF-M 15-45mm f3.5-6.3 IS STM at 45mm
    AV96= 516 ,f 6.44
Min AV96= 516 ,f 6.44
Max AV96= 1032 ,f -24.-3

EF-S 55-250mm f/4-5.6 IS STM at 55mm
    AV96= 384 ,f 4.00
Min AV96= 396 ,f 4.17
Max AV96= 876 ,f 23.62
EF-S 55-250mm f/4-5.6 IS STM at 250mm
    AV96= 480 ,f 5.65
Min AV96= 492 ,f 5.90
Max AV96= 972 ,f -32.-11

EF-S 10-18mm/f4.5-5.6 EF-S IS STM at 10mm
    AV96= 420 ,f 4.55
Min AV96= 420 ,f 4.55
Max AV96= 864 ,f 22.62
EF-S 10-18mm/f4.5-5.6 EF-S IS STM at 18mm
    AV96= 480 ,f 5.65
Min AV96= 480 ,f 5.65
Max AV96= 924 ,f 28.10


The CHDK C implementation should be correct, and should work for anything over f/1.0. We should probably support f/1.0 and below now that we have ILC cameras...

Looks like av96_to_aperture has problem with high AV96 values like 972. If I understand shooting_get_aperture_from_av96 correct, then the function returns an unsigned short and this is limited to +32.767.
972 deliver 33417.



*

Offline reyalp

  • ******
  • 11542
Re: Aperture control + test script
« Reply #28 on: 06 / October / 2018, 22:11:14 »
Updated script in the first post.

I changed the error calculation to be based comparison with shots at the initial (widest) av value. This makes it easier to understand aperture behavior than the previous relative comparison, but is more sensitive to lighting changes over the duration of the test. The "baseline shots" setting controls how many shots are averaged for the comparison value.

I also added code to compare the current aperture value (reported by get_current_av96) with the set value. This requires trunk build 5104 or later.

New log columns are
av96_cur: value reported by get_current_av96, which should theoretically be the actual aperture value
av96_err: difference between the set value and current value = av96 - av96_cur
m96_err_cur: m96_err, if av96_cur is the actual used aperture.

a540, g7x and sx710 all sometimes show av96_err of 1 or 2.

A540 looks like it only does steps of 3 units for most of the aperture range: Setting 282, 283 and 284 all give av_cur = 282. However, this isn't totally consistent.

g7x and sx710 seem to sometimes lag behind by 1. That is set 481=481, 482=481, 483=482, 484=484.

It's not clear to me whether the cur value more accurately represents the actual exposure. On sx710, average m96_err_cur was lower, while g7x and a540 were higher.

I'm reading the av96_cur value at the remote hook, assuming the actual aperture will be set at that point.
« Last Edit: 06 / October / 2018, 23:51:07 by reyalp »
Don't forget what the H stands for.

Re: Aperture control + test script
« Reply #29 on: 15 / October / 2018, 06:06:33 »
Updated script in the first post.

Code: [Select]
#ui_av_end=0 "End value (0 = max)"  [0 1920]
Where does the value of 1920 come from?

 

Related Topics