Commit Graph

107 Commits

Author SHA1 Message Date
Kwabena W. Agyeman
046a2e1825 Restore MAIN_FB() size on snapshot()
This fix allows "copy_to_fb" with a different resolution than the
current frame buffer to work. It also allows the frame buffer to be
resized, etc. In particular, the pooling methods I added for optical
flow work again... you'll also be able to scale the frame buffer too.
2017-12-25 18:00:58 -05:00
iabdalkader
8160e9120e Add MT9V034 initial support. 2017-10-24 03:07:17 +02:00
iabdalkader
04a14a290f Rename SCCB/I2C driver to cambus. 2017-10-18 23:14:14 +02:00
iabdalkader
20c8b66789 Implement sensor soft sleep. 2017-10-05 01:25:49 +02:00
iabdalkader
35ab0a26fc Remove invalid resolutions.
* Fix issue #261
2017-08-29 01:54:43 +02:00
iabdalkader
db4d47c67f Initialize FB Enabled flag. 2017-08-08 18:56:11 +02:00
Kwabena W. Agyeman
7ec990223f Apply requested fixes. 2017-06-11 13:47:44 -04:00
Kwabena W. Agyeman
f9e124f8cd Refactor framebuffer
Moved structs along with image copying code from sensor into
framebuffer.c so that we can use the new copy_fb_to_jpeg_fb() function
in the image library for methods with "copy_to_fb" so that they update
the IDE preview when called.

Also, I noticed that the MAIN_FB_SIZE() value is not calculated
correctly in all cases. Will fix later. Trying to keep this commit clean
for just the refactoring.

All changes have been tested. Too.
2017-06-10 23:31:42 -04:00
Kwabena W. Agyeman
4d6612609e Add more resolution combinations.
With the new frame rate speed increase folks will be asking for smaller
resolutions to get 85 FPS or so when running an algorithm. This commit
adds all scaled modes of frame sizes we already support. We should be
good now on frame sizes for the present and future now.

Todo - skip frames does not run long enough anymore for auto white
balance and gain to stablize before they are turned off in some scripts.
This needs to be adjusted.
2017-05-26 20:09:59 -04:00
iabdalkader
666ee15992 Enable VSYNC output on IO pin for synchronization. 2017-05-21 22:23:53 +02:00
iabdalkader
11abb5221b Fix framebuffer size checks.
* Delay the FB size check and corrections to snapshot(). If the frame doesn't
  fit FB it gets cropped for GS, or the sensor is switched to bayer for RGB.
2017-03-12 19:07:26 +02:00
iabdalkader
b0ed5bb7af Add Bayer sensor support. 2017-03-12 03:38:26 +02:00
Kwabena W. Agyeman
9efd7474ae Fix compress and compressed. 2017-01-11 21:21:04 -05:00
iabdalkader
1b22a29612 Add set_gain/exposure/whitebalance functions.
* Add functions to disable auto functions control and set manual values.
2016-12-29 03:39:06 +02:00
iabdalkader
fd384bf1b0 Export OV7725's lens shading correction function. 2016-12-25 02:45:05 +02:00
iabdalkader
0f9456fd37 Use WFI while waiting for snapshots. 2016-12-13 21:57:10 +02:00
iabdalkader
3e41450d97 Add support for OpenMV3 2016-11-27 19:32:09 +02:00
iabdalkader
a3a1f0cfb9 Disable line interrupt.
* saves the overhead and fixes the additional line generated at the end of the frame.
2016-11-14 23:42:51 +02:00
iabdalkader
5238d55042 Use JPEG_SUBSAMPLE_1x1 for 60 quality. 2016-08-22 21:16:28 +02:00
iabdalkader
7a7fcf73e7 Add OMV_XCLK_SOURCE to board config
* Use MCO output to drive sensor clock on OMV2
2016-08-17 19:40:29 +02:00
iabdalkader
abace9e4fe Crop resolutions higher than OMV_MAX_RAW_FRAME. 2016-08-16 12:48:47 +02:00
iabdalkader
2affb38a22 Fix DCMI/DMA transfer size overflow. 2016-08-16 12:47:20 +02:00
iabdalkader
839523bd90 Fix DCMI init struct for OMV7. 2016-08-16 12:46:40 +02:00
iabdalkader
d9c8b1535d Reduce IDE JPEG quality. 2016-08-15 01:11:10 +02:00
iabdalkader
26909490c7 Fix adaptive JPEG quality. 2016-08-14 14:26:30 +02:00
iabdalkader
4211e37c53 Remove JPEG enable/disable USBDBG command. 2016-08-14 00:45:34 +02:00
iabdalkader
1cbcb7e434 Add M7 support 2016-08-12 22:43:50 +02:00
iabdalkader
9db7b8113c Set JPEG quality based on frame size.
* Use higher quality/subsampling for small resolutions.
2016-07-03 21:33:19 +02:00
iabdalkader
0575314ab3 Make image pool work on arg image without changing FB. 2016-06-20 22:25:25 +02:00
iabdalkader
02088a14e1 Rename set_binning to set_windowing. 2016-06-20 22:24:00 +02:00
iabdalkader
968bfde8f2 Add new smaller resolutions.
* Add 40x30, 64x32 and 64x64
2016-06-19 21:27:09 +02:00
Kwabena W. Agyeman
7af818c4d8 Finished up optical flow code.
* Added pooling functions to make getting small images easy. set_binning
works too... but, it zooms in way to much. pooling functions aout you to
shrink the image while not zooming in.

