Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: another image problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg57010] Re: [mg56975] another image problem
  • From: Mark Holt <mark_robert.holt at kcl.ac.uk>
  • Date: Thu, 12 May 2005 02:33:23 -0400 (EDT)
  • References: <200505110925.FAA24119@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

At 10:25 11/05/2005, you wrote:
>Let's say you have a picture of two overlapping graphs.
>
>You don't have the equations that generated them. but you know the
>graphs is relatively accurate. for example,
>
>http://pg.photos.yahoo.com/ph/sean_incali/detail?.dir=/9264&.dnm=191b.jpg&.src=ph
>
>Now... let's say you wanted to find the area under curve for both
>curves (blue and green) between certain x values...
>
>for example, 425nm <= x <= 475nm , and then 500nm <= x <= 550nm, and
>then 525nm <= x <= 575nm.
>
>is this doable in Mathematica?
>
>thanks In advance for any thoughts.
>
>sean

Hi Sean,
I'm a relative novice with Mathematica, so this may be complete rubbish! 
Apologies if it is.

What I have done is to crop the graph in Adobe Photoshop at the origin 
{400,0}. Then I have thresholded each channel (RGB) to give pure green and 
cyan on a white background and save as a TIFF file (graph.tif). Then I run 
the following code:

graph = Import["C:\\Documents and Settings\\Mark\\Desktop\\graph.tif"];

Show[graph, Frame -> True]

data = Position[graph[[1, 1]], {0, 255, 0}]; (*{0, 255, 0} for green; {0, 
255, 255} for cyan*)

maxy = Max[data /. {x_, y_} -> y];
maxx = Max[data /. {x_, y_} -> x];

fit = Cases[Mean /@ Table[Cases[data, {x_, i}], {i, maxy}], {x_, y_}];
int = ListInterpolation[fit, {{1, maxy}, {1, maxx}}];

datafit = Table[int[i, 1], {i, maxy}] // N;
ListPlot[datafit]

origin = 400;
Plus @@ Take[datafit, {500 - origin, 550 - origin}]

I hope this is what you are after.

Best wishes,

Mark



  • Prev by Date: Re: Output to a file
  • Next by Date: GramSchmidt problem
  • Previous by thread: Re: another image problem
  • Next by thread: Re: another image problem