Welcome to the PMVS home page! You'll find examples of the work we do here, or can learn more About Us. Feel free to poke around.
IMAGE PROCESSING

color quantization
We've been using a waterfall algorithm to simplify colors in images. It detects local peaks in the pixel counts over the color plane, limiting the palette to tens of unique colors depending on the content. Our description of color quantization includes the full algorithm and results.
To learn the Chapel programming language, we wrote programs that do Gabor filtering, k-means clustering, FAST corner detection, and RANSAC alignment of images. You'll find a tutorial to the language and how it was used for these tasks, plus full source code, in Chapel by Example.
DATA ANALYSIS
Kirkwood gap analysis
Spacing, the difference between values after sorting, is stable or consistent around a mode in the data and increases locally at its edge. We have developed tests to evaluate these two features to determine if a data set is multi-modal. The Dimodal package for R provides the reference implementation for the feature detectors and tests. Our work also includes an estimator of the expected spacing for many distributions, closed-form expressions for the logistic and Gumbel distributions, and an analysis of spacing taken over larger intervals than adjacent values.
A project required binning a large set of continuous values into a limited number of buckets. The optbin library for R determines the best breakpoints between bins, to minimize the squared error between the values in the bin and their average.
EMBEDDED SYSTEMS / Z-WAVE

sensor readings
The demo programs that come with the Z-Wave 7.0 DevKit are large, with little documentation of how they're put together. We've created our own demo, a humidity-temperature sensor, that starts from scratch, adds in hardware support for the sensor and LCD, and then implements a few Z-Wave command classes within the application framework. The project notes describe the organization of framework programs and include all source code.
The zpiffer decodes traffic on the serial port between a UZB controller and a Z/IP Gateway or the OpenZwave library, converting the byte stream into readable versions of the ZWave frames. You'll find source code, text and GUI parsers, and a description of the specification language and state machine with the project.
