added a generic camera implementation which works for large images