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 download at http://www.physics.uc.edu/~simpson/page11/files/OptimizationProblem.jpg : //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 #[[1]] <= 355 && 65 <= 100 #[[2]] <= 80 && 30 <= 100 #[[3]] <= 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[#[[1]], #[[2]], #[[3]]] &, ImageData[frame], {2}]] // AbsoluteTiming 2.012571 Seconds Any help is highly appreciated. Adam Simpson
- Follow-Ups:
- Re: Optimization problem
- From: Daniel Lichtblau <danl@wolfram.com>
- Re: Optimization problem