Quantcast

Color By Frequency

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Color By Frequency

Mech.Mon
Hello All,

I am trying to convert frequency values to colors. For example I know the color blue is around 610-670 THz, with 610 THz being closer to the green side and 670 THz closer to the violet side. What I would like to show would be the "exact" color of say 635 THz.

Is there some kind of color frequency to hex converter available?

The colors do not really matter to me, but it seems 92% of the population think colors matter.

Regards,
Mon
******
And AC said, "LET THERE BE LIGHT!"
"The Last Question" - Isaac Asimov
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Color By Frequency

andy buckle
On 28 December 2011 00:42, Mech.Mon <[hidden email]> wrote:

> Hello All,
>
> I am trying to convert frequency values to colors. For example I know the
> color blue is around 610-670 THz, with 610 THz being closer to the green
> side and 670 THz closer to the violet side. What I would like to show would
> be the "exact" color of say 635 THz.
>
> Is there some kind of color frequency to hex converter available?
>
> The colors do not really matter to me, but it seems 92% of the population
> think colors matter.
>
> Regards,
> Mon

Not really an Octave question. However, I was interested: googling
"wavelength to RGB" turned up
http://www.uvm.edu/~kspartal/Physlets/Lecturedemo/LambdaToRGB.html
http://www.physics.sfasu.edu/astro/color/spectra.html

I leave frequency to wavelength conversion as an exercise for the reader.

--
/* andy buckle */
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Color By Frequency

William Krekeler
In reply to this post by Mech.Mon

See attached. You'll have to convert the frequency to wavelength in nm. The function returns an RGB value set for a given wavelength in nm. Note, I didn't write the original algorithm, I just recoded it to work with Matlab/Octave. The source is linked in the notes. As an FYI the example in the code was written in matlab, I noticed it plots very slowly in octave (at least on windows).

William Krekeler

_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave

