MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: Exporting a bitmap in native resolution
  • Next by Date: Re: pfa2pfb
  • Previous by thread: Re: Re: Maximization problems
  • Next by thread: Re: Optimization problem