Clocking a CMOS imager - Is this feasible?

I'm in the planning stage of a project, trying to figure out whether it's feasible to clock a CMOS imager with any of the Arduinos. When I say CMOS imager, I'm not talking about one of the system-on-a-chip cameras in a mobile phone. I'm talking about a detector with 8 column address lines, 8 row address lines, a reset, clamp, ADC start convert, etc., which all need to be set in order for the thing to output an analog pixel level, that will be digitized off-chip. Of course there are boards that can do this (non-programmable, whole frame reads), and ASICs that can do this better (read out multiple sub-frames), but I'm interested in doing it on a low-cost, programmable, open platform like Arduino. The end goal is to give the the microcontroller a list of sub-frames and have it address them at ~50+ kHz pixel rates.

While the digital outs can be controlled with digitalWrite(), this would be very slow and I'm not sure how I could get the digital outs to sync up because of latency. Are there better ways to control the digital outs? The timer outputs look attractive, but can they be used for anything other than a simple clock line or a PWM?

Yes this is possible.

While the digital outs can be controlled with digitalWrite(), this would be very slow

If you are sure about this you can always use direct port output:-
http://www.arduino.cc/en/Reference/PortManipulation

You can use direct port manipulation to set output bits high & low.
50KHz - 16 MHz - 64 pixels -
Do some math - (1/50000)/(1/16000000)/64 = 5 clock cycles/pixel, you may have to lower your expectations!

Direct port manipulation looks interesting. Thanks for that.

I have no problem lowing my expectations. I think I'll just push it as fast as it can go and see what happens.

So if a loop addresses one pixel every time it runs, I should be able to estimate the max pixel address rate based on the number of clock cycles that it takes to execute the loop. I know this depends on how much stuff is in the loop, but if the loop takes 1000-2000 cycles, then I should be able to get 1/((1/16MHz)*1000 cycles) =~16,000 pixels per second.

These guys have been messing with cranking up the ADC speed (Due A/D Speed Question. - Science and Measurement - Arduino Forum) and have been getting hundreds of kHz sample rates, so I might be able to read the sensor as well with a MEGA.

Robert it depends on how you read:-

The end goal is to give the the microcontroller a list of sub-frames and have it address them at ~50+ kHz pixel rates.

I took that to mean the pixel rate was 50KHz not the frame rate for all 64 pixels was to be at 50KHz frames / second.

Sorry for the ambiguity. You were correct. When I said 8 row lines and 8 column lines, I didn't mean that the array was 8x8 pixels. I meant that there are 8 lines for addressing a column selector mux with an 8 bit number. Arrays up to 256x256 can be addressed in this way.

When I said pixel rate I meant how fast the electronics can go from one pixel to the next, not whole frames.

So a 256 X 256 is 65536 pixels, at 50KHz pixels that gives about one frame a second, yes that is perfectly possible with a Uno providing you are not doing anything with the data.

Either way, very slow.