Algorithm R&D and real-time decision systems for a hardware-focused start-up in the home automation space. Designed modular software products to predict user preferences, transform data to physically interpretable quantities, and reduce factory calibration time for hardware sensors. Owned data quality through HW, FW, and SW, and built tools to analyze data at each layer. Built automated testing pipelines for algorithm evaluation against labeled datasets.
Research position in computer vision at the premier US Air Force research facility. Investigated the propagation of uncertainty in image registration algorithms. Collected and analyzed registration data for evaluation of computer vision algorithms. Developed video stabilization scripts for truthing in machine learning research software. Support from USAF.
Summer research position in computer vision. Developed fully Bayesian techniques to obtain consistent uncertainty estimates in georegistration algorithms for UAV video feed. Participated in weekly seminars on computer vision and image processing. Support from DoD and USAF.
Research in applied Fourier analysis; focus in analysis of edge detection methods with spectral data in synthetic aperture radar signals. Participated in weekly group meetings with professors, post-docs, and doctoral candidates from multiple disciplines and attended seminars on applied and computational mathematics. Support from DoD and NSF.
Developed acoustic absorbers and diffusors tested at Riverbank (US) and University of Salford (UK), conducted in-situ acoustic measurements using free-field test microphones, designed neutral acoustic spaces for clients, authored articles to disseminate knowledge of room acoustics, and modeled acoustic elements and spaces.
Focus in scientific computing, signal processing, and abstract algebra. Graduate-level courses in algebra, graph theory, and philosophy. Awarded the Bidstrup Foundation Research Fellowship. Graduated magna cum laude.
Analysis of methods to create edge maps constructed from noisy and intermittent spectral phase data with post-processing techniques. Supervised by Dr. Anne Gelb and Dr. Douglas Cochran, in partial fulfillment for the requirements of a Barrett Honors degree.
Classifying panoramas takes two main steps: defining a content-based image retrieval (reverse image search) system, and using that system to build a graph of matched images, where the connected components correspond to panoramas. Uses OpenCV for image descriptors, Redis for a database, and NetworkX for connected component labeling.
The Streams data structure that the creator of Redis debuted last year is an excellent tool to work with real-time time-series data. This tool simply adds some iteration and sorting capabilities to continuously digest stream data in order.
Lines in OpenCV are usually specified in endpoint form or Hesse normal form. While these forms are not often taught in school, they are well-suited for linear algebra computations to find intersections, segment by angle, and more. To this end, the Hough Tool is a convenient package to analyze, transform, group, and draw lines in any format from OpenCV.
I originally developed this project to test an object oriented approach for image display windows in OpenCV. I wanted to implement an OpenCV copycat of Adobe Photoshop's Magic Wand tool, which allows a user to select a region of similar colored pixels, but also outputs a selection mask and some statistics of the colors in the selected region.
This project was brought on by the dozens of users on Stack Overflow asking for robust methods for color selection in OpenCV when simple colorspace thresholding would suffice. Provides an easy interface for trying out threshold ranges in different colorspaces to produce binary images which identify colors. Includes a native OpenCV interface in Python.
Homographies can be a tricky subject for beginners in computer vision, especially for those without a background in mathematics. A few Stack Overflow questions have been popping up recently with people unsure of how to transform images without cropping them. The method to remove cropping from OpenCV's warpAffine and warpPerspective functions can be easily automated without user input, so I created a Python module with padded versions of the OpenCV functions.
This project was an open challenge for a position at Intelligent Flying Machines. IFM makes drones which buzz around warehouses primarily for inventory management. The goal of the challenge was to produce annotated images showing the location of labels attached to boxes, both on high-res still images and low-quality motion-blurred video frames. All parameters were to be configurable via an interface, which I provided natively in OpenCV with trackbars. My program found the labels in the provided images, as well as in some synthetic images I created for testing purposes.
Detected highway lane lines from a video stream. Used Canny edge detectors and Hough transforms, along with other image processing techniques to separate out and average lines. Completed by using the algorithm on my own video stream from a GoPro mounted to my windshield.
What's an easy way to track Mario in Super Mario Bros game-play? Uses frame-by-frame template matching via summed square differences to track a template through a video, and includes optimizations to dynamically reduce the search area as needed to find the template.
Honors project for a course in Numerical Analysis to explore a topic outside the curriculum. Program to solve second order linear PDEs via spectral methods. Outputs a sequence of solutions at varying time steps and computes error between the numerical solutions and exact solutions.
Honors project for a course in Abstract Algebra to explore a topic outside the curriculum. Paper on semidirect products, complete with motivation, recognition theorems, proofs of various properties of semidirect products, and classifications of groups arising from semidirect products.