I was browsing the Duracoat web site looking for a good set of colors to use for painting my guns. As you may know, Duracoat has a veritable plethora of available colors, not to mention patterns and color groups to represent various types of camouflage used around the world. Well, the choices are so mind boggling extensive, I was becoming frustrated with the chore of picking colors. On top of that, I wanted to be able to pick colors that would blend in with the Texas hill country, and Duracoat doesn't have a color group for that, so I brainstormed it a bit, and considered the technical hurdles I would face. Once I found that it was fairly simple to do what I wanted to do, I started writing code. CamoPicker is the result.
Everything displayed on a computer monitor is shown as a series of pixels, and each of these pixel is set to it's own color. CamoPicker takes the original photo and combines a pixels color with its neighboring pixels, averaging out the colors to come up with a series of averaged colors. The technical term for this process is "pixelating", and you can see this process in action by loading an image into a paint program, and reducing it down to a 4x4 image. What you're left with is the same image represented by just 16 pixels.
Once the dominant colors have been determined, CamoPicker uses the CEILab 2000 color matching algorithm, which generates a score regarding the proximity to the colors being matched. CamoPicker compares all of the colors in the selected paint system, and returns the paint color with the highest score.
It mostly depends on your matching mode. If you've elected to "exclude duplicates", CamoPicker will try to find the next most closely matching color. Sometimes, the results can be somewhat bizarre.
There are two factors to consider - the quality of the photograph being matched, and the accuracy of the colors represented in the data file. I have no control over the first thing at all, so that means it's entirely up to the user to use a photo that accurately represents his environment. As far as the paint colors are concerned, I pulled the info off the web (the only source that doesn't cost a butt-load of money), and I extracted each color individually from admittedly poor samples posted on the web, with Duracoat being the most problematic. I called Lauer (the guys that make Duracoat) to see if they had a cross reference chart to the Federal Standard color chart, and they don't, so what I've provided is the best info I could scrape together.
The primary reason is that as far as I'm concerned, black is black. The reason I say that is because the Duracoat samples I've found on the web are so bad that I viewed it as a pointless gesture to try and cover all of their black variations. If someone can provide me with precise color values, I'll be more than happy to post the individual black shades in the Duracoat paint system data. Finally, some blacks are noted for their reflective quality, and in this program, that's kinda pointless because we don't consider that in the paint matching algorithm.
Yes. Each paint system uses its own data file in the ColorData subfolder, and it's easy to tell which file is associated with a given paint system. Documetntation will eventually be provided that assist you in making changes to these files, and I was even considering writing a utility that would let you change this data without having to muck around in the file by hand. More info will be made available as it is known.
It's admittedly tedious, but it can be done. I'm working on a web page that describes the process in detail (look under the Documentation menu item).
This is almost as tedious as creating your own camo pattern (it's not quite as tedious simply because there are fewer files involved). I'm working on a web page that describes the process in detail (look under the Documentation menu item).
Nope. I even included a Ford logo in the sample templates so you could see that pretty much anything can have camouflage applied.
Not at this time.
I made the decision to disallow re-sizing because it solved a lot of issues for me. Did you happen to notice the part of the standard disclaimer that mentions my inherent laziness?
Nothing. Nada. Zilch. Zero. Void. Null. I'm not even accepting donations, so don't ask how to send me your money.
Windows Vista or Windows 7, with the .Net Framework 4.0 installed. It will probably run under Windows XP, but the .Net 4.0 requirement is still there, and since I haven't had an XP machine for the last few years, it will be up to you to make sure everything works well. I don't anticipate any problems.
Yes, but only if you find a programmer willing to compile it under Mono and work out the problems. That programmer is NOT me.
Yes. Please refer to the question regarding running it in Linux.
Not unless someone else writes it. Again, the source code will eventually be available, and as long as they don't charge for derivative works (like a mobile app that uses any of my code), they can write a mobile app.
The source code is all C# 4.0. No 3rd-party libraries were use, and no animals were harmed in the making of CamoPicker.
Nowadays, programming is as much about researching a problem as it is about implementing the solution to that problem. Since I'd never really done anything remotely like this in the past - and after 30 years of writing code, it's pretty amazing that I've never really done anything even remotely like this - I performed a LOT of research on google. I found some code on the web for certain aspects already implemented (like the color matching code), but the rest was pure google searches. Of course, the guys on the CodeProject web site were invaluable as consultants and beta testers. Finally, there were my dogs. I often discuss programming problems with them, and while they mostly just listen, they helped me think through some of the more sticky issues.
No, but I did stay at a Holiday Inn Express last night.