Home

Search John Harvey Photo for...
Contains Text:
Include Photo Descriptions
Include Story Pages
Include Comments
Include Scientific Names
Camera equals
Lens equals
Date is greater than or equal (Year/Month/Day)
Date is less than or equal (Year/Month/Day)
Film equals
Photographer equals
Photo Subject equals
Tag equals
PhotoOfTheDay is greater than or equal (Year/Month/Day)
PhotoOfTheDay is less than or equal (Year/Month/Day)
Gender equals
Plumage equals
Age equals
Region equals
Panoramas | Images Most Recently Modified | Images with comments | Photos over time of | Species | Parks | Videos
Search Returned...
Words 3 character or shorter are ignored. Very common words (they, them, ...) are also ignored.

Sea Lions
Saturday, September 9th, 2023 at 23:23:12
Sea Lions

John Harvey Photo > John's Overnight Page > Haida Gwaii > Windy Bay > Sea Lions

Pacific White Sided Dolphins
Saturday, September 9th, 2023 at 23:23:11
Pacific White Sided Dolphins

John Harvey Photo > John's Overnight Page > Haida Gwaii > Windy Bay > Pacific White Sided Dolphins

Oyster Catcher
Friday, September 8th, 2023 at 22:26:55
It's funny how the birds are more patient with boats than people on foot.
Species: Haematopus bachmani (Black Oystercatcher)

John Harvey Photo > John's Overnight Page > Haida Gwaii > Tanu > Oyster Catcher

Plumos And Urchins
Thursday, September 7th, 2023 at 22:51:52
Plumos And Urchins

John Harvey Photo > John's Overnight Page > Haida Gwaii > Tanu > Plumos And Urchins

Barnacles
Thursday, September 7th, 2023 at 22:51:51
Barnacles

John Harvey Photo > John's Overnight Page > Haida Gwaii > Tanu > Barnacles

Claira Riding Down Waterslide At Granville Island
Monday, June 26th, 2023 at 19:39:08
Claira Riding Down Waterslide At Granville Island
People: Claira

John Harvey Photo > Blogs for 2023 to 2005 > June 2016 > Claira Riding Down Waterslide At Granville Island

Stonecutters Bridge
Saturday, June 3rd, 2023 at 22:37:39
This timelapse had 636 fames, starting at 6:07 pm and ending at 7:31pm. The interval was 8 seconds. Photography started at f8, 1/40th of a second at ISO 100 and ended at f8, 4 seconds, ISO 320.
John Harvey Photo > Trips out of the Country > Hong Kong 14 > Stonecutters Bridge

Prince Edward Overpass
Saturday, June 3rd, 2023 at 22:37:35
This was shot at f11 / 1 second per exposure. There are 545 exposures with a 3 second interval. The lens was set to 70mm.
John Harvey Photo > Trips out of the Country > Hong Kong 14 > Prince Edward Overpass

Nathan Road
Saturday, June 3rd, 2023 at 22:37:33
This was started at f14, 1 second exposure and stayed the same for the whole video. The interval was 3 seconds and there are 451 exposures in this video.
John Harvey Photo > Trips out of the Country > Hong Kong 14 > Nathan Road

Central
Saturday, June 3rd, 2023 at 22:37:24
The time lapse started at 5:50pm at f8, 1/640th of a second ISO 100 and ended at 8:13pm at f8, 4 seconds per exposure at ISO 110. The interval was six seconds and there are 1436 images. This was shot at 14mm (as wide as it goes).
John Harvey Photo > Trips out of the Country > Hong Kong 14 > Central

Fa Yuen Street
Saturday, June 3rd, 2023 at 09:59:25
It's raining just a little bit. These are minibuses - they open up lots of smaller destinations in Hong Kong. The goal was the Neon, but the traffic somewhat stole the show.
John Harvey Photo > Trips out of the Country > Hong Kong 13 > Fa Yuen Street

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 2023 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 2023 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.
People: Claira, John, Lloyd

John Harvey Photo > Blogs for 2023 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 2023 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 2023 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 2023 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 2023 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 2023 to 2005 > October 2011 > Nara Down Slide

More Photo Results...