<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>interpreting images produced by a spectroscope</title>
		<link>http://www.allegro.cc/forums/view/597599</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 08 Sep 2008 20:23:36 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>for my school physics essay i have produced a number of images with a spectroscope<br />now i need a program to interpret them by extracting data from each pixel about the intensity of light at that point. to illustrate my question: <a href="http://ioannis.virtualcomposer2000.com/spectroscope/amici.html#1daylightp">http://ioannis.virtualcomposer2000.com/spectroscope/amici.html#1daylightp</a><br />is there any software that would do it for me?<br />if not i could try to write the program myself but I am not sure how to go about it.<br />any advice is welcome <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (hammeraxe)</author>
		<pubDate>Thu, 04 Sep 2008 21:02:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m a bit confused, are you asking how to take an image like this:</p><p> <span class="remote-thumbnail"><span class="json">{"name":"Daylight.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/b\/bbe49deddd5cd6bddb22498d8592af54.gif","w":374,"h":249,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/b\/bbe49deddd5cd6bddb22498d8592af54"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/b/b/bbe49deddd5cd6bddb22498d8592af54-240.jpg" alt="Daylight.gif" width="240" height="159" /></span></p><p>And read the values off the graph into your own program? Do you know the size of the scale in advance? If not, is it too much effort for you to enter scales and have the program do the rest? And are your graphs coloured the same as the one shown here?</p><p>If so, it should be a relatively easy task of scanning around using getpixel, looking for the first line with a red pixel in it, then on that and each subsequent column scanning from the top to find the first red pixel, then down to the first black pixel after that to work out the height.</p><p>Then you know the height at that point (i.e. distance along y) and the number of columns across (i.e. distance along x), so if you know the scale then you can get the information you want.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Harte)</author>
		<pubDate>Fri, 05 Sep 2008 00:48:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I assume he wants to interpret these:</p><p><span class="remote-thumbnail"><span class="json">{"name":"Daylight.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/5\/f57ac34f9f398ba8d54aa670c5768a1f.jpg","w":250,"h":90,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/5\/f57ac34f9f398ba8d54aa670c5768a1f"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/f/5/f57ac34f9f398ba8d54aa670c5768a1f-240.jpg" alt="Daylight.jpg" width="240" height="86" /></span></p><p>With the intention of producing such a graph.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Fri, 05 Sep 2008 00:52:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m a science thicky — is the graph just the intensity of each column of that?</p><p>If so, then try this to convert an (r,g,b) triplet to an intensity:
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">/* GetIntensity returns a value between 0 (black) and 1 (brightest) */</span>
<span class="k1">float</span> GetIntensity<span class="k2">(</span><span class="k1">int</span> r, <span class="k1">int</span> g, <span class="k1">int</span> b<span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">return</span> <span class="n">0</span>.<span class="n">299f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>r <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">0</span>.<span class="n">587f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>g <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">0</span>.<span class="n">114f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>b <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

EDIT: that&#39;s the CCIR 601 standard conversion from R, G, B to Y, U, V but with the U and V missing. It&#39;s the way that colour television is encoded — brightness is one channel, colour information is in two other channels. That&#39;s why colour TV transmissions can be picked up and displayed by black and white televisions that were invented before colour television.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Harte)</author>
		<pubDate>Fri, 05 Sep 2008 01:11:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I assume he wants to interpret these:<br />{picture}<br />With the intention of producing such a graph.
</p></div></div><p>
I would assume that as well. Your best bet is to write the program yourself, just convert whatever formulas you have into code. It&#39;s definitely possible to create a graph like that from pixel information alone, seeing as the person who made that website did just that.<br />As an added bonus, you would be able to check the output graph of your program against the ones on that website to see if they&#39;re right!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Schyfis)</author>
		<pubDate>Fri, 05 Sep 2008 01:15:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I ran one test, and TH&#39;s code provides fairly similar graphs. The graphs on the website are a bit more exaggerated than what Open Office gave me, but that could be due to it trying to smooth out the lines.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 05 Sep 2008 03:08:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>thanks everyone, I&#39;ll try that as soon as possible</p><p>Thomas: what is the algorithm you are using to convert the colours? why are the constants the way they are? and why exactly R,G and B are in the range from 0 to 1 not from 0 to 256? i tried to look for CCIR 601 but all i found was some cumbersome theoretical information and this
</p><div class="source-code snippet"><div class="inner"><pre>Y  <span class="k3">=</span>      <span class="k2">(</span><span class="n">0</span>.<span class="n">257</span> <span class="k3">*</span> R<span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="n">0</span>.<span class="n">504</span> <span class="k3">*</span> G<span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="n">0</span>.<span class="n">098</span> <span class="k3">*</span> B<span class="k2">)</span> <span class="k3">+</span> <span class="n">16</span>
</pre></div></div><p>
which has different constants
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (hammeraxe)</author>
		<pubDate>Sun, 07 Sep 2008 23:06:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
why are the constants the way they are?
</p></div></div><p>
Because of the frequency response of the average human eye.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Sun, 07 Sep 2008 23:25:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hmmm... i tried it on two pics. one went fine but the other returned 1 for every pixel.<br />what could be wrong?</p><p>EDIT:<br />sorry for being such a noob... but what is wrong with this code? i changed something and now all i get is a black non responsive window and i cant get back <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /><br />apparently its too late for programming
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;fstream&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;iostream&gt;</span></td></tr><tr><td class="number">4</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="k1">float</span> getIntensity<span class="k2">(</span><span class="k1">int</span> r, <span class="k1">int</span> g, <span class="k1">int</span> b<span class="k2">)</span></td></tr><tr><td class="number">10</td><td><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>  <span class="k1">return</span> <span class="n">0</span>.<span class="n">299f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>r <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">0</span>.<span class="n">587f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>g <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">0</span>.<span class="n">114f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>b <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k2">}</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  </td></tr><tr><td class="number">17</td><td>  ofstream output_file<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    output_file.open <span class="k2">(</span><span class="s">"output.txt"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    </td></tr><tr><td class="number">20</td><td>    <span class="k1">int</span> r, g, b, color_value<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <span class="k1">float</span> intensity<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> spectrum<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    <span class="c">//char filename[30];</span></td></tr><tr><td class="number">24</td><td>    <span class="c">//cin&gt;&gt;filename;</span></td></tr><tr><td class="number">25</td><td>    <span class="c">//cin.get();</span></td></tr><tr><td class="number">26</td><td>    spectrum<span class="k3">=</span><a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"spectrum.bmp"</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    <span class="k1">int</span> j<span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    cin&gt;&gt;j<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    cin.get<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td><span class="c">//  for(int j=0;spectrum-&gt;h; j++) {</span></td></tr><tr><td class="number">31</td><td>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>spectrum-&gt;w<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>      color_value <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>spectrum, i, j<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>      r <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getr" target="_blank"><span class="a">getr</span></a><span class="k2">(</span>color_value<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>      g <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getg" target="_blank"><span class="a">getg</span></a><span class="k2">(</span>color_value<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>      b <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getb" target="_blank"><span class="a">getb</span></a><span class="k2">(</span>color_value<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>      </td></tr><tr><td class="number">38</td><td>      intensity<span class="k3">=</span>getIntensity<span class="k2">(</span>r,g,b<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>      </td></tr><tr><td class="number">40</td><td>      output_file<span class="k3">&lt;</span><span class="k3">&lt;</span>intensity<span class="k2">;</span></td></tr><tr><td class="number">41</td><td>      output_file<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"\n"</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>      <span class="k2">}</span>   </td></tr><tr><td class="number">43</td><td>         </td></tr><tr><td class="number">44</td><td>      output_file<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"\n"</span><span class="k2">;</span>  </td></tr><tr><td class="number">45</td><td>         </td></tr><tr><td class="number">46</td><td><span class="c">//  }</span></td></tr><tr><td class="number">47</td><td>    output_file.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>  deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span></td></tr><tr><td class="number">51</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">54</td><td>  <span class="k1">int</span> depth, res<span class="k2">;</span></td></tr><tr><td class="number">55</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>  depth <span class="k3">=</span> <a href="http://www.allegro.cc/manual/desktop_color_depth" target="_blank"><span class="a">desktop_color_depth</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>  <span class="k1">if</span> <span class="k2">(</span>depth <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> depth <span class="k3">=</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span>depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>  res <span class="k3">=</span> <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>  <span class="k1">if</span> <span class="k2">(</span>res <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">61</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>  </td></tr><tr><td class="number">65</td><td>    <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>  </td></tr><tr><td class="number">68</td><td><span class="k2">}</span></td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">71</td><td>  <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
apparently its too late for programming... good night
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (hammeraxe)</author>
		<pubDate>Mon, 08 Sep 2008 00:30:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry, I&#39;m a C++ thickie, shouldn&#39;t:
</p><div class="source-code snippet"><div class="inner"><pre>cin&gt;&gt;j<span class="k2">;</span>
cin.get<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
cause your program to wait for the user to enter something? Can anyone else confirm or deny that it is likely to work with Allegro/Windows progerams?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Harte)</author>
		<pubDate>Mon, 08 Sep 2008 16:04:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>White space isn&#39;t read in by &gt;&gt;, so it leaves the &#39;\n&#39; in the stream, which you need to remove. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Timorg)</author>
		<pubDate>Mon, 08 Sep 2008 19:45:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>the problem is that even the terminal/command line doesnt show up so i cant enter anything... all i get is a black window that can only be killed by killing the process</p><p>EDIT: never mind, I got it to work
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (hammeraxe)</author>
		<pubDate>Mon, 08 Sep 2008 20:23:36 +0000</pubDate>
	</item>
</rss>
