Kite Aerial Photography Kit

Sometimes the imagery collected during a run is beautiful on its own...

Sometimes the imagery collected during a KAP run is beautiful on its own…

 Is this a serious research tool?

Yes!  How good is the imagery?  Good. You can generate high resolution imagery that, with a scripted image processing workflow, will get you nice, georeferenced and orthorectified, imagery that won’t break your fieldwork budget, or consume the rest of your natural life in processing time.  Some researchers have even published papers using a KAP imagery platform that can do vegetation quantifiaction by removing the infrared filtering from common digital cameras. You can also use the natural movement of a KAP platform for photogrammetry & 3D terrain reconstruction.  You can then supplement your existing raster imagery layers in common industry tools like ENVI, ERDAS or ArcGIS.

ASCII Kolor stitching | 4 pictures | Size: 1882 x 1997 | FOV: 40.05 x 37.08 ~ -20.23 | RMS: 6.40 | Lens: Standard | Projection: Planar | Color: LDR |

Here is a planar image of coastal erosion, orthorectified using a 3d image (3DTM) I created from the natural motion of a KAP rig between timed exposures

Will it be replaced by UAVs? Could be. For now you can get altitudes and payloads that are hard to attain with other platforms, especially in high wind areas.  It excels in situations where you don’t have the research resources to purchase satellite imagery or commission aerial photography.  It is also cheaper, has fewer moving parts, and doesn’t require special batteries or charging (beyond camera and rig batteries.

Check out the scholarship on Google Scholar

Here is an example of the end product of orthorectification and geo referencing a series of imagery. The imagery then behaves like a normal raster layer in ArcGIS.

Here is an example of the same area with imagery imported into a GIS after being quickly orthorectified and georeferenced (note distortions at edges of mosaic from the process).

Note

These notes reflect a basic research mapping setup that has worked for imaging runs in places  where the winds are reasonably high much of the year, but spare parts are scarce.

4817979041_f456af9643_o

Long-flooded areas, now abandoned, and given over to reeds

What Kite? 

Depends on wind conditions in desired area.  best all-round kite is a foil, however these need a minimum windspeed and require some finesse in launching in light wind.

A foil (a variant on the flowform) for moderate winds.

A  kite for light winds is the FLED.  This kite works well with light pressure but in heavy breeze will have very substantial pull and will be difficult to control.

Here is an illustration of what a single KAP image can tell you about how the residents of this neighborhood have created their own drainage system.

Here is an illustration of what a single KAP image can tell you about how the residents of this neighborhood have created their own drainage system.

Pin A Tail On It!

A must. Long tails with high drag substantially improve kite tracking.

You should consider investing in a range of tails and experiment in the field and with the rig on the line.  Consider investing in more than one fuzzy tail and experiment with attachment points on your kite.  A FLED, for example, will give you a single point while a flowform foil will allow you to create a U-loop which can work well in some situations.  Some FLEDS ship with a small drogue tail with a harness.  You may find that this produces insufficient drag and leads to a jumpy kite in irregular or high winds.  It can be augmented with a fuzzy tail.

Camera

I use various PowerShot cameras, modified with CHDK to run custom shooting scripts and sequences.  I pick light, used cannon PowerShots and then modify if necessary. A good 100 dollar PowerShot gets good images and is nothing to cry over if lost.

CHDK: The Good Hack

The Cannon Hacker Development Kit (CHDK) is a fantastic way to pre-program your camera to perform a wide range of operations.  It works by replacing the firmware used by the camera (hence Hack!) with one that you store on your SD Card and is pretty user friendly.

Here is a CHDK getting started tutorial

Once you get started you may want to customize the script for your purposes, or use a pre-written one from the CHDK Wiki.  CHDK is easy to read and script in.

Below is an example CHDK script for timed interval with auto exposure from one of the forums (Credits: outslider, cyril42e & Pawel Tokarz)

 --[[
 @title Intervalometer with auto Tv
 
 @param n NumofShots
 @default n 1000
 
 @param d Delay
 @default d 60
 
 @param s Delay step (ms)
 @default s 500
 
 @param l Bv96 correction @ Bv = -500
 @default i 0
 
 @param h Bv96 correction @ Bv = +500
 @default j 0
 
 @param x Draw chart on screen? 0=No
 @default x 1
 
 @param p How many points?
 @default p 100
 
 --]]
 
 --[[
 This script is based on work of cyril42e ([email protected])
 http://crteknologies.fr/wiki/doku.php/photo:chdk-scripts#night_shot
 (I used his way to calculate shutter time)
 Changed to intervalometer and converted to Lua by Pawel Tokarz aka Outslider
 Nice chart of brightness vs photo number added.
 --]]
 
 --initialize Bv chart
 if (x ~= 0) then
     NUMOF_POINTS=p
     CHART_BV_STEP=1
     CHART_BV={}
     CHART_BV_LINE={}
     CHART_X0=10
     CHART_Y0=20
     CHART_BV_MIN=nil
     CHART_BV_MAX=nil
     require "drawings"
     draw.add("rectf",CHART_X0,CHART_Y0,CHART_X0+NUMOF_POINTS,CHART_Y0+50,"white","trans")
     CHART_BV_MAX_LABEL=draw.add("string",CHART_X0,CHART_Y0-9,"minBV","white","black")
     CHART_BV_MIN_LABEL=draw.add("string",CHART_X0,CHART_Y0+51,"maxBV","white","black")
     i=0
     for i=1, NUMOF_POINTS do
         CHART_BV[i]=nil
         CHART_BV_LINE[i]=draw.add("line",CHART_X0,CHART_Y0,CHART_X0,CHART_Y0,"blue")
         end
     end
 
 set_console_layout(0,0,25,5)
 set_console_autoredraw(0)
 
 A=h-l
 B=(l+h)/2
 
 TV_OSD_TIME     = 0
 TV_OSD_96       = 0
 BV_OSD          = nil
 BV_COR          = 0
 DELAY_OSD       = 0
 
 function chart_update()
     if (x~=0) then
         if (CHART_BV_MIN==nil) then CHART_BV_MIN=BV_OSD end
         if (CHART_BV_MAX==nil) then CHART_BV_MAX=BV_OSD end
 
         if (BV_OSD<CHART_BV_MIN) then CHART_BV_MIN=BV_OSD end
         if (BV_OSD>CHART_BV_MAX) then CHART_BV_MAX=BV_OSD end
 
         draw.replace(CHART_BV_MAX_LABEL,"string",CHART_X0+2,CHART_Y0-11,"Bv max: "..CHART_BV_MAX,"white","black")
         draw.replace(CHART_BV_MIN_LABEL,"string",CHART_X0+2,CHART_Y0+49,"Bv min: "..CHART_BV_MIN,"white","black")
 
         CHART_BV[NUMOF_POINTS]=BV_OSD
         for i=1, NUMOF_POINTS-1 do
             CHART_BV[i]=CHART_BV[i+1]
 
             if (CHART_BV[i] ~= nil ) then
                 y=CHART_Y0+50-((CHART_BV[i]-CHART_BV_MIN)*50/(CHART_BV_MAX-CHART_BV_MIN))
                 draw.replace(CHART_BV_LINE[i],"line",CHART_X0+i,y,CHART_X0+i,CHART_Y0+50,"white")
                 end
             end
         draw.overdraw()
     end
 end
 
 function OSD_update()
     if (x ~= 0) then
         draw.overdraw()
         end
     print("Brightness : "..BV_OSD)
     print("Correction : "..BV_COR)
     print("Tv         : "..TV_OSD_TIME)
     print("Tv (96)    : "..TV_OSD_96)
     print("Delay      : "..DELAY_OSD)
     end
 
 
 shoots_done=0
 
 repeat
 
     loop_step_start_time=get_tick_count()
 
     --Camera will get exposure parameters now
 
     --This loop is complicated, since camera sometimes miss get_shooting.
     --On my SX130 it happens once per a few thousands shots,
     --but this is enough to break nice time-lapse video.
 
     self_test=false
     repeat
         press("shoot_half")             --we press shoot_half to get all exposure params
         step=0
         repeat
             sleep(10)
             if (get_shooting()) then    --if we are lucky, camera can shoot now,
                 step=300                --so we set step>200 to leave safety loop
                 self_test=true          --and set self_test to true to leave outside loop
                 end
             step=step+1
             until step>200
         if(self_test==false) then       --we had no luck this time, camera missed something,
             release("shoot_half")       --so we release shoot_half and go back.
             end
         until self_test==true
 
     --we read Bv (luminance), Sv (ISO), Av (aperture), Ev shift and current Tv (exposure time)
     Bv=get_bv96()
     Sv=get_sv96()
     Av=get_av96()
     Ev=get_prop(207)
     Tv=get_tv96()                       --useless, but in a case to modify this script in future
 
     --we calculate and set new Tv (from APEX definitions)
     Tv_new=Bv+Sv-Av-Ev
 
     BV_COR=Bv*A/1000+B
 
     Tv_new=Tv_new-BV_COR
 
     if(Tv_new<0) then TV_OSD_TIME=2^(-Tv_new/96) end
     if(Tv_new>0) then TV_OSD_TIME="1/"..2^(Tv_new/96) end
     TV_OSD_96=Tv_new
     BV_OSD=Bv
 
     chart_update()
 
     set_tv96_direct(Tv_new)
     sleep(100)
     release("shoot_half")
 
     OSD_update()
     sleep(100)
 
     --And propably the most important command in this script
     shoot()
 
     OSD_update()
 
     --wait appropriate time
     repeat
         time_to_wait=1000*d-get_tick_count()+loop_step_start_time
 --         print("left: "..time_to_wait.." ms")
         DELAY_OSD=time_to_wait/1000
         OSD_update()
         sleep(s)
         until time_to_wait<s
 
     --repeat for next shoot
     shoots_done=shoots_done+1
     until shoots_done==n

Camera mount

Using a PowerShot you can mount it on a variant of this mount designed for a Picavet harness

To limit chafing on the Picavet suspension, I suggest you use something like these pulleys 

Kite Line & Clips

For heavy winds and a generously weighted rig, I suggest using 200 lb test line like this.

 Good clips that don’t slip are a must-have if you are attaching your camera to the line on a rig that is suspended with more line (e.g. a picavet).

Additional Stuff Checklist

  • Leather gloves.(2)
  • Carabiners (minimum of 2).  They can be used as a ground attachment, or to hold and walk a taut line down under very high winds.
  • Sturdy belt. Hold up your pants and, in a pinch, serve as a ground or tree anchor.
  • Kit sack for non breakables
  • Hard box(es) with padding for camera and picavet
  • Kite repair tape (nylon / tent repair / ripstop)
  • Small kit with screws, drivers, extra material for rig, shims, duck tape or gaffing tape, spare line.
4818596356_f4287b0734_o

Flooded area in Dakar, Senegal. Note blurring and distortion from lens. The image needs to be orthorectified.  Click image for hires.