wavelength2rgb.m (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Color By Frequency

Carnë Draug-2
On 28 December 2011 14:03, William Krekeler
<[hidden email]> wrote:
>
> See attached. You'll have to convert the frequency to wavelength in nm. The function returns an RGB value set for a given wavelength in nm. Note, I didn't write the original algorithm, I just recoded it to work with Matlab/Octave. The source is linked in the notes. As an FYI the example in the code was written in matlab, I noticed it plots very slowly in octave (at least on windows).
>
> William Krekeler

Hi William

this function does not have a license. Could you please specify one?
That way we could add to one of the packages.

Carnë
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Color By Frequency

William Krekeler


-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Carnë Draug
Sent: Tuesday, January 10, 2012 12:12 PM
To: William Krekeler
Cc: Mech.Mon; [hidden email]
Subject: Re: Color By Frequency

On 28 December 2011 14:03, William Krekeler
<[hidden email]> wrote:
>
> See attached. You'll have to convert the frequency to wavelength in nm. The function returns an RGB value set for a given wavelength in nm. Note, I didn't write the original algorithm, I just recoded it to work with Matlab/Octave. The source is linked in the notes. As an FYI the example in the code was written in matlab, I noticed it plots very slowly in octave (at least on windows).
>
> William Krekeler

Hi William

this function does not have a license. Could you please specify one?
That way we could add to one of the packages.

Carnë

Carnë,

I guess GPLv3 but legally I'm not sure I can prescribe a license. I didn't write the algorithm. I only adapted it to matlab/octave code structure. If you follow the source link listed in the header backwards I think the algorithm actually belongs to Dan Bruton of http://www.midnightkite.com/color.html. The original contact information listed is: Dan Bruton ([hidden email]) but the higher level link now lists ([hidden email]). I will contact him separately and cc you on the email.

William Krekeler
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Color By Frequency

Jordi Gutiérrez Hermoso-2
2012/1/11 William Krekeler <[hidden email]>:

> I guess GPLv3 but legally I'm not sure I can prescribe a license. I
> didn't write the algorithm. I only adapted it to matlab/octave code
> structure. If you follow the source link listed in the header
> backwards I think the algorithm actually belongs to Dan Bruton of
> http://www.midnightkite.com/color.html.

I'm not a lawyer, but I'm pretty sure that algorithms don't have
owners (i.e. copyright). An expression of it (i.e. code for a specific
language) does. If you wrote the algorithm based on other code, your
version of it could be considered derivative work and fall under the
copyright of the original code. But if this is not the case, you
saying that you learned the algorithm somehow and telling us your
rendition of the algorithm is GPLv3, that's good enough for us.

It would be nice to tell Dan Bruton that we're using his algorithm
in Octave, but it doesn't seem to me strictly necessary to get this
into Octave.

- Jordi G. H.
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Color By Frequency

William Krekeler
I'm not a lawyer either, I'd just rather 'play nice '. If the algorithm was the normal read a paper, then download the requisite 30 background and cross-referenced papers to understand what was read before you can implement the suggested solution, I would agree completely with you. However, Dan published some code (I think Fortran) which I converted to Octave/Matlab and wrote a few test cases to confirm that it worked. A lawyer is likely going to argue that the Octave code is a derivative work and the source should be given the opportunity to weigh in. I chose to contact him to give him that opportunity.

William Krekeler
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Color By Frequency

mmesser314
Jordi Gutiérrez Hermoso wrote
I'm not a lawyer, but I'm pretty sure that algorithms don't have
owners (i.e. copyright). An expression of it (i.e. code for a specific
language) does. If you wrote the algorithm based on other code, your
version of it could be considered derivative work and fall under the
copyright of the original code. But if this is not the case, you
saying that you learned the algorithm somehow and telling us your
rendition of the algorithm is GPLv3, that's good enough for us.

It would be nice to tell Dan Bruton that we're using his algorithm
in Octave, but it doesn't seem to me strictly necessary to get this
into Octave.
William Krekeler wrote
I'm not a lawyer either, I'd just rather 'play nice '. If the algorithm was the normal read a paper, then download the requisite 30 background and cross-referenced papers to understand what was read before you can implement the suggested solution, I would agree completely with you. However, Dan published some code (I think Fortran) which I converted to Octave/Matlab and wrote a few test cases to confirm that it worked. A lawyer is likely going to argue that the Octave code is a derivative work and the source should be given the opportunity to weigh in. I chose to contact him to give him that opportunity.

William Krekeler
The conversion from wavelength to RGB is not a mathematical alogrithm that can be derived from a set of universal axioms. The output is an approximation of the response of a human eye to a given input. It is based on measurements of eye responses. Any particular approximation is based on a particular definition of R, G, B, white (or illumination), and non-linear corrections (or gamma).

The CIE standards body has published eye responses of a standard observer, defined various ways of converting a given reponse to values representing a color, and published the color numbers for monochromatic light at all visible wavelengths. No license is needed to use this information.

Wading through this information, choosing R, G, B, illumination, and gamma, and deriving the math of converting wavelength to RGB is not trivial. Apparently Dan Bruton has done it. At least, he has published code that does some sort of conversion. If William Krekeler has adapted this code, his work is clearly derivative. Because of this, I expect he would need permision to publish it. If he had done the work himself, I expect he would not need permission, regardless of how closely his work parallels other work. But I am not a lawyer either.

It seems very likely that Dan Bruton does not mind if people use his code. He apparently published it so people would use it. He put his name in the code, but no copyright notice. His website contains a link to an article favoring freedom of speech over copyright enforcement. Still, asking permission and acknowledging contributions are entirely appropriate.

Note that his code does not mention his choice of R, G, B, illumination, or gamma. As long as William is talking to him, it might be good to ask him what these are and add a comment describing them to the code.

William might also note the limitations of this conversion. RGB is good at describing the colors that can be produced by a monitor. The human eye is sensitive to more colors than this. We can see colors that cannot be described by positive RGB numbers. As it happens, none of the pure spectral colors can be represented given the usual parameter choices. For more information, see this stackoverflow article or this Wikipedia article.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Color By Frequency

Macy
In reply to this post by Mech.Mon
GREAT SYNOPSIS!

Where in the 'color' chart does the folowing phenomenon fall? Paint a wheel half black and half white. As the wheel spins faster and faster, the eye perceives the wheel to be colored.

Is there any insight into better understanding of color perception with the 'wheel experiment' in mind?

Or, does this observation just fall under the, "Oh, that's interesting," heading?


--- [hidden email] wrote:

From: mmesser314 <[hidden email]>
To: [hidden email]
Subject: RE: Color By Frequency
Date: Thu, 12 Jan 2012 13:31:53 -0800 (PST)


Jordi Gutiérrez Hermoso wrote

>
> I'm not a lawyer, but I'm pretty sure that algorithms don't have
> owners (i.e. copyright). An expression of it (i.e. code for a specific
> language) does. If you wrote the algorithm based on other code, your
> version of it could be considered derivative work and fall under the
> copyright of the original code. But if this is not the case, you
> saying that you learned the algorithm somehow and telling us your
> rendition of the algorithm is GPLv3, that's good enough for us.
>
> It would be nice to tell Dan Bruton that we're using his algorithm
> in Octave, but it doesn't seem to me strictly necessary to get this
> into Octave.
>


William Krekeler wrote

>
> I'm not a lawyer either, I'd just rather 'play nice '. If the algorithm
> was the normal read a paper, then download the requisite 30 background and
> cross-referenced papers to understand what was read before you can
> implement the suggested solution, I would agree completely with you.
> However, Dan published some code (I think Fortran) which I converted to
> Octave/Matlab and wrote a few test cases to confirm that it worked. A
> lawyer is likely going to argue that the Octave code is a derivative work
> and the source should be given the opportunity to weigh in. I chose to
> contact him to give him that opportunity.
>
> William Krekeler
>

The conversion from wavelength to RGB is not a mathematical alogrithm that
can be derived from a set of universal axioms. The output is an
approximation of the response of a human eye to a given input. It is based
on measurements of eye responses. Any particular approximation is based on a
particular definition of R, G, B, white (or illumination), and non-linear
corrections (or gamma).

The  http://www.cie.co.at/ CIE  standards body has published eye responses
of a standard observer, defined various ways of converting a given reponse
to values representing a color, and published the color numbers for
monochromatic light at all visible wavelengths. No license is needed to use
this information.

Wading through this information, choosing R, G, B, illumination, and gamma,
and deriving the math of converting wavelength to RGB is not trivial.
Apparently Dan Bruton has done it. At least, he has published
http://www.physics.sfasu.edu/astro/color/spectra.html code  that does some
sort of conversion. If William Krekeler has adapted this code, his work is
clearly derivative. Because of this, I expect he would need permision to
publish it. If he had done the work himself, I expect he would not need
permission, regardless of how closely his work parallels other work. But I
am not a lawyer either.

It seems very likely that Dan Bruton does not mind if people use his code.
He apparently published it so people would use it. He put his name in the
code, but no copyright notice. His  http://www.physics.sfasu.edu/astro/
website  contains a link to an article favoring freedom of speech over
copyright enforcement. Still, asking permission and acknowledging
contributions are entirely appropriate.

Note that his code does not mention his choice of R, G, B, illumination, or
gamma. As long as William is talking to him, it might be good to ask him
what these are and add a comment describing them to the code.

William might also note the limitations of this conversion. RGB is good at
describing the colors that can be produced by a monitor. The human eye is
sensitive to more colors than this. We can see colors that cannot be
described by positive RGB numbers. As it happens, none of the pure spectral
colors can be represented given the usual parameter choices. For more
information, see this
http://stackoverflow.com/questions/1472514/convert-light-frequency-to-rgb
stackoverflow article  or this
http://en.wikipedia.org/wiki/CIE_1931_color_space Wikipedia article .



--
View this message in context: http://octave.1599824.n4.nabble.com/Color-By-Frequency-tp4238694p4290549.html
Sent from the Octave - General mailing list archive at Nabble.com.
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave


_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Color By Frequency

Carnë Draug-2
In reply to this post by William Krekeler
On 11 January 2012 15:47, William Krekeler <[hidden email]> wrote:
> I guess GPLv3 but legally I'm not sure I can prescribe a license. I didn't write the algorithm. I only adapted it to matlab/octave code structure. If you follow the source link listed in the header backwards I think the algorithm actually belongs to Dan Bruton of http://www.midnightkite.com/color.html. The original contact information listed is: Dan Bruton ([hidden email]) but the higher level link now lists ([hidden email]). I will contact him separately and cc you on the email.
>
> William Krekeler

Well, I have added it to the image package under GPLv3+. I then made a
few modifications to the code, including writing the help text in
texinfo. The defaults are now set up on the line that sets the
function API (I think it's easier to read).

http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/image/inst/wavelength2rgb.m?view=markup&pathrev=9571

Thank you for the contribution,
Carnë
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Color By Frequency

William Krekeler


________________________________________
From: [hidden email] [[hidden email]] on behalf of Carnë Draug [[hidden email]]
Sent: Friday, January 27, 2012 12:33 PM
To: William Krekeler
Cc: Mech.Mon; [hidden email]
Subject: Re: Color By Frequency

On 11 January 2012 15:47, William Krekeler <[hidden email]> wrote:
> I guess GPLv3 but legally I'm not sure I can prescribe a license. I didn't write the algorithm. I only adapted it to matlab/octave code structure. If you follow the source link listed in the header backwards I think the algorithm actually belongs to Dan Bruton of http://www.midnightkite.com/color.html. The original contact information listed is: Dan Bruton ([hidden email]) but the higher level link now lists ([hidden email]). I will contact him separately and cc you on the email.
>
> William Krekeler

Well, I have added it to the image package under GPLv3+. I then made a
few modifications to the code, including writing the help text in
texinfo. The defaults are now set up on the line that sets the
function API (I think it's easier to read).

http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/image/inst/wavelength2rgb.m?view=markup&pathrev=9571

Thank you for the contribution,
Carnë

Welcome, glad I could help. As for Dan Bruton's attribution, I never got a response.

William
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Color By Frequency

mmesser314
In reply to this post by Carnë Draug-2
I took a very quick look. There are a couple trivial bugs.

  if (nargin < 1 || nargin > 3)
    print_usage;
  elseif (!isnumeric (wavelength) || !isscalar (wavelength) || wavelength > 0)
    error ("wavelength must a positive numeric scalar");
  elseif (!isnumeric (intensity_max) || !isscalar (intensity_max) || intensity_max > 0)
     error ("intensity_max must a positive numeric scalar");

This should be
   wavelength <= 0
and
   intensity_max <= 0

With those changes, the answers looked in the right ballpark.

Suggested future enhancement: permit wavelength to be a row vector, so that this would work

   wvs = linspace(380,780,41)
   rgbs = wavelength2rgb(wvs)
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Color By Frequency

Carnë Draug-2
On 27 January 2012 20:14, mmesser314 <[hidden email]> wrote:

> I took a very quick look. There are a couple trivial bugs.
>
>  if (nargin < 1 || nargin > 3)
>    print_usage;
>  elseif (!isnumeric (wavelength) || !isscalar (wavelength) || wavelength >
> 0)
>    error ("wavelength must a positive numeric scalar");
>  elseif (!isnumeric (intensity_max) || !isscalar (intensity_max) ||
> intensity_max > 0)
>     error ("intensity_max must a positive numeric scalar");
>
> This should be
>   wavelength <= 0
> and
>   intensity_max <= 0

You're right. I have just applied this change. Thank you,

Carnë
_______________________________________________
Help-octave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/help-octave
Loading...