       Optimization problem

• To: mathgroup at smc.vnet.net
• Subject: [mg96675] Optimization problem
• From: Adam Simpson <adambsimpson at gmail.com>
• Date: Fri, 20 Feb 2009 05:46:37 -0500 (EST)

```Hi, I'm currently working with some image files in mathematica but am
having an optimization problem. What I am basically trying to do is
convert an image to HSB color space and then test each pixel to see if
the H,S,B values fall within a certain range, making it a 1 if it's in
the specified range else a 0. Notice I have multiplied the raw HSV
values to have ranges of [0,369], [0,100],[0,100] respectively. I
however get an order of magnitude difference between running two
operations that I can't rectify.

Notice the image I am using to that I call "frame" is available for
:

//test each pixel to see if the value of Hue,Saturation,Brightness
fall within a certain range and make the value 1 if it is, else a 0:
Image[Map[
If[320 <= 359 #[] <= 355 && 65 <= 100 #[] <= 80 &&
30 <= 100 #[] <= 75, 1, 0] &,
ImageData[frame], {2}]] // AbsoluteTiming

0.282983 Seconds

If however I create a function as such ,even after compiling it which
helped slightly, that is equal to the above If statement  I get an
order of magnitude higher time.

Hmin=320;
Hmax=359;
Smin=65;
Smax=80;
Bmin=30;
Bmax=75;

PixelMatch = Compile[{{H, _Real}, {S, _Real}, {B, _Real}},
If[(Hmin <= H*359 <= Hmax) &&(Smin <= S*100 <=  Smax) &&
(Bmin <= B*100 <= Bmax), 1, 0]]

Image[Map[PixelMatch[#[], #[], #[]] &,
ImageData[frame], {2}]] // AbsoluteTiming

2.012571 Seconds

Any help is highly appreciated.