Annoucement of dtLapse

To me it looks like it’s trying to run?

(env) dave@dave-desktop:~/dtlapse$ ./dtlapse.py
usage: dtlapse.py [-h]
                  {rgbcurve,colorbalance,bilat,exposure,graduatednd,vibrance,filmicrgb,temperature,velvia}
                  ...
dtlapse.py: error: the following arguments are required: operation

I’m not sure how to get it to run in the directory with my files.

After fiddling a bit and learning from my mistakes I now know the following things:

  1. You must specify a module to keyframe. Only one module can be specified at a time, so if you want to keyframe both exposure and white balance (called ‘temperature’ here) you need to run dtlapse twice.
  2. All the images (not only the keyframes) must have existing xmp files.
  3. The first and last images of a series must be keyframes (yes, it’s in the readme but I managed to screw it up anyway :stuck_out_tongue: )
  4. All the keyframes must have the module you are keyframing enabled. Even if for example your exposure correction is zero for that image. For the rest of the images enabling is not necessary.
  5. Besides Filmic (to be expected) also the Exposure module keyframing does not work with 3.2.0 yet. Unpacking the struct fails because there is now an extra parameter.
  6. the --xmps parameter may only contain xmp files, other types are not filtered. You have to use ‘find -iname ".xmp" ’ or '/.xmp’ to isolate them.
2 Likes

Thanx. Really cool vids :blush:!

1 Like

Thank you, those are very good points!
I will add them to the documentation.
That’s the stuff I didn’t see anymore because I’m so used to it. It’s really nice that you pointed that out! :blush:
Also, I might need to rewrite the documentation, it’s pretty cluttered right now. Next would be to improve the XML code, because I’m quite sure that I’m not doing it right (although it works). Then it would be nice to refactor the whole thing into separate modules and classes :see_no_evil:

3 Likes

Hi David,

suppose you have all your timelapse pictures (and nothing else) in one folder, e.g. /path/to/my/timelapse.
Then you just do this:

$ cd /path/to/my/timelapse
$ darktable .
# or
$ darktable *.arw # *.nef *.cr2 or what you're using
# edit edit edit
$ dtlapse.py ${operation} --xmps *.xmp # --plot --smooth --window --order etc
$ darktable . # or ..

Practical tips:
Use shell globbing. I leave the sequence number in my RAW files, so I can do something like this:
(zsh)
$ dtlapse.py ${operation} --xmps *{0000..0200}.xmp

If darktable is acting strangly or overwrites your XMPs, run it without the database:
darktable --library :memory:

If you have used more than one module and need to run dtlapse multiple times, use a for loop:

for op in exposure temperature filmicrgb; do
  dtlapse ${op} --xmps ${xmps}
done

Hope this helps!

1 Like

I saw your updated docs, I will read through them later this week to see if I have more questions :slight_smile:
Two more things: I wrote a .json file for the tone equalizer module. I plan on expanding it and I made a PR on your gitlab. Someone else has also added modules!

And secondly: The ‘eval’ parsing for iops was broken by the addition of modversion. I don’t speak python well enough to fix it, but I started an issue on GL (not sure if you have seen it) and I thought I would mention it here as well.

I’m sure you’ve noticed I’m still new to bash…
Per your Git Hub instructions I have no problems up to

(env) dave@dave-desktop:~/dtlapse$ pip install -r requirements.txt
Requirement already satisfied: matplotlib>=3.1.1 in ./env/lib/python3.8/site-packages (from -r requirements.txt (line 1)) (3.3.0)
Requirement already satisfied: numpy>=1.16.4 in ./env/lib/python3.8/site-packages (from -r requirements.txt (line 2)) (1.19.1)
Requirement already satisfied: scipy>=1.3.0 in ./env/lib/python3.8/site-packages (from -r requirements.txt (line 3)) (1.5.2)
Requirement already satisfied: attrdict==2.0.1 in ./env/lib/python3.8/site-packages (from -r requirements.txt (line 4)) (2.0.1)
Requirement already satisfied: kiwisolver>=1.0.1 in ./env/lib/python3.8/site-packages (from matplotlib>=3.1.1->-r requirements.txt (line 1)) (1.2.0)
Requirement already satisfied: python-dateutil>=2.1 in ./env/lib/python3.8/site-packages (from matplotlib>=3.1.1->-r requirements.txt (line 1)) (2.8.1)
Requirement already satisfied: cycler>=0.10 in ./env/lib/python3.8/site-packages (from matplotlib>=3.1.1->-r requirements.txt (line 1)) (0.10.0)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in ./env/lib/python3.8/site-packages (from matplotlib>=3.1.1->-r requirements.txt (line 1)) (2.4.7)
Requirement already satisfied: pillow>=6.2.0 in ./env/lib/python3.8/site-packages (from matplotlib>=3.1.1->-r requirements.txt (line 1)) (7.2.0)
Requirement already satisfied: six in ./env/lib/python3.8/site-packages (from attrdict==2.0.1->-r requirements.txt (line 4)) (1.15.0)

