Hello everyone,
I have some experience with arduino but I am new to Teensy, just ordered some boards to play around
What I have in my mind for a project is a stand alone telescope autoguider (this means it should be small and light and battery has to last at least a few hours - so no beaglebone, etc). What this device does is to control a telescope based on the small changes of the position of a star on an image. It can be actually a very small image since only small changes in the of up to 5 pixels are expected.
Once I can get a position of a star on an image, other calulations and communications are easy.
I am trying to figure out if Teensy is powerful enough to take images and do some convolution on very small images.
The CMOS sensor I want to use is Aptina MT9M001 1280x1024 with 10 bit parallel output (I am limited to this one since it has to be monochrome and high sensitivity - 10 bit is also a big plus). Minimum clock frequency is 1 MHz (1 frame/s, which I would accept as usefull, but better would be if I can get 5 fps). I would probably use a 128x128 OLED display for user interfacing - black should be really black.
The idea is to read the sensor and bin the data as it is read to memory in blocks of 8x8 pixels (and use only lower 8-9 bits to avoid overflow of integers), to get a resolution of 128x160 as a preview.
How fast would Teensy be able to read parallel data and store it in a variable of the according position of the data array based on the current pixel readout position (i.e. divide the integer pixel number by 8 to get the correct positions in the 128x160 binned array and add the read integer to the one already in the memory)?
Simultanously it has to run the clock for the CMOS with 45-55% duty cycle at at least 1 MHz - 5 would be nice
Also, it should memorize the position of the pixel with the highest signal (it could find it later from RAM if not possible). And of course show the image on the display.
I guess, that if this is possible then it is feasable and I can manage to go further - select an area of the image and buffer only a 128x128 window of single pixels from the CMOS as a "zoom in", based on the preview image.
Once the exact area around a target star is selected, then it is sufficiend if only ~16x16 pixels around the target star are buffered and deconvoluted to determine the position with sub-pixel accurancy and this is done then continously.
Like I mentioned earlier, if it works this far, then other things like calibration of the image, communication, control, etc. are simple and should not be a problem (this part is something I could easily program now on an Arduino).
Thanks,
Samo
I have some experience with arduino but I am new to Teensy, just ordered some boards to play around
What I have in my mind for a project is a stand alone telescope autoguider (this means it should be small and light and battery has to last at least a few hours - so no beaglebone, etc). What this device does is to control a telescope based on the small changes of the position of a star on an image. It can be actually a very small image since only small changes in the of up to 5 pixels are expected.
Once I can get a position of a star on an image, other calulations and communications are easy.
I am trying to figure out if Teensy is powerful enough to take images and do some convolution on very small images.
The CMOS sensor I want to use is Aptina MT9M001 1280x1024 with 10 bit parallel output (I am limited to this one since it has to be monochrome and high sensitivity - 10 bit is also a big plus). Minimum clock frequency is 1 MHz (1 frame/s, which I would accept as usefull, but better would be if I can get 5 fps). I would probably use a 128x128 OLED display for user interfacing - black should be really black.
The idea is to read the sensor and bin the data as it is read to memory in blocks of 8x8 pixels (and use only lower 8-9 bits to avoid overflow of integers), to get a resolution of 128x160 as a preview.
How fast would Teensy be able to read parallel data and store it in a variable of the according position of the data array based on the current pixel readout position (i.e. divide the integer pixel number by 8 to get the correct positions in the 128x160 binned array and add the read integer to the one already in the memory)?
Simultanously it has to run the clock for the CMOS with 45-55% duty cycle at at least 1 MHz - 5 would be nice
Also, it should memorize the position of the pixel with the highest signal (it could find it later from RAM if not possible). And of course show the image on the display.
I guess, that if this is possible then it is feasable and I can manage to go further - select an area of the image and buffer only a 128x128 window of single pixels from the CMOS as a "zoom in", based on the preview image.
Once the exact area around a target star is selected, then it is sufficiend if only ~16x16 pixels around the target star are buffered and deconvoluted to determine the position with sub-pixel accurancy and this is done then continously.
Like I mentioned earlier, if it works this far, then other things like calibration of the image, communication, control, etc. are simple and should not be a problem (this part is something I could easily program now on an Arduino).
Thanks,
Samo