View Javadoc

1   /**
2    * 
3    */
4   package de.desy.acop.video.analysis;
5   
6   import java.awt.Color;
7   
8   /**
9    * </code>LuminosityColorDecoder</code> transforms the</code>TYPE_INT_ARGB</code> 
10   * integer color code into a normalized sum of red, green and blue components by
11   * calculating luminosity as Y = 0.299*R + 0.587*G + 0.114*B.
12   * 
13   * @author Tilen Kusterle, Cosylab
14   *
15   */
16  public class LuminosityColorDecoder implements ColorDecoder {
17  
18  	/* (non-Javadoc)
19  	 * @see de.desy.acop.video.analysis.ColorDecoder#transform(int)
20  	 */
21  	@Override
22  	@Deprecated
23  	public double transform(int code) {
24  		Color c = new Color(code, true);
25  		return 0.299*c.getRed()+0.587*c.getGreen()+0.114*c.getBlue();
26  	}
27  
28  	/*
29  	 * (non-Javadoc)
30  	 * @see de.desy.acop.video.analysis.ColorDecoder#transform(int[])
31  	 */
32  	@Override
33  	public double[] transform(int[] data) {
34  		int length = data.length;
35  		double[] ret = new double[length];
36  		int code;
37  		for (int i = 0; i < length; i++) {
38  			code = data[i];
39  			ret[i] = 0.299*((code >> 16) & 0xFF) + 0.587*((code >> 8) & 0xFF)
40  					+ 0.114*((code >> 0) & 0xFF);
41  		}
42  		return ret;
43  	}
44  }