Search Returned...
Sunset Ferry Trip Stabilized
Sunday, April 23rd, 2023 at 10:56:02 I've been trying to do this for a while - take a timelapse from the front of a ferry near sunset. While I shoot on a tripod, the resulting sequence still needs a lot of stabilization because we are on a boat! This sequence started at 5:00pm and ended 2076 frames later at 6:43pm. Exposure went from f6.3 at 1/125th of a second to f6.3 at 1/2 of a second. The interval is 3 seconds because I learned from an earlier trip you need more intermediate frames if you want any chance to align between frames. The script to stabilize is in python and uses OpenCV and the SIFT algorithm to do the image alignment. I use a variety of alignment masks through the sequence so I can exclude things like the clouds and ocean but also other ships moving side to side. This script writes a transforms.trf that ffmpeg can use for stabilization. Back in Decemeber 2021, I took a ferry trip but hadn't yet figured out how to stabilize it. import cv2 import numpy as np import matplotlib.pyplot as plt import pprint import math f = open("transforms.trf", "w") f.write("VID.STAB 1 ") f.write("# accuracy = 15 ") f.write("# shakiness = 3 ") f.write("# stepsize = 4 ") f.write("# mincontrast = 0.200000 ") f.write("Frame 1 (List 0 []) ") img1 = cv2.imread('DSC_4877_FerryHg.jpg') mask = cv2.imread('mask2.png', cv2.IMREAD_GRAYSCALE) Mask_5182 = cv2.imread('Mask_5182.png', cv2.IMREAD_GRAYSCALE) mask_5725 = cv2.imread('mask_5725.png', cv2.IMREAD_GRAYSCALE) mask_5885 = cv2.imread('mask_5885.png', cv2.IMREAD_GRAYSCALE) mask_6670 = cv2.imread('mask_6670.png', cv2.IMREAD_GRAYSCALE) currentMask = mask img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) #sift sift = cv2.SIFT_create() keypoints_1, descriptors_1 = sift.detectAndCompute(img1,mask) for n in range(2,2064): print("Frame " + str(n)) img2 = cv2.imread("DSC_{:04d}_FerryHg.jpg".format(4876 + n)) img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) if ( (4876 + n) == 5182 ): currentMask = Mask_5182 if ( (4876 + n) == 5725 ): currentMask = mask_5725 if ( (4876 + n) == 5885 ): currentMask = mask_5885 if ( (4876 + n) == 6670 ): currentMask = mask_6670 keypoints_2, descriptors_2 = sift.detectAndCompute(img2,currentMask) #feature matching bf = cv2.BFMatcher(cv2.NORM_L1, crossCheck=True) matches = bf.match(descriptors_1,descriptors_2) matches = sorted(matches, key = lambda x:x.distance) countPositions = 0 listOfPoints = "" for idx, val in enumerate(matches): distance = math.sqrt( (keypoints_2[val.trainIdx].pt[0]-keypoints_1[val.queryIdx].pt[0]) * (keypoints_2[val.trainIdx].pt[0]-keypoints_1[val.queryIdx].pt[0]) + ( keypoints_2[val.trainIdx].pt[1]-keypoints_1[val.queryIdx].pt[1]) * (keypoints_2[val.trainIdx].pt[1]-keypoints_1[val.queryIdx].pt[1] ) ) if ( val.distance > 299 and idx > 10 ): continue print(" " + str(idx) + " " + str(distance) + " " + str(val.distance) +" (" + str(keypoints_1[val.queryIdx].pt[0]) + "," + str(keypoints_1[val.queryIdx].pt[1]) + ") -> (" + str(keypoints_2[val.trainIdx].pt[0]) + "," + str(keypoints_2[val.trainIdx].pt[1]) + ")" ) if( countPositions > 0 ): listOfPoints = listOfPoints + "," # https://github.com/georgmartius/vid.stab/blob/master/src/serialize.c # if(fscanf(f,"(LM %hi %hi %hi %hi %hi %lf %lf", &lm.v.x,&lm.v.y,&lm.f.x,&lm.f.y,&lm.f.size, # &lm.contrast, &lm.match) != 7) { # LM = Local Motion # Sample: (LM 0 0 922 424 224 0.507735 0.263512) listOfPoints = listOfPoints + "(LM {:0.0f} {:0.0f} {:0.0f} {:0.0f} {:0.0f} {:5.3f} {:5.3f})".format( -(keypoints_2[val.trainIdx].pt[0]-keypoints_1[val.queryIdx].pt[0]), -(keypoints_2[val.trainIdx].pt[1]-keypoints_1[val.queryIdx].pt[1]), keypoints_1[val.queryIdx].pt[0], keypoints_1[val.queryIdx].pt[1], 48, (300.0 - val.distance) / 300.0 , 0.6 - (300.0 - val.distance) / 1000.0) countPositions = countPositions + 1 f.write("Frame {:d} (List {:d} [{}])".format(n,countPositions,listOfPoints)) img1 = img2 keypoints_1 = keypoints_2 descriptors_1 = descriptors_2 f.close() John Harvey Photo > Blogs for 2024 to 2005 > February 2023 > Sunset Ferry Trip Stabilized
|
|
Ferry To Victoria
Sunday, April 23rd, 2023 at 10:54:15 I had a tripod, my camera bag and a whole ferry ride to wait so why not try a time lapse off the front of the ferry? A lot of things went wrong or were hard. The sun was in the image for most of the sailing which makes the exposure a pain. The ferry is vibrating I never got a sharp image out of the sequence. Shutter speed was between 1/125 and 1/640th so I think it was the VR elements in the lens that were shaking. The ferry is not a stable platform but the bright moving water was very attractive to the ffmpeg image stabilization. I was un-unable to stabilize past the opening sequence. This is 962 images, all shot at f8 with an interval of 6 seconds. I started taking photos at 2:00:37pm and finished at 3:36:43pm. Sunset was probably 4:15. To demonstrate I can learn, here is a similar ferry trip with Image stabilization working. John Harvey Photo > Blogs for 2024 to 2005 > December 2021 > Ferry To Victoria
|
|
Planting Apple Trees
Sunday, April 23rd, 2023 at 10:26:02 My dad has wanted apple trees for a long time. He wanted a McIntosh style apple but you won't get fruit if you just plant a single tree so we paired it with a Victory apple tree. We purchased the trees as "bare root stock" from a nursery near Duncan and needed to dig some holes in the back yard to plant the trees This is 695 frames, taken every 8 seconds from 2:38pm to 4:25pm. Exposure was f7.1 at 1/125 of a second. John Harvey Photo > Blogs for 2024 to 2005 > February 2023 > Planting Apple Trees
|
|
Coopers Hawk
Monday, April 10th, 2023 at 18:39:07 This was part of a longer video shot on a tripod. I think VR was on because there was a lot of sway in the images. I tried a few different techniques for image stabilization - the best I got for this was photoshop, full frame alignment. Species: Accipiter cooperii (Cooper's Hawk)
John Harvey Photo > Blogs for 2024 to 2005 > January 2022 > Coopers Hawk
|
|
Foggy Downtown Sunset
Monday, April 10th, 2023 at 18:39:05 This is 656 frames from 4:01pm until 5:50pm. Exposure at the start was f8 at 1/50th of a second, at end was f8, 4 seconds. The photos are take every 10 second. No stabilization as the camera was on a tripod on solid ground (just outside of the Granville Island Public Market). This is one of the easiest timelapses ever - the exposure is almost linear (the camera made the correct and consistent guesses) and no stabilization required. Fog downtown is pretty rare - it usually happens when we transition from wet weather to cold weather in winter. John Harvey Photo > Blogs for 2024 to 2005 > January 2022 > Foggy Downtown Sunset
|
|
Port From Canada Place
Sunday, April 9th, 2023 at 08:38:43 663 photos, starting at 6:10, ending at 8:38. 8 seconds between exposures. John Harvey Photo > Blogs for 2024 to 2005 > April 2022 > Port From Canada Place
|
|
Argyle Overpass
Wednesday, March 29th, 2023 at 23:04:17 Argyle Overpass John Harvey Photo > Trips out of the Country > Hong Kong 13 > Argyle Overpass
|
|
Nara And Marcus Parallel Play
Sunday, January 29th, 2023 at 21:53:09 Nara And Marcus Parallel Play John Harvey Photo > Blogs for 2024 to 2005 > October 2011 > Nara And Marcus Parallel Play
|
|
Nara Down Slide
Sunday, January 29th, 2023 at 21:53:08 Nara Down Slide John Harvey Photo > Blogs for 2024 to 2005 > October 2011 > Nara Down Slide
|
|
Nara Spinning In Leaves
Sunday, January 29th, 2023 at 21:53:08 Nara Spinning In Leaves John Harvey Photo > Blogs for 2024 to 2005 > October 2011 > Nara Spinning In Leaves
|
|
Claira Reading Book
Sunday, January 29th, 2023 at 21:52:57 Claira can probably "read" about a dozen books - she has memorized them. Nara did the same thing before she learned to read. Sorry the focus is off a little - the scene wasn't quite what I expected. People: Claira
John Harvey Photo > Blogs for 2024 to 2005 > September 2016 > Claira Reading Book
|
|
Nara On Monkey Bars
Sunday, January 29th, 2023 at 21:52:57 Nara has calluses on her palms from playground equipment. You would think she works with a pick axe all day. A week later on the same monkey bars she blistered one of the calluses. No monkey bars for her for a while. People: Nara
John Harvey Photo > Blogs for 2024 to 2005 > September 2016 > Nara On Monkey Bars
|
|
Claira With Fire Hose
Sunday, January 29th, 2023 at 21:52:57 Claira With Fire Hose People: Claira
John Harvey Photo > Blogs for 2024 to 2005 > September 2016 > Claira With Fire Hose
|
|
Nara And John On Waterslide
Sunday, January 29th, 2023 at 21:52:57 Nara And John On Waterslide John Harvey Photo > Blogs for 2024 to 2005 > September 2016 > Nara And John On Waterslide
|
|
How To Make Campfire
Sunday, January 29th, 2023 at 21:05:03 594 frames, shot f10 1/40th of a second at iso 800 for the whole thing. The photos are taken every 2 seconds so this timelapse runs from 5:47pm to 6:06pm. John Harvey Photo > John's Overnight Page > Prince Rupert Road Trip > Prince Rupert > How To Make Campfire
|
|
Siwash Rock Making Star Trails
Sunday, January 29th, 2023 at 21:04:36 This is a 100 image, 30 seconds an image time lapse. I was planning on stacking them and lightening them to get star trails but the clouds flying by made that much harder than I anticipated. This is a 15 frames per second video. John Harvey Photo > Blogs for 2024 to 2005 > December 2015 > Siwash Rock Making Star Trails
|
|
Claira Telling Us About Her Painting
Sunday, January 29th, 2023 at 21:04:36 Claira Telling Us About Her Painting Tags: art
People: Claira
John Harvey Photo > Blogs for 2024 to 2005 > December 2015 > Claira Telling Us About Her Painting
|
|
Nara Telling Us About Her Painting
Sunday, January 29th, 2023 at 21:04:36 Nara Telling Us About Her Painting Tags: art
People: Nara
John Harvey Photo > Blogs for 2024 to 2005 > December 2015 > Nara Telling Us About Her Painting
|
|
Porteau Cove Facing North
Sunday, January 29th, 2023 at 21:04:36 The flow is from Squamish. There is one asteroid streak in this movie. John Harvey Photo > Blogs for 2024 to 2005 > December 2015 > Porteau Cove Facing North
|
|
Porteau Cove Facing South
Sunday, January 29th, 2023 at 21:04:36 Porteau Cove Facing South John Harvey Photo > Blogs for 2024 to 2005 > December 2015 > Porteau Cove Facing South
|