Smathermather's Weblog

Remote Sensing, GIS, Ecology, and Oddball Techniques

OpenDroneMap — Art and Science

Posted by smathermather on September 16, 2014

I consider myself an artist and scientist. I’ll confess I have let the art go fallow some in recent years, but these are two sides of one coin. If you like either, and especially if you like both, you should check out Tobias Research.

I met Michele at FOSS4G, where from the moment she saw my presentation on OpenDroneMap to using it to create a point cloud was a few short hours. I sat with Michele and her partner in crime, Alex, for a little while walking them through the (until then) undocumented steps of creating a mesh and texturing it inside MeshLab (to be fair to MeshLab, there’s plenty of docs on this, but there were none yet within the OpenDroneMap repo.

So, here’s some quick shots of her Kite Aerial Photography images for studying plant / dune dynamics processed through OpenDroneMap. Stunning kite aerial photography (KAP) work. The groundwork for great and beautiful science:

 

 

Posted in 3D, Bundler, Camera Calibration, Conference, FOSS4G, FOSS4G 2014, Image Processing, OpenDroneMap, OpenDroneMap, Optics, Photogrammetry, PMVS | Tagged: , , , , , | Leave a Comment »

Announcing OpenDroneMap — Software for civilian (and humanitarian?) UAS post processing

Posted by smathermather on September 15, 2014

OpenDroneMap logo

This past Friday at FOSS4G in Portland, I announced the (early) release of OpenDroneMap, a software toolchain for civilian (and humanitarian?) UAS/UAV image processing. The software is currently a simple fork of https://github.com/qwesda/BundlerTools, and will process from unreferenced overlapping photos to an unreferenced point cloud. Directions are included in the repo to create a mesh and UV textured mesh as the subsequent steps, but the aim is to have this all automated in a single work flow.


Projects like Google Streetview, Mapillary, PhotoSynth, and most small UAS (drone) postprocessing software, such as that offered by senseFly, share a commonality– they all use computer vision techniques to create spatial data from un-referenced photography.

Screenshot of drone image thumbnails

OpenDroneMap is an open source project to unlock and make easy-to-use related related computer vision techniques, so that whether from street level photos or from civilian drone imagery, the average user will be able to generate point clouds, 3D surfaces models, DEMs, and orthophotography from processing unreferenced photos.

odm_flow

 


 

Screen shot of textured mesh as viewed in MeshLab


To those who may be wondering — wow cool, but what happens to the data at the end of the day? How do we share it back to a common community? The aim is for the toolchain to also be able to optionally push to a variety of online data repositories, pushing hi-resolution aerials to OpenAerialMap, point clouds to OpenTopography, and pushing digital elevation models to an emerging global repository (yet to be named…). That leaves only digital surface model meshes and UV textured meshes with no global repository home. (If anyone is working on global storage of geographically referenced meshes and textured meshes, please get in touch…).


 

So, try it out: http://opendronemap.org will point you to the repo. Clone it, fork it, try it out. Let me know what you think.

Test data can be found here: https://github.com/OpenDroneMap/odm_data (credit Fred Judson, Ohio Department of Transportation)

Presentations on it can be found here: https://github.com/OpenDroneMap/presentations and eventually here:


 

PostScript: Re: meshes and pointclouds on the web, Howard Butler and others are working on some pretty cool tools for handling just this problem technologically. Check out, for example http://plas.io/ and https://github.com/hobu/greyhound

Posted in 3D, Bundler, Camera Calibration, Drone, Image Processing, OpenDroneMap, Optics, Photogrammetry, PMVS, UAS | Tagged: , , , , , , | 1 Comment »

Null Archipelago — Null Islands for All Coordinate Reference Systems — revision

Posted by smathermather on September 10, 2014

Ok, I misunderstood… . The Null Island Archipelago is actually meant to be just datum based, i.e. not the 0,0 of every projection, but the 0,0 of every null lat/lon.

CREATE OR REPLACE FUNCTION where_in_the_null (crs integer) RETURNS
geometry AS $$

WITH null_island AS (
	SELECT ST_MakePoint(0,0) AS geom
	),
null_island_crs AS (
	SELECT ST_SetSRID(geom, crs) AS geom FROM null_island
)
SELECT ST_Transform(geom, 4326) FROM null_island_crs

---

DROP TABLE IF EXISTS null_archipelago;

CREATE TABLE null_archipelago AS
SELECT srid, where_in_the_null(auth_srid) FROM spatial_ref_sys
WHERE proj4text LIKE '%longlat%';

null_archipelago_real

 

 

@mizmay Someone suggested & @schuyler tweeted (who? please remind me!) a few weeks ago that each coordinate reference system (CRS) has it’s own Null Island, and therefore there must be a Null Archipelago. This got me thinking — what does that look like?

Enter PostGIS. We’ll create a function, that given an EPSG code will return the 0,0 location for that reference system in the real world. It turns out, this is quite easy.


CREATE OR REPLACE FUNCTION where_in_the_null (crs integer) RETURNS
geometry AS $$

WITH null_island AS (
	SELECT ST_MakePoint(0,0) AS geom
	),
null_island_crs AS (
	SELECT ST_SetSRID(geom, crs) AS geom FROM null_island
)
SELECT ST_Transform(geom, 4326) FROM null_island_crs
 
$$ LANGUAGE SQL VOLATILE;


So, now we need some EPSG codes. To that end, we have one in any PostGIS database.


CREATE TABLE null_archipelago AS
SELECT srid, where_in_the_null(auth_srid) FROM spatial_ref_sys
	WHERE auth_srid > 2000 AND auth_srid < 4904;


Map showing the null archipelago overlayed on the Stamen Watercolor Map

Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA.

Posted in Conferences, FOSS4G, FOSS4G 2014 | Tagged: , , | Leave a Comment »

Null Archipelago — Null Islands for All Coordinate Reference Systems

Posted by smathermather on September 10, 2014

@mizmay Someone suggested & @schuyler tweeted (who? please remind me!) a few weeks ago that each coordinate reference system (CRS) has it’s own Null Island, and therefore there must be a Null Archipelago. This got me thinking — what does that look like?

Enter PostGIS. We’ll create a function, that given an EPSG code will return the 0,0 location for that reference system in the real world. It turns out, this is quite easy.

CREATE OR REPLACE FUNCTION where_in_the_null (crs integer) RETURNS
geometry AS $$

WITH null_island AS (
	SELECT ST_MakePoint(0,0) AS geom
	),
null_island_crs AS (
	SELECT ST_SetSRID(geom, crs) AS geom FROM null_island
)
SELECT ST_Transform(geom, 4326) FROM null_island_crs
 
$$ LANGUAGE SQL VOLATILE;

So, now we need some EPSG codes. To that end, we have one in any PostGIS database.

CREATE TABLE null_archipelago AS
SELECT srid, where_in_the_null(auth_srid) FROM spatial_ref_sys
	WHERE auth_srid > 2000 AND auth_srid < 4904;

Map showing the null archipelago overlayed on the Stamen Watercolor Map

Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA.

Posted in Conferences, FOSS4G, FOSS4G 2014 | Tagged: , , | Leave a Comment »

FOSS as Folk

Posted by smathermather on September 10, 2014

Let us expand a bit on the theme of Free and Open Source Software as _Folk_ software development, i. e. of the people, for the people, and by the people. When I put together my presentation for FOSS4G Korea 2014, I had elements of this theme in it. I expected I would talk about the relationship between governance and open source software in the context of legitimacy — that one informs the legitimacy of the other, as both operate in that shared space we might call commons and derive their legitimacy from that commons.

As I spoke with Sanghee Shin and other OSGeo folks when I arrived, the concepts really crystalized: Free and Open Source Software is folk software, enabled to be built due to the connectivity available by the medium of the internet, by creators with common purpose and common love. And as _folk_ software, not only will development and support of Free and Open Source Geospatial sofware lend legitimacy to the South Korea’s central government’s initiative in software, but that as commons-based peer production, open source software becomes an open expression of Korean culture, Korean ingenuity, and Korea’s contribution to the broader GeoSpatial world.

From the outset, what I was attempting with the speech was to combine Paul Ramsey’s diagram for commons-based peer production (Love of common interest + inexpensive tools for production + internet = commons-based peer production, i.e. Wikipedia, OpenStreetMap, FOSS software, etc.) with Kate Chapman’s call to action: Geo for All, a call for the widening and deepening of the pool of contributors and users of GeoSpatial data and software. The concept of FOSS as Folk happens to do just this thing, and hints at some of the challenges before us in making FOSS accessible.

But, the question of _folk_ explicitly gives us additional conditions and context for creating an inclusive community. This touches back to Kate Chapman’s call for geo4all — understanding FOSS as Folk explicitly calls us to balance simplicity and elaborateness (석가탑 다보탑), and thus helps us be inclusive, but also gives us traditions and context for implementation.

Let us tie this all together in a sentence or two: FOSS is Folk Software, Folk has legitimacy through inclusive process similar to democratic society, and Folk software can draw on other Folk traditions to achieve the balance of simplicity and elaborativeness that results in software and tools that are inclusive and effective. Finally, looking to Governance and Open Source, the work of South Korea in supporting FOSS for geospatial and initiatives like Code for America, FOSS and democratic processes can draw legitimacy from each other by resourcing the same Commons space.

image

Posted in Conferences, FOSS4G, FOSS4G 2014, FOSS4G Korea | Tagged: , , | 2 Comments »

Texturing surfaces

Posted by smathermather on September 8, 2014

Evaluating the application of texture to 3D models as we approach my presentation on OpenDroneMap. Promising stuff:

image

Posted in Drone, OpenDroneMap, UAS | Tagged: | Leave a Comment »

From Dobongsan to Mount Saint Helens — FOSS4Gs and OpenDroneMap

Posted by smathermather on September 8, 2014

I’ve touched down and started to settle into Tri-Met country not too long after returning from FOSS4G Korea.

Photo of mountain in the Cascades from airplaneThe public transit is great, the city vibrant with the warmth of a small town, and the energy of an enclave in a big city, and it’s also slightly surreal, now that I’m back where I am no longer, as Paul Ramsey put it, functionally illiterate. Functionally illiterate is what I was for a week and a couple of days in Korea, and thinking of it like that, this was the first time since early gradeschool that one could consider me to be that. Fascinating. I recommend being functionally illiterate every now and then. (Quick aside, I started to learn Hangul, the Korean alphabet today, and it is not so bad. It’s very clever and logical, and I’m looking forward to getting deeper into it).

On Friday I unveil the beginnings of OpenDroneMap, an open source project intended address computer vision in the context of geospatial datasets. This is a project at its infancy, so it’s is as much a call to action, a plea for help, and a “Hey, does anyone want to come out and play?” sort of moment. And I do it now, before the project is too far along so that a wide variety of people can, if they are interested, get involved and have a say in structure, direction, and outcomes associated with it.IMG_20140906_231000

So what is it? Well as a starting place, it’s a fork of an existing computer vision framework (https://github.com/qwesda/BundlerTools) that allows one to go from unreferenced arbitrary photos to structured information. It’s intended to make computer vision techniques useful and usable for geospatial professionals.

At a moment when PostGIS is so very mature that it does most everything, the waves of invention and reinvention of geospatial are passing again and again through the C, Java, Python, Javascript, and Go (etc.) communities, it is now that we have new possibilities of rich spatial datasets, from crowd-sourced Google Street View like projects such as Mapillary, to the impending deluge of images from civilian Unmanned Aerial Systems (drones). Sadly, many existing tools in this sphere are hard to use, expensive, and or don’t scale well to large datasets. The aim with ODM is to create a toolkit that is easy to use, Free and Open Source (and thus free to modify and use), and scales well to large use cases and moreover to do so within the context of the broader community through a transparent development process.

ODM then is a toolset to augment and supplement existing, now conventional, geospatial technologies like GPS, and give structure to the vast catalog of unstructured data being collected everyday. (I won’t delve into it here, but the other part of the puzzle is the common archiving of unstructured data, ala OpenStreetMap. More on that later).

Pre and post transformed points compared in single figureIn our previous example, we used the implicit information in photos using Multi-Stereo View analysis to correctly restructure bad GPS information. This is a trivial example but mighty powerful stuff.

Let me frame this with a quick diversion: I was blessed with the opportunity to keynote at FOSS4G Korea. I wrote and practiced a clever speech, I flew there to Seoul, and on my ride into town from the airport had a revelatory conversation with Sanghee Shin, my host, as to the nature and future of FOSS4G in Korea. So, I promptly and humbly re-wrote my speech.

In short, this is what I said in my keynote: the South Korean Government is interested in fostering the best endemic resources of the Korean Peninsula, the minds and talents of it’s people, to do great work in software. We know the South Korea for hardware innovations (Samsung, LG, etc.) and world class internet speeds. They want also to be known for their software innovations. I suggested that endemicity (the characteristic of being endemic), government by the people, and commons-based peer production (like open source), are three arenas heavily overlapping in a common space, and that it is natural for Koreans to embrace Free and Open Source Software as an answer to bringing to bear Korean initiative and creativity in software.

Kombucha stand, Portland, Oregon

Kombucha stand, Portland, Oregon

Or put another way — Open Source software is Folk software. Of, by, and for the people, endemic to the creators and users of that software, and if the Korean Government is interested in endemic Korean software communities, then it is in their interest to sponsor and support Free and Open Source Software development and application.

So, my call to action today is that we as the FOSS4G community embrace and lead the development of tools which structure our unstructured information — that together, we build OpenDroneMap and the host of related tools that will aid us in building common geospatial understanding from unstructured data from the street, from the forest, from the fields, and from the air. Next up — the next generation of GeoSpatial software. I am excited to apply and invent it with you, our next generation of Folk GeoSpatial Software. Please join me.

 

PostScript: Could you hear the crescendo of music in the background? You could? Good. I hope it moved you. If you are at FOSS4G Portland, I hope it moves you to my presentation at 10:30 to 10:55 on Friday in track 5. There will be more crescendoing music. Oh Yes.
PostPostScript: Should OpenDroneMap be part of PostGIS long term? Is that a crazy idea? How about a front end as an extension in QGIS? Come, let’s discuss the madness.PostPostPostScript: I think switching time zones is starting to affect my writing style. Is it better? Worse? Neither better nor worse? Good.PostPostPostPostScript: Goodnight all. 좋은 밤.

Posted in 3D, Analysis, Bundler, Camera Calibration, Conference, Conferences, Image Processing, OpenDroneMap | Leave a Comment »

Bukhansan National Park, Seoul, Pt Two — on to Dobongsan Mountain

Posted by smathermather on September 5, 2014

Fewer words, more pictures this time. On to Dobongsan Mountain. This time, I went through a different entrance just to the north and east of the previous entrance.

DSC05134 DSC05135 DSC05136 DSC05140 DSC05144 DSC05164 DSC05167 DSC05169 DSC05235 DSC05237 DSC05239 DSC05263 DSC05279 DSC05285

Posted in Conferences, FOSS4G Korea, National Park | Tagged: , , | Leave a Comment »

Bukhansan National Park, Seoul, Pt Two — off to the base of Dobongsan Mountain

Posted by smathermather on September 4, 2014

In my previous post on Bukhansan National Park, I had the blessings of a guide, ilJumun Jingwansa, who is a KNPS ranger. My second time in the National Park, I took a subway train by myself to explore. This was a quick hike to familiarize myself with getting to the mountain, rather than an in depth exploration.

Photo along Teheran-ro in Gangam District, Seoul

Photo along Teheran-ro in Gangam District, Seoul

Photo from train while crossing the Han River.

Photo from train while crossing the Han River.

I took a train from my hotel in the Gangnam district to the Dobong Station, which is the closest subway station to Bukhansan National Park.

Photo near Dobong Station

Photo near Dobong Station

One thing that I noticed most everywhere in Seoul was the use of the small narrow spaces along rivers, under expressways, and other nooks and crannies that serve as linear parks with multi-purpose trails connecting them. Next time I am there, I hope to rent a bike and do some serious exploration of these,

From Dobong Station, I wandered up a stream along a multi-purpose trail, passed a narrow band of agriculture, to the foot of the mountain.

This adventure ended up being more about the edges of the city, and how they feather into the edges of the National Park and less about the National Park itself. But, it did give me the confidence to navigate to the Bukhansan and to the base of Dobongsan Mountain.

 

Posted in Conferences, FOSS4G Korea, National Park | Tagged: , , | Leave a Comment »

Bukhansan National Park, Seoul

Posted by smathermather on September 4, 2014

For all the time I spent in the city of Seoul, I was able to make three trips into Bukhansan National Park which is partially inside the boundary of the city. It can be both a remote space, and a space overrun by visitors from the cities around. Seoul contains more the 10 million residents, and the metropolitan region is the third largest in the world with more than 25 million.snapshot of bing map of Bukhansan National Park

The park itself is two mountains, Bukhansan Mountain itself and Dobongsan Mountain, although there are many named peaks along the two ridges. The valley containing the Bukhansanseong fortress divides the two mountains, and is said, due to natural springs, to have had the capacity to hold 50,000 people.

5 Ridges as viewed from the road at the southern end of Bukhansan National Park

Credit: ilJumun Jingwansa

IlJumun Jingwansa was my guide on the south end of Bukhansan Mountain (any history or natural history I get right is due to him — anything wrong is mine). We hiked up onto the side of the Bukhansan of the National Park, between Hyangnobong and Jokduribong peaks. Jingwansa was incredibly knowledgeable about the cultural and natural history, and as we walked and I peppered him with questions which he answered, for biological questions looking up English name equivalents of Latin names where they existed.

Image of side of mountain with Jingwansa

We saw two oaks along the way, Quercus acutissima and Quercus mongolica.

Image of Quercus acutissima acorn

We talked about crows and wildfires, trails, and the difficulty of maintaining the natural resources of a park under the constraints of heavy use and a loving public.

These mountains are made of granite, hard, and warm, and dry on the days I saw them. And they overlook the cities around them. It was here that first understood how mountainous Korea is, and something of the relationship between the Korea people, their mountains and their sea. The Korea National Park Service (KNPS) logo reflects this:

KNPS Logo

KNPS Logo

More soon… .

Posted in Conferences, FOSS4G Korea, National Park | Tagged: , , | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 752 other followers