* To make the pooling functions easy to use I created a version that
pools the image out of place and one that pools the image in place. The
inplace pooling function can work on the frame buffer (see edits to
sensor.c)

* I added the code to do hann windowing to the FFT lib. However, I
commented it out after it improved performance by basically zero.
Specialized windowing stuff will only come in handy for folks trying to
tune their algorithm... not in general for everything.

* I added subpixel resolution for the phase correlation code. You can
now track the image movement really precisely. Additionally, I fixed up
the displacement outputs to give expected results. I also added a QoR
output for the displacement code so that you can know when the results
are bad.

* Finally, an example script has been added to show off the features.
2016-06-18 23:05:44 -04:00
iabdalkader
15ba6a4927 Enable binning when resolution is higher VGA. 2016-06-03 23:05:51 +02:00
iabdalkader
440c9dc8bc Implement binning. 2016-06-03 23:01:28 +02:00
iabdalkader
2e2c563227 Re-implement line filters with Python callbacks. 2016-05-16 14:22:30 +02:00
iabdalkader
9a5992c03e Update code for MP v1.8 2016-05-09 21:46:29 +02:00
Kwabena W. Agyeman
80cb701d3b Add missing cam functionality
Added the ability to turn AGC off. Kinda will need the ability to restore
AGC settings back to user specified ones in the future... but, this will
do for now.

Added the ability to turn AEC off. Objectively this function probably
won't be used. But, in low light situations it can help.

Added get_fb() to allow you to get the last image snapshot returned.

There was some old exposure function in the code that was getting
optimized out. So, I deleted the used methods that didn't have any code
in them and commented out the only method that did.
2016-04-27 21:53:06 -04:00
Kwabena W. Agyeman
367e5fdd3d Improved JPEG capabilities.
* Added the ability to control the quality on JPEG functions... However,
due to our JPEG implementation this doesn't seem to help. 90% JPEG
quality images and regular images should be about equal. But, you can
see heavy degredation with 90% still. E.g. text is unreabable. Not
exactly sure why this is happening but it can be fixed later.

* Changed the compress() function to compressed(). Also, it now
compresses using FB_Alloc to prevent realloc issues when compressing.

* Added new compress() function. This function compresses an image in
place and if that image is the frame bufffer then it will update the
frame buffer bpp value to reflect the image was compressed. Users can use
this function to basically finalize the frame buffer and then pass the FB
to functions that need to send image bytes. The benefit of using this
function is that it should allow higher quality JPEGs and let everything
run at a faster speed while connected to the IDE.

I made this function to speed up WiFi. However, I encountered a bug with
the winc.send() method. It appears to zero the bytes it sends. I didn't
debug further except to verify that the image data became zero after
calling send.
2016-04-23 16:37:21 -04:00
Kwabena W. Agyeman
2fa8227c7b Add AWB/HMirror/VFlip
Added setters for these camera settings. AWB is necessary for color
tracking to work correctly. AGC still runs, which causes lighting
shifts. It may need to be disabled too. Not sure... if I want to do that
or not however, because without it lightning won't get normalized to
remain at a certain level. So, turning AGC off may cause issues in other
ways.
2016-03-25 16:36:10 -04:00
iabdalkader
2f9a541cbc Abort DMA transfer after snapshot. 2016-03-11 04:17:18 +02:00
iabdalkader
3e6e84cbb4 Skip the first frame after changing size or format. 2016-03-06 18:38:25 +02:00
iabdalkader
87f9c92f1b Skip the first JPEG/RAW frame.
* Set BPP to zero in set_pixformat to skip compressing/sending the first frame.
2016-03-06 02:32:11 +02:00
iabdalkader
911f9827ea Enable DMA IRQ just before the snapshot. 2016-03-06 02:28:05 +02:00
iabdalkader
06b1cfca3b Use IRQ priorities defined in irqs.h 2016-03-05 18:25:51 +02:00
iabdalkader
963dd69ca0 Fix typo. 2016-02-28 08:06:32 +02:00
iabdalkader
afa1686940 USE OMV_XCLK_FREQUENCY from OMV board config file. 2016-02-28 04:30:37 +02:00
iabdalkader
43dc87d43e Fix HQVGA resolution. 2016-02-21 23:05:07 +02:00
iabdalkader
a4ea3e0e20 Add filter functions
* Filter functions bypass the default line processing in sensor.c, and pre-process lines.
* Processing is done on the fly, i.e. filters are called from after each line is received.
2016-02-20 03:58:40 +02:00
iabdalkader
da15b6a915 * Allow fb compression to be enabled/disabled.
* This allows reading RGB images on PC if needed.
2016-02-18 04:01:41 +02:00
iabdalkader
d3d7e5dc39 Use typdef's for sensor enum and structs. 2016-02-17 19:46:45 +02:00