Big progress this week. We now have a function that will take a picture that is cropped and rotated to just the resistor, and the x-positions of the bands and returns the colors of the bands with reasonable reliability.
It works by taking the average HSV for a strip that is around the area of an x-position given. It then uses the saturation and value to determine if it is black, gray, or white. If it is none of those, it uses the hue value to decide if it is red, orange, yellow, green, blue, or violet. A hue value corresponding to red, orange, or yellow coupled with a low saturation tends to be brown but I have yet to determine exactly where this threshold is.
I will commit this code after I find a way to do so without interfering with the pre-existing android code.
More to come...
Wednesday, September 4, 2013
Resistance Color Scanner
Authors: Joshua Makinen and Steven Hammar
The Resistor Color Scanner will be a mobile application for Android devices. The function will be to process an image of a resistor to deduce the colors of the bands on a resistor to find the resistance. The application will also allow for the user to manually enter colors for individual bands in case of incorrect reads of any bands, and will ideally work with both a still picture and live camera capture. This project will require the learning of skills in the areas of image processing and Android development.
As of now we have created a skeleton of the android app with a working resistance calculator, picture taking features, and implementation of sample OpenCV code. We have also compiled a large dataset of resistor images, with varying color bands, lighting, background surfaces, and zoom/focus levels. We are currently working to learn OpenCV for Android.
- First three weeks: continue learning OpenCV, recognize colors from an idealized situation, and crop functionality in Android.
- fourth - seventh weeks: Find bands on a cropped image of a resistor and UI overhaul.
- eighth - twelfth weeks: find and crop to a resistor in an image.
- rest of semester: extend functionality to work with continuous scanning from the camera, rather than from pictures and work on any further improvements for detection of shape/band color
We will be using Java and the Android sdk, as well as the Android imaging library OpenCV. OpenCV is a very robust library and will help us to accomplish a lot of what we want to do with our application.