TITLE: Comparing forest canopy measurements with a phone lens and
an expensive DSLR fisheye
DATE: 2018-09-30
AUTHOR: John L. Godlee
====================================================================


On my most recent teaching stint as a demonstrator for a 4th year
undergraduate field course, myself and one of the other
demonstrators experimented with estimating forest canopy structural
metrics like gap fraction and Leaf Area Index (LAI) using two
different photographic methods. The first was a conventional full
hemipsherical fisheye lens on a DSLR camera, the second was a
considerably cheaper fisheye lens converter for a smartphone.

We took 10 photos with the same orientation at the same height
under a stand of Ash-Birch mixed plantation. I cropped the images
so each set of paired images captured approximately the same area
of canopy.

 ![Thresholded
photo](https://johngodlee.xyz/img_full/lai_phone/hemi_1_camera_thres
h.jpg)

 ![Original
photo](https://johngodlee.xyz/img_full/lai_phone/hemi_1_camera.jpg)

One issue was that the phone fisheye converter tended to move
around on the body of the phone, leading to the edges of the
fisheye frame being distorted or excluded from the phone's frame.
This meant that to maintain consistency between the angle of view
cpatured by each photo, all photos had to be cropped to
approximately (DEGREES) field of view. To see whether this excess
cropping affected estimations of LAI or gap fraction, I compared
photos from the DSLR camera, cropped to different proportional
circular crops:

   phone_px_rad <- 2460 / 2
   camera_px_rad <- 3925 / 2

   crops <- c(1, 0.9, 0.75, 0.5, 0.25)

   phone_px_rad <- phone_px_rad * crops
   camera_px_rad <- camera_px_rad * crops
   rads <- c(phone_px_rad, camera_px_rad)
   phone_camera <- c(rep("phone", times = 5), rep("camera", times
= 5))
   crops_group <- rep(crops, times = 2)

   crops_df <- data.frame(crops_group, phone_camera, rads)

   ggplot(crops_df, aes(x = crops_group, y = rads, colour =
phone_camera)) +
       geom_point() +
       geom_line() +
       scale_x_reverse() +
       theme_classic() +
       labs(x = "Proportional crop by diameter of original image",
           y = "Pixel diameter of resultant image")

 ![Plot of field of view by diameter
crop](https://johngodlee.xyz/img_full/lai_phone/fov_ggplot.png)

 ![Plot of percentage crop by mean gap
fraction](https://johngodlee.xyz/img_full/lai_phone/phone_compare.pn
g)

 ![Spaghetti plot of comparison between photos by camera or
phone](https://johngodlee.xyz/img_full/lai_phone/camera_compare.png)