DIL - Drone Imaging Language

I work a lot with drone data. Two common tasks are stitching 360 degee panoramas and detecting objects in an image.

Both of those are technically complicated - panorama stitching involves feature point detection, correlation, determining homographies, seam carving, and more.

Object detection is a whole field of research unto itself, but suffice to say it is not a simple process.

There are programming tools for both of those tasks, but if you're not a programmer it is going to be difficult to take advantage of most of them.

One way to deal with that barrier to entry is to create a DSL, or domain specific language.

The idea is not to create a general-purpose language, but one tailored to a specific use case (domain). This lets you create a simple interface, for example one that closely follows English, so non-technical users can take advantage of it.

To that end, I created a DSL for drone imagery: DIL, the Drone Imaging Language.

It's deliberately designed to be very simple. Here's a sample of DIL code:

load DJI_001.jpg DJI_002.jpg DJI_003.jpg
highlight boat person
save

That will load the 3 specified images, highlight any boats or people in them, and save the results. There's 80 object classes available for highlighting, see classes.txt for the full list.

There are 5 commands available in DIL:

load
highlight
stitch
show
save

Commands are run one at a time from top to bottom. Each command does the following:

load - Load one or more images. Loaded images are the ones that will be stitched and/or highlighted. This should be the first command in a DIL file. There may be more loads in a file. The most load will replace old ones - save your operations if you don't want to lose them.

highlight - Highlight the given classes in the loaded images. More than one class may be specified. This is what a highlighted image looks like:

highighted cars

stitch - stitch the loaded files into a panorama. This may be a regular pano or 360.

show - launch a web browser to visualize a panorama. Requires a loaded set of files to have already been stitched. This is what the web viewer looks like:

panorama

save - save changes to files. This includes any highlighted images or stitched panoramas.

I talked about DIL at the end of my talk about computer vision and image processing. There is video here if you want to learn more. Happy programming!