The N900 Image Sensor class. More...
#include <Sensor.h>
Public Member Functions | |
void | capture (const FCam::Shot &) |
Queue up the next shot. | |
void | capture (const std::vector< FCam::Shot > &) |
Queue up a burst of shots. | |
void | stream (const FCam::Shot &s) |
Set a shot to be captured when the sensor isn't busy capturing anything else. | |
void | stream (const std::vector< FCam::Shot > &) |
Set a burst to be captured whenever the sensor isn't busy capturing anything else. | |
bool | streaming () |
Is there a shot or burst currently streaming? | |
void | stopStreaming () |
Stop the sensor from streaming a shot or burst set with stream. | |
void | start () |
Power up the sensor, image processor, and the FCam daemon This is done automatically when you call capture for the first time. | |
void | stop () |
Shut down the sensor, image processor, and the FCam daemon. | |
virtual int | maxExposure () const |
The maximum exposure time on the N900 is 1080842 us (just over a second) for small resolutions (height <= 960), and 2489140 us for larger resolutions (about 2.5 seconds). | |
virtual int | minExposure () const |
The minimum exposure time on the N900 is 38 us for small resolutions (height <= 960) and 66 us for larger resolutions. | |
virtual int | maxFrameTime () const |
The maximum frame time on the N900 is 1081250 us for small resolutions (just over a second), and 2490072 us for larger resolutions (about 2.5 seconds). | |
virtual int | minFrameTime () const |
The minimum frame time on the N900 is the 33414 us for smaller resolutions (height <= 960), and 77412 us for larger resolutions. | |
virtual float | maxGain () const |
The maximum gain on the N900 is 32, which can be considered ISO 3200. | |
virtual float | minGain () const |
The minimum supported gain is 1, which can be considered ISO 100. | |
virtual Size | minImageSize () const |
The smallest image size on the N900 is 160x120. | |
virtual Size | maxImageSize () const |
The largest image size on the N900 is 2592x1968 if operated in RAW mode. | |
virtual int | maxHistogramRegions () const |
The maximum supported number of histogram regions on the N900 is 4. | |
int | rollingShutterTime (const Shot &) const |
The N900 has a rolling shutter time of around 33ms when operating at resolutions with height <= 960, and 77ms for resolutions above that size. | |
int | framesPending () const |
How many frames are in the frame queue (i.e., how many times can you call getFrame before it blocks? | |
int | shotsPending () const |
How many shots are pending. | |
unsigned short | minRawValue () const |
The sensor on the N900 returns 10-bit raw values, but not the full range. | |
unsigned short | maxRawValue () const |
The largest value to expect when in raw mode. | |
BayerPattern | bayerPattern () const |
The N900 uses a bayer sensor with top 2x2 pixels GRBG. | |
const std::string & | manufacturer () const |
The camera's manufacturer. | |
const std::string & | model () const |
The camera's model. | |
virtual void | rawToRGBColorMatrix (int kelvin, float *matrix) const |
Produce a 3x4 affine matrix that maps from sensor RGB to linear-luminance sRGB at the given white balance. | |
FCam::N900::Frame | getFrame () |
Get the next frame. |
It takes vanilla shots and returns vanilla frames. See the base class documentation for the semantics of its methods.
The image sensor on the N900 is natively 2592x1968, and so this is the best RAW resolution to stream. N900 can also capture 648x492 in RAW by "binning" (averaging down) by a factor of four, and 1296x984 by binning with a factor of two. These modes are not recommended, because they slightly break the assumptions underlying most demosaicing algorithms.
In UYVY mode, the N900 can stream at a wide variety of resolutions. This is down by streaming at a compatible raw resolution and then resizing the resulting images in hardware. All resolutions incur some degree of resampling. If this bothers you, stream RAW and do the demosaicing using demosaic. The hardware resizer in the OMAP3430 is quite good however. Recommended resolutions to use in UYVY mode include 640x480, 1280x960, 2560x1920, and 2576x1944 (which is not quite 4:3).
Definition at line 40 of file Sensor.h.
void FCam::N900::Sensor::capture | ( | const FCam::Shot & | ) | [virtual] |
Queue up the next shot.
Makes a deep copy of the argument.
Implements FCam::Sensor.
Definition at line 42 of file Sensor.cpp.
void FCam::N900::Sensor::capture | ( | const std::vector< FCam::Shot > & | ) | [virtual] |
Queue up a burst of shots.
Makes a deep copy of the argument.
Implements FCam::Sensor.
Definition at line 61 of file Sensor.cpp.
void FCam::N900::Sensor::stream | ( | const FCam::Shot & | s | ) | [virtual] |
Set a shot to be captured when the sensor isn't busy capturing anything else.
Makes a deep copy of the argument.
Implements FCam::Sensor.
Definition at line 86 of file Sensor.cpp.
void FCam::N900::Sensor::stream | ( | const std::vector< FCam::Shot > & | ) | [virtual] |
Set a burst to be captured whenever the sensor isn't busy capturing anything else.
Makes a deep copy of the argument.
Implements FCam::Sensor.
Definition at line 98 of file Sensor.cpp.
void FCam::N900::Sensor::stopStreaming | ( | ) | [virtual] |
Stop the sensor from streaming a shot or burst set with stream.
The sensor will continue to run. To turn off the sensor completely see Sensor::stop
Implements FCam::Sensor.
Definition at line 119 of file Sensor.cpp.
void FCam::N900::Sensor::start | ( | ) | [virtual] |
Power up the sensor, image processor, and the FCam daemon This is done automatically when you call capture for the first time.
Implements FCam::Sensor.
Definition at line 30 of file Sensor.cpp.
void FCam::N900::Sensor::stop | ( | ) | [virtual] |
Shut down the sensor, image processor, and the FCam daemon.
Call this to save power and/or processing cycles while your program is doing something unrelated to taking pictures.
Implements FCam::Sensor.
Definition at line 36 of file Sensor.cpp.
virtual int FCam::N900::Sensor::maxExposure | ( | ) | const [inline, virtual] |
The maximum exposure time on the N900 is 1080842 us (just over a second) for small resolutions (height <= 960), and 2489140 us for larger resolutions (about 2.5 seconds).
Implements FCam::Sensor.
virtual int FCam::N900::Sensor::minExposure | ( | ) | const [inline, virtual] |
The minimum exposure time on the N900 is 38 us for small resolutions (height <= 960) and 66 us for larger resolutions.
Implements FCam::Sensor.
virtual int FCam::N900::Sensor::maxFrameTime | ( | ) | const [inline, virtual] |
The maximum frame time on the N900 is 1081250 us for small resolutions (just over a second), and 2490072 us for larger resolutions (about 2.5 seconds).
Implements FCam::Sensor.
virtual int FCam::N900::Sensor::minFrameTime | ( | ) | const [inline, virtual] |
The minimum frame time on the N900 is the 33414 us for smaller resolutions (height <= 960), and 77412 us for larger resolutions.
Implements FCam::Sensor.
virtual float FCam::N900::Sensor::maxGain | ( | ) | const [inline, virtual] |
The maximum gain on the N900 is 32, which can be considered ISO 3200.
Implements FCam::Sensor.
virtual float FCam::N900::Sensor::minGain | ( | ) | const [inline, virtual] |
The minimum supported gain is 1, which can be considered ISO 100.
Reimplemented from FCam::Sensor.
virtual Size FCam::N900::Sensor::maxImageSize | ( | ) | const [inline, virtual] |
The largest image size on the N900 is 2592x1968 if operated in RAW mode.
In UYVY, the largest image size you should request is 2560x1920
Reimplemented from FCam::Sensor.
virtual int FCam::N900::Sensor::maxHistogramRegions | ( | ) | const [inline, virtual] |
The maximum supported number of histogram regions on the N900 is 4.
Reimplemented from FCam::Sensor.
int FCam::N900::Sensor::rollingShutterTime | ( | const Shot & | s | ) | const [virtual] |
The N900 has a rolling shutter time of around 33ms when operating at resolutions with height <= 960, and 77ms for resolutions above that size.
Implements FCam::Sensor.
Definition at line 141 of file Sensor.cpp.
int FCam::N900::Sensor::shotsPending | ( | ) | const [virtual] |
How many shots are pending.
This includes frames in the frame queue, shots currently in the pipeline, and shots in the capture queue. Stop streaming (stopStreaming) and get frames (getFrame) until this hits zero to completely drain the system.
Implements FCam::Sensor.
Definition at line 173 of file Sensor.cpp.
unsigned short FCam::N900::Sensor::maxRawValue | ( | ) | const [virtual] |
The largest value to expect when in raw mode.
Implements FCam::Sensor.
Definition at line 178 of file Sensor.cpp.
const std::string & FCam::N900::Sensor::manufacturer | ( | ) | const [virtual] |
The camera's manufacturer.
(e.g. Canon).
Implements FCam::Sensor.
Definition at line 182 of file Sensor.cpp.
const std::string & FCam::N900::Sensor::model | ( | ) | const [virtual] |
The camera's model.
Should also include manufacturer (e.g. Canon 400D).
Implements FCam::Sensor.
Definition at line 184 of file Sensor.cpp.
void FCam::N900::Sensor::rawToRGBColorMatrix | ( | int | kelvin, | |
float * | matrix | |||
) | const [virtual] |
Produce a 3x4 affine matrix that maps from sensor RGB to linear-luminance sRGB at the given white balance.
Given in row-major order.
Implements FCam::Sensor.
Definition at line 186 of file Sensor.cpp.
Frame FCam::N900::Sensor::getFrame | ( | ) |
Get the next frame.
We promise that precisely one frame will come back per time capture is called. A reference-counted shared pointer object is returned, so you don't need to worry about deleting it.
Reimplemented from FCam::Sensor.
Definition at line 125 of file Sensor.cpp.