Log in

View Full Version : Remove shakiness from underwater dive video


Sultanow
15th September 2019, 10:41
Dear experts,
with my new Paralenz I did some dive videos in Marseille. I like these very much, except for one weak point: short strong shaking (probably caused by the current). I would like to optimize the following video cut – a nice scene, which comprises 70 seconds (feel free to use and experiment with it):
http://sultanow.info/public/dive/MOV_0008_cut.mp4

Using VirtualDub (and the Deshaker Plug-In) I tried different configurations, read related posts including
https://forum.doom9.org/showthread.php?t=176498
https://www.sheldonbrown.com/deshaker.html

After applying different configurations (which all does not improved the video), I tried the following configuration:

http://sultanow.info/public/dive/config1r.png

After "Run Video Analysis Pass" using the "Pass 1" configuration shown in the screenshot above, I added a "Pass 2" configuration :

http://sultanow.info/public/dive/config2r.png

The result of saving the file did not provide any improvements.

Please note : I do not care about the black borders that result from panning/rotating – these are not an issue for me and I will simply remove these later by cropping the result video.

It would be great, if anyone has an idea, which configuration might the most promising one.

Best
Eldar

shekh
15th September 2019, 17:53
Tried something, the ideas:
1. mask out the static text with a picture
2. boost contrast with levels, it helped to detect vectors in some areas
3. lower some thresholds because detection is quite poor, you need as much acceptable vectors as possible
4. apply for rolling shutter, I think this is what ruins motion for example near frame 400, but I'm not sure what value to use and whether it is recoverable at all.
In any case, the video also is blurry in quick shaking areas. Not much possible IMO.

VirtualDub.video.filters.Add("fflayer");
VirtualDub.video.filters.instance[0].Config(0,0,1,"E:\\shift_dev\\crash\\MOV_0008_cut.png",0,0,1);
VirtualDub.video.filters.Add("levels");
VirtualDub.video.filters.instance[1].Config(0x2EC4,0x893A,0x00EA0CFB,0x0000,0xFFFF, 1);
VirtualDub.video.filters.Add("Deshaker v3.1");
VirtualDub.video.filters.instance[2].Config("19|2|40|4|1|0|1|0|640|480|2|1|1000|1000|1000|1000|400|1|0|2|0|40|-1000|4|e:\Deshaker.log|0|0|0|0|0|0|0|0|0|0|0|0|0|1|15|15|5|15|0|0|30|30|0|0|1|0|1|1|0|10|1000|0|40|1|0|20|5000|100|20|0|1|ff00ff");

https://i.postimg.cc/hGPX760L/MOV-0008-cut.png

https://i.postimg.cc/pL3S9Mv7/MOV-0008-cut-deshaker.png

https://i.postimg.cc/rsdWR3Mn/MOV-0008-cut-403.png