So I can execute dtlapse.py in ~/dtlapse and get the expected response

(env) dave@dave-desktop:~/dtlapse$ ./dtlapse.py
usage: dtlapse.py [-h]
                  {rgbcurve,colorbalance,bilat,exposure,graduatednd,vibrance,filmicrgb,temperature,velvia}
                  ...
dtlapse.py: error: the following arguments are required: operation

But I can’t execute it an any other folder, I get dtlapse.py: command not found when I try to execute where my xml files live.

If you want to access it from anywhere, you need to add the dtTimelapse folder to your bash path. See environment variables - How to add a directory to the PATH? - Ask Ubuntu

Strange… I thought I did it correctly but I guess I missed making it permanent. I added it directly to my .bashrc and it’s working now.

1 Like

Under my home directory on all my little linux boxes, I make a bin directory and add that to the PATH. When I write a script or some one-off program, I put it in the ~/bin directory and I can then run it from any shell I have open.

GUI is intuitive, but shell is powerful… :stuck_out_tongue_closed_eyes:

So excited. I might continue with my python studies and adapt this to Rawtherapee.

2 Likes

Thank you very much for contributing, I’m very happy about that! :innocent:

Thank you again for the hint! I haven’t checked gitlab yet, but I will review your module and fix the issue asap!

I’m sorry you’re having so much trouble :see_no_evil:
I’m in the process of packaging the program for pypi so it should become way easier to get up and running. Thank you for sticking to it! :blush:

Oh, don’t worry about it. I’m sure the instructions are clear for most Linux users, unfortunately I am still in the early stages of learning. I am up and running now!
I have a question about capturing the images if that’s OK? During the shoot, do you make adjustments to exposure as the light changes to not loose shadows or highlights?

1 Like

I’ve experimented with different methods.

The simplest method is to use the aperture mode and automatic ISO. That way you’ll set your aperture to a fixed value (E.g. F8) and the camera adjusts the exposure and if the exposure gets too long (on my camera that’s configurable) adjust the ISO. For that method I usually use an EV -1.0 to prevent highlight blowout. Shadows can usually be recovered pretty well.
That’s the (imo) easiest method if your camera supports A-mode and auto-ISO with a maximum exposure time.

A little bit more convoluted is the second approach. Use shutter mode and a variable ND filter with auto ISO. The pitfall here is that variable NDs show a strong “cross” when you turn them to far. Also, most camera’s will just use maximum aperture (e.g. F22 or so) in shutter mode which you also want to avoid because of difraction. I’ve had limited success with this method.

The third approach would be to go fully manual, meaning that you adjust exposure, ISO and aperture manually when required. The backdraw is that you have to touch your camera, every time risking to shake it. You will see even minimal movements later in the footage. My cameras have very tight knobs to turn, so I avoid that method. Also, when it’s cold outside it’s even harder with trembling fingers. And if you’re using a slider or so then you shouldn’t touch your camera at all.

Method number four would be to use a software qdslrdashboard. I haven’t tried it (extensively) yet, but from what I read it looks promising. Backdraw would be higher power consumption which is prohibitive when you are on a multi-day trip without grid access (e.g. backcountry or mountain hike)

Finally you could use a dedicated device like the Timelapse View+ sold by an NZ company. I don’t know much about it, because it sells for around $400.

HTH. Cheers! :slight_smile:

Also entangle or darktable if you’re on Linux.

I’ll have to see how much I can control from the Olympus app but the dials on my camera move easily. It’s also very light and stable on any tripod.

If you’re not doing any kind of movement of the camera, you could probably align the images in hugin and auto crop them before making the video.

Good news everyone!

DtLapse is now on PyPI:

Installation is now as easy as

$ pip install dtlapse

@David_LaCivita It should now install effortlessly :blush:
@darix I’ve also tagged v1.0.0 in gitlab :slight_smile:

4 Likes

thanks for pinging me :slight_smile:

I am definitely flattered about Jochen’s work and will try it out after the current heatwave with my Neowise TL-shots. Exposure (hopefully the automatic mode is working) and WB is already huge improvement, especially for holy grail shots, where night-time-compensation (NTC) is used.

I also appreciate the maturity of LRTimlapse and hence I hope one day dt could reach compatibility level, which we got a huge step closer with the new introspection from @dterrahe, if I understood this correctly. Hence I am still on for my article :smile:

I just did pip install dtlapse and cannot wait, weather getting more normal again :sweat_smile:

1 Like