Open Source Photogrammetry with OpenDroneMap
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Benjamin, Dakota
OpenDroneMap (ODM) aims to be a full photogrammetric solution for small Unmanned Aircraft (drones), balloons, and kites. ODM acts as a tool for processing highly overlapping unreferenced imagery, turning the unstructured data (simple photos) + GPS into structured data including colorized point clouds, digital surface models, textured digital surface models, and orthophotography. This session will act as an introduction to OpenDroneMap, give an overview of what the current status of the project is, detail what the anticipated next steps are in the project, and how you can participate as a user and/or developer. For ODM, 2016 will see smoothed texturing, denser, more accurate point clouds, and other key components to the maturation of the project. Find out how you can participate.
 Ladies and gentlemen, may I ask you for attention. It's 11 o'clock. We are about to start. Thank you. My name is Jahim Cepitsky. I will be chairing this session. Please welcome our first speaker, Dakota, and he will tell us something about Open Drone Map. Please. All right. Thanks for the introduction. Yeah. So my name is Dakota. I'm a developer for the Cleveland Metro Parks. You may know Stephen Mather. He's been to a few of these talks before. He will be here in the slides only. So what is Open Drone Map? A few years ago, Stephen decided that we needed to have an open source solution to photogrammetry software. And there were some hodgepodge sort of different tool chains that you could sort of mesh together ourselves, but there was nothing really fully automated, fully together. So he started putting the tool chain together and put it together with a control script. And so what it does, it does matching between images, creates digital service model, and does orthophotomosaic. So put another way. Open Drone Map is an open source toolkit for processing aerial drone imagery. Open Drone Map will allow Cleveland Metro Parks to more comprehensively survey and evaluate the ecological health of the 22,000 acres of public force, wetlands, and beaches that we steward. Digital photographs are captured from small aerial drones flying overlapping patterns at the target site. Open Drone Map finds matching features in each of the overlapping images in order to reconstruct the world as a 3D point cloud and mesh. The mesh is then textured using the original images. Finally, an ortho photo is generated from the GPS data and the textured mesh. As an open source project, our contributors are users and developers like you. Clone the repo, try it out, and contribute back. For Cleveland Metro Parks, Open Drone Map is a powerful tool for the evaluation of stream bank erosion, tracking the spread of invasive species and measuring native vegetation growth. What is your use? Participate in the project today as a tester, a user, or a developer. It started out as a bundle of mesh of tools originally from bundler tools. So in the tradition of the ship of Theseus, if the ship is all of its parts replaced, is it the same ship? Like I said before, what we produce, what comes out of it are point clouds, textured meshes, and ortho photos. So for example, a point cloud here. This is a small building property in Toledo, Ohio. And so you can see many, many points are being generated. And then a textured mesh over that, and then from these raw aerial images, we can produce this completed ortho photo mosaic. This is an old farm field in our Hinkley Reservation in the Metro Parks. So I want to talk about, I'll do a quick second introduction, talk about what you need to get started with this. And then we'll do a light technical dive and talk about the broader ecosystem of OpenDroneMap. So we'll talk about platforms. What do you need to fly to get these images and then what these images need to be to go into our software? So besides just flying a kite and putting a camera on it, there's a pretty large camera aerial photography movement, not movement, but group from public labs or otherwise. We have a helikite, which is out of a company out of Great Britain, I believe, and it's just basically a helium balloon with a kite attachment to keep it stable. And it works really, really well for creating stable images. One of the drawbacks is it takes quite a bit of effort to reel it back in. So this is Steven with a fishing reel. And then you can see the camera on a 3D printed with an R2-E-No, and it rotates and spins and it triggers the camera every one second. So we're able to get sort of these spherical, photo sphere results from that. And from that, we can input that. We also have rotorcraft. So a quick little... These are great for smaller areas, maybe hard to land, for instance, with a... I don't know what that is. Also a small fixed wing if you've got some big landing area. This is... You probably recognize this. This is the SenseFlight EB. Really easy to use. You shake it, throw it, and it just flies in a grid. Completely automated system. They're really, really nice. And then, of course, the large EB. Or we have a larger, not an EB. What's called the E384. It's just larger, has a larger... That's inappropriate. I apologize. YouTube. And so what these drones and these unmanned aerial systems are capturing are regular photos. They have Canon cameras in them or other cameras in them. So what Open Drone Map takes is JPEG photos, specifically, basically any three-band photo, other RGB, or you can get filters put in these cameras for NIR or otherwise. And then what you also need is a high level of overlap and sidelab between each photo. You need, at any given point, you want to be able to have three photos overlapping. So 70% overlap and sidelab between the photos. And most... If you've got a drone with automation, if you build the grid, most of the time you can select how much overlap you want. And then you want to have somewhere greater than 50 images in a set. That's not a hard requirement, but that way you're able to get a nice, good result from that. So we'll go into a little bit of what each section of the tool chain is, how we get from beginning to end, from photos to an ortho-photo. So start with the structure of motion. When we replaced Bundler, we worked with Mapillary, who do street-level view, crowd-source street view. And so they have this open SFM software that they helped integrate into Open Drone Map. And you might think, well, they do street-level, you do drones, those are completely different things, but the core concept's the same. They are taking these photos, finding tie points between each photo, and creating this sort of sparse point cloud from that, and able to reconstruct the model, the world in 3D from all of these photos. You can see the little white squares of the photos, and each dot is a tie point between different photos. And then from there, we will create the dense point cloud. Currently, we use PMVS, CMVS solution. We are working on updating that right now. We want to, we're looking into something called semi-global matching. The advantage of this, well, dense point cloud is probably the most costly as far as resources, RAM and CP, well, mostly RAM. And we get something like this from CMVS. And the advantage of using something like semi-global matching, and probably we'll be working on a custom solution to that, is you get a much, much denser on orders of magnitude point cloud from that. I mean, you can't even almost tell that that's points. So then we have to create the mesh, and from the mesh we can create a textured 3D mesh. So you'll notice the mesh also, it's just triangles. And it looks a little soft around the edges, but when you texture it, it still looks pretty great. A lot of photogram-free software struggle with vegetation. You'll notice like, kind of just like it looks like a pillar, not a tree. But we are looking into taking basically edge detection and surface detection so that we can get products like this. Lastly, well, second to last, we just implemented a new texturing algorithm using MVS texturing, which does three things pretty well. First, color correction, also seam line correction, and photo consistency checking. So I apologize for another inappropriate image, but we'll zoom in. You can see there's like very distinct seam lines and colors. So they fix the seams, also do color correction, and then photo consistency. So you can see there, that's not supposed to be there, and MVS texturing checks for that and fixes it. I'm going to skip for time because that's all really an honor to see. Yeah, seam leveling, et cetera. Okay. So you can see in our example with Open Drone Map, this is a prime example of our old texturing. You can see one of those center images is definitely off. It's not geo-referenced properly, probably, either from just interference or, you know, the cameras we use here have internal GPS and they're not that great. They're good, but sometimes they can, they get errors, so there's photo consistency check there, as well as you can see the seam line here. And thirdly, color correction. If it was partially cloudy day, you're going to get sort of blobs of dark and light and open MVS texturing fixes that, creates a nice consistent. Here's another example, a very stark example of, this is actually taken with two cameras. This is the Toledo data set again. And you can see this is really, you know, production quality map. Just real quick about accuracy. We flew a drone inside to get around FAA regulations, which I think on the 29th are going to be in the U.S. for commercial operations is going to be very good. They just passed some new regulations, but we flew inside on a football field and had a professional surveyor take 50 points. And I did just a quick accuracy analysis. See how well our drones would fly, would sort of build this map compared to photo, photo grade software and found really low error. You know, and these are creating maps like two to three centimeter accuracy or resolution, centimeters per pixel. So these maps are coming out with very good accuracy. Quickly talking about the broader ecosystem, we want this open drone map to be an integrative solution. We want to be able to seamlessly move the maps that are created with open drone map into open arrow map. We want to be able to work with, well, we are working with portable OSM to be able to, you know, have in low tech areas, run open drone map, put it into portable OSM and have them sort of instant, almost real time mapping with what the people who are using open, sorry, portable open street map want to use. And then, you know, getting into the future of open drone map, we talked about dense point cloud improvements. We also have, in a pull request right now, video inputs. So it's not just the JPEG, but you can sort of roll a video on your drone. And the goal of this is to have possible real time or near real time processing, at least, you know, sort of step by step open SFM building the sparse point cloud for real time applications, crisis mapping, et cetera. And then lastly, we are working on a graphical user interface. Right now, open drone map is a command line tool. I think in the keynote today, they talked about needing to have geospatial applications that are not just for experts, that are for business folks. And so, you know, being a command line tool presents a barrier. So having a graphical user interface, we are working on a web service solution. So a web based interface for upload, having a process, and then being able to move to its different, you know, open arrow map or whatever. And then lastly, just sort of an idea of how drones can be used for mapping as far as resources. So these are two of our drones. The Iris Plus is the quadcopter, and the E384 is the big, huge fixed wing that can map, you can go about up for about an hour, 45 minutes to an hour. And it would take, to map entirety of San Francisco, it would take 66 hours or 33 flights at 60% overlap. Definitely intensive but totally doable. Cleveland has a much, it's a much more urban sprawl, so it would take more flights, but still definitely doable. But you know, it gets pretty intensive as far as the number of flights, the number of battery charges that you need. So like it was in the video, ColonR repository for us develop, we have a Gitter, that's the second to last link, where a lot of DevTalk happens. Please join us, ask questions. You can find me on Twitter, and Steven on Twitter, and on of course GitHub. Any questions? So any questions? Please wait for the mic. Is it possible to add ground control points to your program? Yes, it's already integrated, I didn't talk about it, but you have to basically create a text file with a specific format with each ground control point, and you can do that in lieu of having GPS points in the XF of the images. Is it also possible to export the point clouds? Yes, multiple formats, PLY,.xyz, I believe, and last files as well. Sorry I wasn't watching, so I will start here. Thank you. I have two questions. Is your software using the GPU, and how big projects can you handle with the OpenDrome map? Okay, so it is, we aren't using GPU yet, definitely a goal for us in the future, specifically with the semi-global matching improvements, that will definitely, because that's easily the most time intensive, like 80% of the time cost of OpenDrome map is in densification, and that will be using GPU processing. So let's see, I have a server with 20 cores that I can run 700 images in about two hours. So it still takes time, takes some waiting, but we're always looking to improve. So in terms of creating production quality maps, it seems like one of the big pitfalls with current photogrammetry is around water, and the kind of artifacts that you get. So in light of kind of crisis use cases in coastal areas, and folks that just want to make maps of the coast, do you have any planned features to have user-generated polygons to do flattening or anything like that? No, not right now. Of course we welcome improvements. Yeah, it's really not really an issue with photogrammetry software, but of just the images themselves where you get too much reflectivity, and so we are looking for ways to improve that for sure. I wanted to ask whether there's an option to classify the points or use alternative software to classify the points in the points cloud? We don't have that right now. Can you suggest something? Yeah, that would be great. I think especially if we want to be doing more edge detection, deciding what's a building, what's a tree would be really helpful in that regard. Do you have an example of such software which you can do it already? I don't know. Poodle could do the ground detection. Poodle? Can do the ground detection, not the edge detection. Wait for the microphone mic. He said that Poodle does ground detection, so that's definitely a good start. Any other questions? Or I will ask. Okay. Right here, in the front. Thank you. Thanks, Moran Scalability. When you have, say, probably, as you talked about San Francisco, like 10,000s of photos are you planning to split the project somehow, or what are the ways to go there? Yeah, I would say if you're doing something as large as a city, trying to map a city, you would probably have to manually chunk out the city itself and then use Google or something to merge the rasters together. No more questions here. What I will ask is web processing service somehow in your scope, because you were talking about processing this on the same... Yeah, I think that's the real reason for the web-based interface, is to be able to do some distributed processing. Maybe we would not offer a service, but to be able to have this web service available for people to host their own services. Any other questions? Well, then, thank you. Thank you very much. Thank you.
 Ladies and gentlemen, may I ask you for attention.  It's 11 o'clock.  We are about to start.  Thank you.  My name is Jahim Cepitsky.  I will be chairing this session.  Please welcome our first speaker, Dakota, and he will tell us something about Open Drone  Map.  Please.  All right.  Thanks for the introduction.  Yeah.  So my name is Dakota.  I'm a developer for the Cleveland Metro Parks.  You may know Stephen Mather.  He's been to a few of these talks before.  He will be here in the slides only.  So what is Open Drone Map?  A few years ago, Stephen decided that we needed to have an open source solution to photogrammetry  software.  And there were some hodgepodge sort of different tool chains that you could sort of mesh together  ourselves, but there was nothing really fully automated, fully together.  So he started putting the tool chain together and put it together with a control script.  And so what it does, it does matching between images, creates digital service model, and  does orthophotomosaic.  So put another way.  Open Drone Map is an open source toolkit for processing aerial drone imagery.  Open Drone Map will allow Cleveland Metro Parks to more comprehensively survey and evaluate  the ecological health of the 22,000 acres of public force, wetlands, and beaches that  we steward.  Digital photographs are captured from small aerial drones flying overlapping patterns at  the target site.  Open Drone Map finds matching features in each of the overlapping images in order to reconstruct  the world as a 3D point cloud and mesh.  The mesh is then textured using the original images.  Finally, an ortho photo is generated from the GPS data and the textured mesh.  As an open source project, our contributors are users and developers like you.  Clone the repo, try it out, and contribute back.  For Cleveland Metro Parks, Open Drone Map is a powerful tool for the evaluation of stream  bank erosion, tracking the spread of invasive species and measuring native vegetation growth.  What is your use?  Participate in the project today as a tester, a user, or a developer.  It started out as a bundle of mesh of tools originally from bundler tools.  So in the tradition of the ship of Theseus, if the ship is all of its parts replaced,  is it the same ship?  Like I said before, what we produce, what comes out of it are point clouds, textured  meshes, and ortho photos.  So for example, a point cloud here.  This is a small building property in Toledo, Ohio.  And so you can see many, many points are being generated.  And then a textured mesh over that, and then from these raw aerial images, we can produce  this completed ortho photo mosaic.  This is an old farm field in our Hinkley Reservation in the Metro Parks.  So I want to talk about, I'll do a quick second introduction, talk about what you need to  get started with this.  And then we'll do a light technical dive and talk about the broader ecosystem of OpenDroneMap.  So we'll talk about platforms.  What do you need to fly to get these images and then what these images need to be to go  into our software?  So besides just flying a kite and putting a camera on it, there's a pretty large camera  aerial photography movement, not movement, but group from public labs or otherwise.  We have a helikite, which is out of a company out of Great Britain, I believe, and it's  just basically a helium balloon with a kite attachment to keep it stable.  And it works really, really well for creating stable images.  One of the drawbacks is it takes quite a bit of effort to reel it back in.  So this is Steven with a fishing reel.  And then you can see the camera on a 3D printed with an R2-E-No, and it rotates and spins  and it triggers the camera every one second.  So we're able to get sort of these spherical, photo sphere results from that.  And from that, we can input that.  We also have rotorcraft.  So a quick little...  These are great for smaller areas, maybe hard to land, for instance, with a...  I don't know what that is.  Also a small fixed wing if you've got some big landing area.  This is...  You probably recognize this.  This is the SenseFlight EB.  Really easy to use.  You shake it, throw it, and it just flies in a grid.  Completely automated system.  They're really, really nice.  And then, of course, the large EB.  Or we have a larger, not an EB.  What's called the E384.  It's just larger, has a larger...  That's inappropriate.  I apologize.  YouTube.  And so what these drones and these unmanned aerial systems are capturing are regular photos.  They have Canon cameras in them or other cameras in them.  So what Open Drone Map takes is JPEG photos, specifically, basically any three-band photo,  other RGB, or you can get filters put in these cameras for NIR or otherwise.  And then what you also need is a high level of overlap and sidelab between each photo.  You need, at any given point, you want to be able to have three photos overlapping.  So 70% overlap and sidelab between the photos.  And most...  If you've got a drone with automation, if you build the grid, most of the time you can  select how much overlap you want.  And then you want to have somewhere greater than 50 images in a set.  That's not a hard requirement, but that way you're able to get a nice, good result from  that.  So we'll go into a little bit of what each section of the tool chain is, how we get from  beginning to end, from photos to an ortho-photo.  So start with the structure of motion.  When we replaced Bundler, we worked with Mapillary, who do street-level view, crowd-source street  view.  And so they have this open SFM software that they helped integrate into Open Drone Map.  And you might think, well, they do street-level, you do drones, those are completely different  things, but the core concept's the same.  They are taking these photos, finding tie points between each photo, and creating this  sort of sparse point cloud from that, and able to reconstruct the model, the world in  3D from all of these photos.  You can see the little white squares of the photos, and each dot is a tie point between  different photos.  And then from there, we will create the dense point cloud.  Currently, we use PMVS, CMVS solution.  We are working on updating that right now.  We want to, we're looking into something called semi-global matching.  The advantage of this, well, dense point cloud is probably the most costly as far as resources,  RAM and CP, well, mostly RAM.  And we get something like this from CMVS.  And the advantage of using something like semi-global matching, and probably we'll be  working on a custom solution to that, is you get a much, much denser on orders of magnitude  point cloud from that.  I mean, you can't even almost tell that that's points.  So then we have to create the mesh, and from the mesh we can create a textured 3D mesh.  So you'll notice the mesh also, it's just triangles.  And it looks a little soft around the edges, but when you texture it, it still looks pretty  great.  A lot of photogram-free software struggle with vegetation.  You'll notice like, kind of just like it looks like a pillar, not a tree.  But we are looking into taking basically edge detection and surface detection so that we  can get products like this.  Lastly, well, second to last, we just implemented a new texturing algorithm using MVS texturing,  which does three things pretty well.  First, color correction, also seam line correction, and photo consistency checking.  So I apologize for another inappropriate image, but we'll zoom in.  You can see there's like very distinct seam lines and colors.  So they fix the seams, also do color correction, and then photo consistency.  So you can see there, that's not supposed to be there, and MVS texturing checks for that  and fixes it.  I'm going to skip for time because that's all really an honor to see.  Yeah, seam leveling, et cetera.  Okay.  So you can see in our example with Open Drone Map, this is a prime example of our old texturing.  You can see one of those center images is definitely off.  It's not geo-referenced properly, probably, either from just interference or, you know,  the cameras we use here have internal GPS and they're not that great.  They're good, but sometimes they can, they get errors, so there's photo consistency check  there, as well as you can see the seam line here.  And thirdly, color correction.  If it was partially cloudy day, you're going to get sort of blobs of dark and light and  open MVS texturing fixes that, creates a nice consistent.  Here's another example, a very stark example of, this is actually taken with two cameras.  This is the Toledo data set again.  And you can see this is really, you know, production quality map.  Just real quick about accuracy.  We flew a drone inside to get around FAA regulations, which I think on the 29th are  going to be in the U.S. for commercial operations is going to be very good.  They just passed some new regulations, but we flew inside on a football field and had  a professional surveyor take 50 points.  And I did just a quick accuracy analysis.  See how well our drones would fly, would sort of build this map compared to photo, photo  grade software and found really low error.  You know, and these are creating maps like two to three centimeter accuracy or resolution,  centimeters per pixel.  So these maps are coming out with very good accuracy.  Quickly talking about the broader ecosystem, we want this open drone map to be an integrative  solution.  We want to be able to seamlessly move the maps that are created with open drone map  into open arrow map.  We want to be able to work with, well, we are working with portable OSM to be able to,  you know, have in low tech areas, run open drone map, put it into portable OSM and have  them sort of instant, almost real time mapping with what the people who are using open, sorry,  portable open street map want to use.  And then, you know, getting into the future of open drone map, we talked about dense point  cloud improvements.  We also have, in a pull request right now, video inputs.  So it's not just the JPEG, but you can sort of roll a video on your drone.  And the goal of this is to have possible real time or near real time processing, at least,  you know, sort of step by step open SFM building the sparse point cloud for real time applications,  crisis mapping, et cetera.  And then lastly, we are working on a graphical user interface.  Right now, open drone map is a command line tool.  I think in the keynote today, they talked about needing to have geospatial applications  that are not just for experts, that are for business folks.  And so, you know, being a command line tool presents a barrier.  So having a graphical user interface, we are working on a web service solution.  So a web based interface for upload, having a process, and then being able to move to  its different, you know, open arrow map or whatever.  And then lastly, just sort of an idea of how drones can be used for mapping as far as resources.  So these are two of our drones.  The Iris Plus is the quadcopter, and the E384 is the big, huge fixed wing that can map,  you can go about up for about an hour, 45 minutes to an hour.  And it would take, to map entirety of San Francisco, it would take 66 hours or 33 flights  at 60% overlap.  Definitely intensive but totally doable.  Cleveland has a much, it's a much more urban sprawl, so it would take more flights, but  still definitely doable.  But you know, it gets pretty intensive as far as the number of flights, the number of  battery charges that you need.  So like it was in the video, ColonR repository for us develop, we have a Gitter, that's the  second to last link, where a lot of DevTalk happens.  Please join us, ask questions.  You can find me on Twitter, and Steven on Twitter, and on of course GitHub.  Any questions?  So any questions?  Please wait for the mic.  Is it possible to add ground control points to your program?  Yes, it's already integrated, I didn't talk about it, but you have to basically create  a text file with a specific format with each ground control point, and you can do that  in lieu of having GPS points in the XF of the images.  Is it also possible to export the point clouds?  Yes, multiple formats, PLY,.xyz, I believe, and last files as well.  Sorry I wasn't watching, so I will start here.  Thank you.  I have two questions.  Is your software using the GPU, and how big projects can you handle with the OpenDrome  map?  Okay, so it is, we aren't using GPU yet, definitely a goal for us in the future, specifically  with the semi-global matching improvements, that will definitely, because that's easily  the most time intensive, like 80% of the time cost of OpenDrome map is in densification,  and that will be using GPU processing.  So let's see, I have a server with 20 cores that I can run 700 images in about two hours.  So it still takes time, takes some waiting, but we're always looking to improve.  So in terms of creating production quality maps, it seems like one of the big pitfalls  with current photogrammetry is around water, and the kind of artifacts that you get.  So in light of kind of crisis use cases in coastal areas, and folks that just want to  make maps of the coast, do you have any planned features to have user-generated polygons to  do flattening or anything like that?  No, not right now.  Of course we welcome improvements.  Yeah, it's really not really an issue with photogrammetry software, but of just the images  themselves where you get too much reflectivity, and so we are looking for ways to improve  that for sure.  I wanted to ask whether there's an option to classify the points or use alternative  software to classify the points in the points cloud?  We don't have that right now.  Can you suggest something?  Yeah, that would be great.  I think especially if we want to be doing more edge detection, deciding what's a building,  what's a tree would be really helpful in that regard.  Do you have an example of such software which you can do it already?  I don't know.  Poodle could do the ground detection.  Poodle?  Can do the ground detection, not the edge detection.  Wait for the microphone mic.  He said that Poodle does ground detection, so that's definitely a good start.  Any other questions?  Or I will ask.  Okay.  Right here, in the front.  Thank you.  Thanks, Moran Scalability.  When you have, say, probably, as you talked about San Francisco, like 10,000s of photos  are you planning to split the project somehow, or what are the ways to go there?  Yeah, I would say if you're doing something as large as a city, trying to map a city,  you would probably have to manually chunk out the city itself and then use Google or  something to merge the rasters together.  No more questions here.  What I will ask is web processing service somehow in your scope, because you were talking  about processing this on the same...  Yeah, I think that's the real reason for the web-based interface, is to be able to do some  distributed processing.  Maybe we would not offer a service, but to be able to have this web service available  for people to host their own services.  Any other questions?  Well, then, thank you.  Thank you very much.  Thank you.
foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_0_215.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_216_1355.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_1356_1631.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_1632_2423.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_2424_2507.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_2508_2819.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_2820_3467.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_3468_3563.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_3564_3827.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_3828_4007.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_4008_5135.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_5136_5735.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_5736_7259.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_7260_7955.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_7956_9431.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_9432_11423.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_11424_13427.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_13428_14591.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_14592_16871.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_16872_18479.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_18480_19535.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_19536_19679.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_19680_21071.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_21072_23699.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_23700_23771.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_23772_24731.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_24732_25523.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_25524_25655.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_25656_25751.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_25752_25871.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_25872_26231.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_26232_29339.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_29340_30575.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_30576_31427.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_31428_33467.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_33468_33515.png foss4g-2016-1358-open_source_photogrammetry_with_opendronemap-hd_33516_33640.png