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 load
s 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:
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 load
ed set
of files to have already been stitch
ed. This is what the web viewer looks
like:
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!