Drone Photogrammetry

Made by ialvarad ·

For this project I captured the main façade of St. Peter and Paul's Church in East Liberty using drone pictures and photogrammetry. The goal: To capture a 3D model of an artifact that satisfies two requirements: 1.some of its qualities are hidden from daily commuters or anyone who mainly moves at the ground level 2.because of its scale, the artifact is tedious or impossible to capture with some sort of handheld camera (aerial photography is widely used, but who has access to a plane?!)

Created: December 17th, 2015

0

Concept

For this project I captured the main façade of St. Peter and Paul's Church in East Liberty using drone pictures and photogrammetry. This grand and beautiful church was once at the center of a large German Catholic community based in the East End. It was built in 1890, rebuilt in 1909 after a fire, and finally abandoned in 1992 when the parish merged with five other Catholic parishes. The church's fate is precarious. Will it be demolished? Rebuilt? Or left to rot? Apparently in the winter, tiles from the bell towers fall on the nearby parking lot.

I chose such a place for practical but also symbolic reasons. My first desire was to try to create 3D maps of larger blocks of land within Pittsburgh - but this proved difficult as I was booted out of parks and approached by the police twice. The only place I worked unbothered was around the church - an area that conveys decay unfortunately. If the church were to be demolished, a 3D model of its façade is a way to capture another representation of it for the future.

I also shot an abandoned school next to the church in a similar state of disarray. 

0

Outcome / Challenges

I created 2 models for the data I captures:
- a model of the church façade, including point cloud and mesh data
- a model of the abandoned school I shot including point cloud and mesh data
Finally, I output the models in OpenFrameworks using relatively basic code for loading 3D models. The gist of the OpenFrameworks code I used is below.


Challenges: 

1. Flying a drone

I started flying with the Parrot drone, a cheap, starter drone which is quite hard to fly because one has to fly it through a mobile app. The touchscreen controls give you very little feedback about the drone movement itself. I then upgraded to the DJI Phantom 1 - a model without a camera - to become familiar with the physical controls typical of most drones.

Finally, I picked up the DJI Phantom 2 Vision - a model with a high quality camera - and started shooting. The Phantom 2 can fly higher than 400 feet! Though 400 is the legal limit in most countries. The reason its so easy to fly (with a bit of practice beforehand) is that the drone locks on to at least 6 satellites and flies in a semi-automated GPS mode. Even if you let go of the drone's controls, it will stay within a cubic volume of about 2x2x2 meters - even with high winds. 

2. It should come as no surprise that drones are increasingly being regulated. I think anyone that has flown one can agree that this is good news. They *can* be dangerous that's why a good rule is to never fly over other people. I found it quite challenging to find a safe, quiet place to fly where I wasn't stopped by police or kicked out (the parks!). 

3. Because of the scale of the church and school that I chose to capture, I had to fly multiple missions to capture sufficient footage. During post processing, my photo chunks weren't aligning properly even though I was supplying GPS, yaw, roll, and pitch data about the drone's location and position for each image. After a few experiments I realized that in fact they aligned better *without* that data (i.e. performing a pure alignment based on the features in the images) for what I believe to be a simple reason: since there is a margin of error in the GPS and other outputs, I should NOT have callibrated in between flights of the same building. The calibration changed what the values meant in absolute space.

0
#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    ofSetFrameRate(60);
    ofSetVerticalSync(true);
    ofEnableDepthTest();

    tempMesh = ofVboMesh();
    
    tempMesh.setMode(OF_PRIMITIVE_POINTS);
    tempMesh.load("church-mesh.ply") ; // change for different data set
    
    imgCount = 0 ;
    
    cam.setFarClip(100000) ;
    cam.setNearClip(0.1) ;
}

//--------------------------------------------------------------
void ofApp::update(){
}

//--------------------------------------------------------------
void ofApp::draw(){
    ofBackgroundGradient(ofColor::gray, ofColor::black);
    
    cam.begin();
        ofPushMatrix();
        ofScale(200, 200, 200); // change depending on data set
        tempMesh.draw() ;
        ofPopMatrix();
    cam.end() ;
    
    if(ofGetKeyPressed()){
        ofDrawBitmapStringHighlight(ofToString(ofGetFrameRate()), 50, 50);
    }
}

//--------------------------------------------------------------
void ofApp::keyPressed(int key){
    if (key == 99) { // if 'c' pressed take a screenshot
        ofSaveScreen("screencaptures/frame_" + ofToString(imgCount) + ".png");
        imgCount++;
    }
}
Click to Expand
0

Process

There are more than a few photogrametry software solutions in the market that work well (Agisoft, 123D Catch, Memento, Photosynth, pix4D), but each one is tuned for a particular kind of use case and type of image. Agisoft doesn't process images shot with wide angle lens very well, 123D catch only works for small objects, Memento is still in beta and keeps crashing on me. For this project I used a software called Pix4D geared towards processing drone images that can help you integrate the GPS data captured by the drone quite easily. This improves the image processing tremendously, as the program has a pretty good idea of where the camera was positioned in space to capture each image.

1. Once I'd setup my drone I chose some functions within the Pix4D app that allowed me to take a picture every 1 meter horizontally and 1 meter vertically that the drone covered.

2. Next, I flew my drone from the ground up using an L shaped pattern. I covered each floor of the building before moving on to the next floor.

3. I exported my results to the Pix4D software on my computer and aligned the photos by chunks that corresponded to the 2-3 flights I made on each site.

4. I trimmed the point cloud and mesh in MeshLab.

5. Rendered the point cloud using openFrameworks. 

0

Reflection

Next steps are to possibly go forth and actually urban map a few city blocks using photogrammetry as a technique now that I know more about drones and the process in general.

If I am successful at that, it would be great to make the knowledge of how to do so more accessible and public. I might consider creating a DIY citizen mapping guide for people wanting to contribute geographic data to open systems such as OpenStreetMap. 
x
Share this Project

This project is only accessible by signed in users. Be considerate and think twice before sharing.



About

For this project I captured the main façade of St. Peter and Paul's Church in East Liberty using drone pictures and photogrammetry.

The goal: To capture a 3D model of an artifact that satisfies two requirements:
1.some of its qualities are hidden from daily commuters or anyone who mainly moves at the ground level
2.because of its scale, the artifact is tedious or impossible to capture with some sort of handheld camera (aerial photography is widely used, but who has access to a plane?!)