# Analysis of CCD used in ES-1000

[Japanese] [English]

## ICX054AK?

As I searched CCD information on WWW, I was able to find a page of data sheets of CCD area sensors on the WWW server of Sony America. Among various CCDs shown here, ICX054AK is 1/3 inch large and has 270K pixels which matches with the catalogue spec of ES-1000/DC-20. So I wrote a decoder expecting that this CCD is used in ES-1000/DC-20. As it worked properly, I assume here that ICX054AK is the CCD used.

I would sincerely welcome objections to this assumption if you will name the alternative CCD :-).

## Summary of Specs

• Optical size: 1/3 inch
• Chip size: 6.0mm(H) x 4.96mm(V)
• Unit cell size: 9.6micron(H) x 7.5micron(V)
• Number of effective pixels: 510(H) x 492(V) (approx. 250K)
• Number of total pixels: 537(H) x 505(V) (approx. 270K)
• Ye, Cy, Mg, G complementary color mosaic filter
Detailed specs are in the data sheet in PDF format.

## Output format

 Cy Ye Cy Ye G Mg G Mg Cy Ye Cy Ye Mg G Mg G
Physically, this CCD consists of the color filter array of Ye (yellow), Cy (cyan), Mg (magenta), and G (green). They are aligned as shown left.

 Cy+G Ye+Mg Cy+G Ye+Mg Cy+Mg Ye+G Cy+Mg Ye+G
But we can't obtain data of each pixel separately; actual output data is calculated by adding two adjacent lines vertically as shown left.

 2G+B 2R+G+B 2G+B 2R+G+B R+G+2B R+2G R+G+2B R+2G
We can represent this output in RGB as shown left by substituting Ye = R + G, Cy = G + B, and Mg = R + B.

This format looks rather complicated; the point is that we can obtain 2R+3G+2B (which can be used as luminosity) by adding any two horizontally adjacent signals.

## How to decode this output

After trials and errors, I found that following principles should be kept:
• To obtain RGB value, three of the four CCD signals (i.e., 2G+B, 2R+G+B, R+G+2B, and R+2G) are needed.
• Each pixel has only one signal; other two signals should be approximated from signals on pixels up, down, left, and right.
• Transition of colours between adjacent pixels is continuous.
• Luminosity, which can be obtained relatively correctly, is fixed first; colours are calculated based on it it.
Based on these principles, cmttoppm decodes CCD data as follows (a sample data is attached in which signal 1 is 2R+G+B, signal 2 is 2G+B, and signal 3 is R+2G):
 2G+B=45 2R+G+B=108 2G+B=53
1. CCD data itself is used as signal 1.
2. Calculate signal 2 by horizontal interpolation.
 2G+B=452R+G+B=90.0 2R+G+B=1082G+B=49.0 2G+B=532R+G+B=110.0
• Use average of signal 2 of the pixel left and that of pixel right as the initial value of signal 2 of this pixel.
• Use average of signal1 / signal 2 of the pixel left and that of pixel right as signal 1 / signal 2 of this pixel, and derive signal 2 of this pixel from that value. This operation is repeated several times.  2G+B=452R+G+B=90.0(2R+G+B)/(2G+B)=2.00 2R+G+B=1082G+B=52.9(2R+G+B)/(2G+B)=2.04 2G+B=532R+G+B=110.0(2R+G+B)/(2G+B)=2.08
3. Calculate signal 3 by vertical interpolation.
• Use average of signal3 / luminosity of the pixel up and that of pixel down as signal 3 / luminosity of this pixel, and derive signal 3 of this pixel from that value.
 R+2G=45R+G+2B=90.0(R+2G)/((R+2G)+(R+G+2B))=0.33 2R+G+B=1082G+B=52.9 R+2G=46R+G+2B=72.0(R+2G)/((R+2G)+(R+G+2B))=0.39
->  R+2G=45R+G+2B=90.0(R+2G)/((R+2G)+(R+G+2B))=0.33 2R+G+B=1082G+B=52.9R+2G=57.9 (R+2G)/(2R+G+B)+(2G+B))=0.36 R+2G=46R+G+2B=72.0(R+2G)/((R+2G)+(R+G+2B))=0.39
4. Generate R, G, and B from signal 1, 2, and 3.
 2R+G+B=1082G+B=52.9R+2G=57.9
->
 R=33.6G=12.1B=28.7
5. Perform several postprocessing operations including Gamma correction.
Critics and improvements to this method is welcome.