Commit Graph

1681 Commits

Author SHA1 Message Date
Ibrahim Abd Elkader
7346efbf0d
Merge pull request #285 from kwagyeman/compare_methods
Compare methods
2017-12-23 22:22:22 +02:00
Kwabena W. Agyeman
e2025e8d1e SSIM Code
Image comparison using SSIM. It can be used to detect image
differences... but, the algorithm was designed to compare image quality
and look at compression artifacts. Anyway, it works kinda okay for
detecting frame differences.
2017-12-23 15:01:13 -05:00
Kwabena W. Agyeman
e5eb7185fb Line ops can now accept a parameter value. 2017-12-21 22:22:12 -05:00
iabdalkader
f2431de175 Add a list of matching keypoints to keypoints match object. 2017-12-21 21:07:01 +02:00
iabdalkader
eabdcbbbca Add unary_op and subscr to keypoints object. 2017-12-21 19:53:20 +02:00
iabdalkader
ed7cb98b86 Fix bootloader linker script. 2017-12-18 23:38:23 +02:00
Ibrahim Abd Elkader
9b652606dd
Merge pull request #284 from kwagyeman/illuminvar
Add chrominace and illuminace invariant image generators.
2017-12-18 15:36:35 +02:00
Kwabena W. Agyeman
937aa1fa22 Add chrominace and illuminace invariant image generators.
Both algorithms were tested on the OpenMV Cam using images loaded from a
file and work correctly. However, shot noise from the sensor.snapshot()
makes the output value somewhat worthless except in a situation unless
you've controlled for it. Anyway, the illuminvar work best when the
image is constrained to a very particular view point looking at a flat
scene without shadow and then a shadow enters.

(Not adding demo's for these methods since the output looks like crap
unless you've put some work into constraining the scene... need to add
HDR code and other stuff to the sensor module to get better images).
2017-12-17 21:57:08 -05:00
iabdalkader
dca8f3781d Fix low-power modes. 2017-12-17 01:58:37 +02:00
iabdalkader
2fb155aff3 Update docs. 2017-12-10 04:34:51 +02:00
Ibrahim Abd Elkader
f77284e38a
Merge pull request #283 from falkoschindler/master
changing sign of z_rotation() to follow conventions of a right-handed coordinate system...
2017-12-07 11:26:40 +02:00
iabdalkader
9cc209d128 Add WINC BSP mode.
* For programming FW via WINC's debug UART.
2017-12-06 20:33:26 +02:00
iabdalkader
fcc3b0b9c6 Make WINC programmer accept firmware file path. 2017-12-06 17:08:45 +02:00
iabdalkader
475c083c75 Move ffs_strerror declaration to header. 2017-12-06 16:44:57 +02:00
iabdalkader
278fb1c797 Update docs. 2017-12-06 15:30:30 +02:00
iabdalkader
64c2d1a535 Revert "Update docs."
This reverts commit 3eca75774f.
2017-12-06 15:29:23 +02:00
iabdalkader
3eca75774f Update docs. 2017-12-06 14:12:16 +02:00
Falko Schindler
7673aaf742 changing sign of z_rotation() to follow conventions of a right-handed coordinate system with yaw, pitch and roll defined as right-handed rotations about z-, y- and x-axis (http://nghiaho.com/?page_id=846, http://planning.cs.uiuc.edu/node102.html);
partly reverts pull request #200 (https://github.com/openmv/openmv/pull/200/files);
relates to discussion in openmv forum (http://forums.openmv.io/viewtopic.php?f=6&t=538);
note that rotation() is probably effected by this change (but it should not!)
2017-12-06 09:11:52 +01:00
iabdalkader
f79c6ba8d2 Move linker script variables to board config files. 2017-12-04 20:43:49 +02:00
iabdalkader
606cb08d1e Update docs 2017-12-01 13:54:52 +02:00
Kwabena W. Agyeman
7388a3c7be Improved the performance of the get_regression() robust linear
regression code for racing.

No more memcpys all over the place. Not sure why I was doing that.

... code must have been written by an idiot before :) (me).
2017-11-18 22:27:17 -08:00
iabdalkader
a8f74d5f88 Move WINC1500 firmware to top firmware dir. 2017-11-17 15:53:20 +02:00
iabdalkader
7a33f94df9 Bump firmware version. 2017-11-04 18:13:32 +02:00
iabdalkader
b6608cc754 Fix servo pins. 2017-11-01 19:07:29 +02:00
Kwabena W. Agyeman
8d63f6d84b Fix up lens_correction and add example script. 2017-10-28 00:31:01 -04:00
Kwabena W. Agyeman
5e3cf92ac4 Add perspective rotation correction code.
This code will help you undo image rotation issues in the X/Y/Z
direction. The demo shows off the frame buffer spinning around.
2017-10-27 01:21:13 -04:00
iabdalkader
8160e9120e Add MT9V034 initial support. 2017-10-24 03:07:17 +02:00
iabdalkader
9104ef3437 Swap read/write word data. 2017-10-21 23:40:56 +02:00
iabdalkader
d860361fcd Fix cambus read/write-w register width. 2017-10-21 14:18:42 +02:00
iabdalkader
fecf856169 Revert "Add generic cam bus read/write."
This reverts commit d2ebe6f7e2.
2017-10-21 14:17:53 +02:00
iabdalkader
d2ebe6f7e2 Add generic cam bus read/write. 2017-10-19 00:53:43 +02:00
iabdalkader
ff8cf16169 Rename data to reg_data. 2017-10-18 23:19:12 +02:00
iabdalkader
04a14a290f Rename SCCB/I2C driver to cambus. 2017-10-18 23:14:14 +02:00
iabdalkader
d1a5f72a95 Add new cam support files. 2017-10-17 14:14:08 +02:00
Kwabena W. Agyeman
1748000e4d Use special version of nlr_raise again. 2017-10-17 01:14:57 -04:00
iabdalkader
927edcf321 Fix M4 UART pins. 2017-10-12 21:49:37 +02:00
iabdalkader
46da0d9f2f Add roundf to Makefiles. 2017-10-09 21:32:03 +02:00
iabdalkader
c6c7324272 Apply mpconfigboard fix for MP-1.9.2 2017-10-09 21:21:44 +02:00
iabdalkader
11bed4b993 Update to MP-1.9.2 2017-10-09 21:20:06 +02:00
iabdalkader
64143d4a94 Remove frozen code object file. 2017-10-06 01:37:44 +02:00
iabdalkader
20c8b66789 Implement sensor soft sleep. 2017-10-05 01:25:49 +02:00
iabdalkader
f86a5fb63d Fix blob.density()
* Fix issue #268
2017-10-04 11:00:23 +02:00
Kwabena W. Agyeman
cbe2a4aebd Disable find line segments on the M4. 2017-10-03 02:50:55 -04:00
iabdalkader
c961b3eac0 Remove Cortex flags from MP Makefile. 2017-10-02 00:49:36 +02:00
iabdalkader
38aca6e9e8 Disable frozen modules. 2017-10-02 00:47:03 +02:00
iabdalkader
bb0d0e778a Disable OPENMV 1 build. 2017-10-02 00:27:03 +02:00
iabdalkader
afe07324c5 Use 1 DMA handle for SD TX/RX 2017-10-02 00:16:27 +02:00
iabdalkader
763228e30d Update F4 HAL. 2017-10-01 22:57:28 +02:00
iabdalkader
2edc26db6a Update CMSIS. 2017-10-01 22:47:05 +02:00
iabdalkader
5bffa8879a Remove comment. 2017-09-26 00:03:41 +02:00
iabdalkader
608ca9ab87 Remove unused pyb functions. 2017-09-24 21:29:34 +02:00
iabdalkader
6e34bafe6b Add function to execute boot scripts. 2017-09-24 21:16:10 +02:00
iabdalkader
de8caa3006 Remove debugging code. 2017-09-24 20:48:26 +02:00
iabdalkader
0c20049e3d clean up main.c 2017-09-24 01:47:46 +02:00
iabdalkader
5460f7f5e1 Fix FS cache address. 2017-09-24 01:46:41 +02:00
iabdalkader
e2514ee302 Add pendsv debugging flags to top Makefile. 2017-09-23 15:46:06 +02:00
iabdalkader
041a93502b Update SCCB probe function. 2017-09-23 15:45:54 +02:00
iabdalkader
3820cd07b7 Update MP. 2017-09-23 15:45:42 +02:00
iabdalkader
6ae6ce0cf7 Reorder init functions. 2017-09-23 15:45:15 +02:00
iabdalkader
ace083430f Init USB before sensor init to log errors. 2017-09-23 15:00:50 +02:00
iabdalkader
6917e4bb32 Update to micropython 1.9.
* The following issues still need fixing:
*   Al fb_alloc nlr hooks are DISABLED.
*   modnetwork causes cam to hardfault.
*   Had to reduce heap by 1K (vfs buffer had to be moved to bss/data).
*   self-tests are disabled (cam gets stuck after executing).
2017-09-21 16:58:57 +02:00
iabdalkader
07b7fb1f21 Update main.c for MP 1.9. 2017-09-21 16:58:57 +02:00
iabdalkader
1ab776faf1 Use forced exception to stop scripts. 2017-09-21 16:58:57 +02:00
iabdalkader
3ccc418cf3 Update main Makefile for MP 1.9 2017-09-21 16:58:57 +02:00
iabdalkader
113806e51b Update WINC1500 FatFS code 2017-09-21 16:58:57 +02:00
iabdalkader
e43bd3223b Disable nlr/fb-alloc function. 2017-09-21 16:58:57 +02:00
iabdalkader
9db426394f Update OMV Python modules for MP-1.9 2017-09-21 16:58:57 +02:00
iabdalkader
4a521dae32 Update MP header. 2017-09-21 16:58:57 +02:00
iabdalkader
5018ac1cd4 Add wrappers for oofatfs 2017-09-21 16:58:57 +02:00
iabdalkader
be54d3a8c7 Use MicroPython's OOFatFS. 2017-09-21 16:58:57 +02:00
iabdalkader
260479ae0f Lower M4 sensor clock.
* Add PLL config to board to fine tune M4 sensor clock.
* Note M4 sensor clock is lowered, the MCU can't keep up with high FPS.
2017-09-13 23:46:20 +02:00
Ibrahim Abd Elkader
0cf13e8777 Merge pull request #263 from kwagyeman/lsd
Lsd
2017-09-13 18:09:50 +02:00
Kwabena W. Agyeman
5a3153c8b9 Find line segments more stable
Switched the find line segments algorithm to something more stable using
the standard LSD algorithm that's used by OpenCV.
2017-09-13 00:33:31 -04:00
Kwabena W. Agyeman
7dff089e6f Removed QRCodes from the OpenMV Cam M4.
They don't really work that well on it anyway due to having to use a low
res. This makes room for more basic CV features on the M4 which it can
run.
2017-09-03 14:39:14 -04:00
iabdalkader
35ab0a26fc Remove invalid resolutions.
* Fix issue #261
2017-08-29 01:54:43 +02:00
iabdalkader
7da5509aa5 Support writing raw images. 2017-08-26 20:27:48 +02:00
iabdalkader
9f25fa752e Use IM test macros. 2017-08-26 19:48:17 +02:00
iabdalkader
abad31acea Add IM_IS_BINARY. 2017-08-26 19:41:11 +02:00
iabdalkader
4a62b8b989 Add IM_IS_MUTABLE to check if JPEG or RAW image. 2017-08-24 23:42:05 +02:00
iabdalkader
9f71b89187 Fix IM_IS_JPEG macro. 2017-08-24 23:37:16 +02:00
iabdalkader
5dbc3e68b4 Bump firmware version. 2017-08-10 19:39:54 +02:00
iabdalkader
7d05519518 Enable VGA MJPEG. 2017-08-10 04:03:32 +02:00
iabdalkader
43f9535cf0 Support VGA GIFs with BAYER format. 2017-08-10 03:52:37 +02:00
iabdalkader
db4d47c67f Initialize FB Enabled flag. 2017-08-08 18:56:11 +02:00
Kwabena W. Agyeman
ae1e00cc2d Fix to match script 2017-08-07 03:47:25 -04:00
Kwabena W. Agyeman
3caed9461f Fix find_circles 2017-08-07 03:46:08 -04:00
Kwabena W. Agyeman
d284407898 Fixed issues with polar math code. 2017-08-07 01:40:04 -04:00
iabdalkader
5c469e1e27 Update docs. 2017-07-28 13:59:52 +02:00
iabdalkader
9f658e4cfd Enable Servo 3.
* Fix issue #256.
2017-07-18 22:00:12 +02:00
Kwabena W. Agyeman
a4e556e7e3 Add find_rects() using AprilTag's quad detector.
It's awesome.
2017-07-13 01:25:23 -04:00
iabdalkader
aa2bd8a4e2 Add array insertion sort. 2017-07-11 23:48:49 +02:00
iabdalkader
ef3b058842 Minor fix to Haar loading from path.
* Won't need slash anymore.
2017-07-11 23:47:19 +02:00
iabdalkader
652ae88a65 Use ff_wrapper to load Haar cascades.
* Fixes unaligned reads warnings.
2017-07-11 23:37:24 +02:00
iabdalkader
200ffeed58 Add LeNet! 2017-07-11 04:10:40 +02:00
iabdalkader
109e403f7a Fix ORB sorting.
* Using pointers to make the sort stable doesn't work. Each keypoint is allocated individually.
2017-07-08 03:56:25 +02:00
iabdalkader
37b2fc0b31 Make ORB keypoints sort function stable. 2017-07-07 04:13:57 +02:00
iabdalkader
1fea5ac78c Fix ORB bug.
* Clear matched flag when loading descriptor.
2017-07-06 21:41:02 +02:00
Kwabena W. Agyeman
089577173c Improve find lines merging. 2017-07-04 18:23:26 -04:00
Kwabena W. Agyeman
1ed867e39f Fix memory leak with get_regression. 2017-07-04 14:21:11 -04:00
Kwabena W. Agyeman
5f4e690fa1 Add find circles.
Now you can find circles with your OpenMV Cam! The alrogithm can eek out
about 7 FPS on a 160x120 image which is quite impressive given how
computationally expensive circle finding is...
2017-07-04 14:09:21 -04:00
Kwabena W. Agyeman
48f1e0bada Fixed blob issues.
* Angle averaging done correctly using sin/cos now.
* Unspecfied color bounds default to least restrictive instead of most
restrictive.
2017-07-03 13:05:57 -04:00
Kwabena W. Agyeman
cd4ad0dff3 Add linear regression
For easy line following mainly. In non-robust mode the line is computed
using least squares. In robust mode the line is computed using the
Theil-Sen median of slopes method. We do not use the Siegel Median of
Medians operation because it costs more CPU time... but, more
importantly there's no way to improve the centroid estimate so even if
the slope is more robust the line will be drawn in the wrong place.
2017-06-28 01:16:15 -04:00
iabdalkader
7d29104ed6 Add sensor.flush() 2017-06-25 16:48:17 +02:00
iabdalkader
99ec972ad0 Rename main_fb_image_size to fb_buffer_size(). 2017-06-24 23:29:41 +02:00
iabdalkader
062f86c60a Remove *_FB_SIZE macros. 2017-06-24 23:03:09 +02:00
iabdalkader
bfe1f02ffa Remove 4 bytes from FB_SIZE macros. 2017-06-24 22:58:37 +02:00
Kwabena W. Agyeman
c2c92c9f41 No requirement to size FB anymore. 2017-06-24 12:43:23 -04:00
Kwabena W. Agyeman
a02c2bad6c Fix main FB and JPEG FB size and pixels code. 2017-06-24 12:42:02 -04:00
Kwabena W. Agyeman
fffa3a691a Add function to get image size in bytes given the format. 2017-06-24 12:27:23 -04:00
iabdalkader
851b5306a7 Add IMAGE_BPP_BAYER. 2017-06-19 01:50:02 +02:00
Kwabena W. Agyeman
87d53385a6 Improve image load.
It now copies to the frame buffer and will error out if loading an image
that is too large.
2017-06-18 13:57:34 -04:00
Kwabena W. Agyeman
968574b1a5 Add corners to code objects. 2017-06-16 01:56:33 -04:00
Kwabena W. Agyeman
cfe7881dff Improve stream file format.
All chunks are multiples of 16 bytes. Don't want to run into issues with
long alignment now or in the future.
2017-06-12 01:43:57 -04:00
Kwabena W. Agyeman
dc6ab59cfd Add Image Writer/Reader
These two new classes allow you to record image data for later viewing
at the same speed the image data was recorded. Unlike GIF/MJPEG the
image data is stored on the file system completely uncompressed in
native frame buffer format making super fast reading and writing
possible. Recording VGA Grayscale at ~13 FPS is possible along with
playing it back. (That's about 30 Mb/s folks).

...

The motivation for writing these scripts is so that you can record video
of something like a line following track, take that video home, and work
on computer vision algorithms for that data.

These classes should make it a lot easier to use the camera at home now.
2017-06-11 15:53:43 -04: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
iabdalkader
c8d7a4188f Update built-in README. 2017-06-09 01:00:06 +02:00
iabdalkader
5887129a0a Remove inf file from fresh FS. 2017-06-09 00:30:13 +02:00
iabdalkader
6850a53bf9 Enable RTC. 2017-06-07 22:59:54 +02:00
iabdalkader
4af10aaa2e Fix RTC init. 2017-06-07 22:59:42 +02:00
iabdalkader
a5b25bd5b7 Increase UART char timeout.
* Fix issue #240
2017-06-07 21:26:34 +02:00
Kwabena W. Agyeman
343c4b9092 Add sensor width and height.
Should have added this a long time ago.
2017-06-04 21:49:07 -04:00
iabdalkader
63c3ee85c2 Bump firmware version. 2017-06-04 20:52:02 +02:00
iabdalkader
e287b39968 Fix FW version. 2017-06-04 20:46:24 +02:00
iabdalkader
8cfa8f8b90 Apply SCSI layer fix from MP upstream.
* Fix #236
2017-06-04 20:04:39 +02:00
Kwabena W. Agyeman
744a2d7b04 Upstream Kanji fix. 2017-06-03 15:09:42 -04:00
iabdalkader
9091bc6ba0 Update binary ops docs. 2017-06-03 20:52:49 +02:00
Kwabena W. Agyeman
d853e43cd6 Fixed binary and/or naming. 2017-06-03 14:27:19 -04:00
iabdalkader
2232d78586 Bump firmware version. 2017-05-30 01:26:07 +02:00
iabdalkader
f85540b716 Reset the FPS clock every 2s. 2017-05-30 01:03:15 +02:00
iabdalkader
0666d0a465 Update MP docs. 2017-05-29 21:31:03 +02:00
Kwabena W. Agyeman
2557070422 Fix error with compress_for_ide()
Forgot to add size of start and end markers.
2017-05-28 23:07:11 -04:00
Kwabena W. Agyeman
a039b5d1c7 Change skip_frames() to use a 2 second timeout.
This was necessary due to the increase in the frame rate. The previous
method did not correlate to time.

All scripts updated.
2017-05-27 19:31:41 -04:00
Kwabena W. Agyeman
e9e48d5028 Update QRCode
Fixed issues with QRCode method in response to user reqeust on the
forums: http://forums.openmv.io/viewtopic.php?
f=6&t=286&p=1799&hilit=qrcode#p1799.
2017-05-27 16:21:10 -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
df1bdc65b8 Fix recvfrom return. 2017-05-26 20:29:23 +02:00
iabdalkader
e960546b6b Add keypoints match object. 2017-05-22 19:48:15 +02:00
iabdalkader
1057dce2c9 Fix formatting. 2017-05-22 18:44:41 +02:00
iabdalkader
c59495d215 Call DCMI_VsyncExtiCallback from EXTI9_5 handler. 2017-05-21 22:29:26 +02:00
iabdalkader
8952962e3c Add function to set VSYNC I/O output pin. 2017-05-21 22:27:58 +02:00
iabdalkader
666ee15992 Enable VSYNC output on IO pin for synchronization. 2017-05-21 22:23:53 +02:00
iabdalkader
9d8c6701c0 Fix indent. 2017-05-18 01:53:43 +02:00
iabdalkader
d266332a7a Minor docs fixes. 2017-05-15 23:25:09 +02:00
iabdalkader
e35dbc2108 Lowering OMV2 sensor clock to work with the higher sensor PLL. 2017-05-13 23:04:19 +02:00
iabdalkader
6f4ea1567e Set SCCB clock to 100KHz. 2017-05-13 04:11:36 +02:00
iabdalkader
103bb27f83 Set sensor PLL to 6x and reduce extclk.
* OMV2-F4 extclk = 8MHz * 6 = 48MHz
* OMV3-F7 extclk = 9MHz * 6 = 54MHz
2017-05-13 04:10:04 +02:00
iabdalkader
832819eede Set sensor window to QVGA when res is <= VGA.
* This reduces the readout time allowing to cam to capture more (miss less) frames.
2017-05-13 04:08:33 +02:00
iabdalkader
520537f7b3 Add set resolution macro. 2017-05-13 03:30:13 +02:00
iabdalkader
435644e63f Add find_lines docs 2017-05-11 13:53:09 +02:00
Kwabena W. Agyeman
f4a9c61544 Add find_line_segments
The OpenMV Cam can now infinite lines and line segments from those
infinite lines. find_lines has been updated to allow all this to work.
2017-05-10 21:40:22 -04:00
iabdalkader
dbda114663 Optimize Canny edge detector.
* Use separable convolution.
* Merge thresholding and non-max suppression steps.
2017-05-08 05:02:56 +02:00
iabdalkader
d80196002d Compile additional features only when enabled.
* This fixes "unused" errors with newer toolchains.
2017-05-07 03:39:15 +02:00
Kwabena W. Agyeman
31b7b5bf3e Improved find_lines
Frame rate now can hit 30 FPS when JPEG compression is off. Merging of
lines is perfected too which greatly reduces the noise output. Also,
lines are now objects so you can get their values in an easy way.
2017-05-06 14:31:20 -04:00
iabdalkader
b1196d5f8b Update MP docs 2017-05-01 03:50:58 +02:00
Kwabena W. Agyeman
284a505865 Add ID string to arch output. 2017-04-30 20:09:00 -04:00
Kwabena W. Agyeman
dc599e40eb Improved subscr and get_buffer
In response to PR https://github.com/openmv/openmv/pull/221.

You can now read and write slices of data to and image at a time.
2017-04-29 19:27:13 -04:00
Kwabena W. Agyeman
690ec923ae Add data matrix support.
Add support for decoding data matrices and example scripts.
2017-04-28 19:58:19 -04:00
Ibrahim Abd Elkader
7204a35758 Revert "Add image.raw() function." 2017-04-28 18:01:11 +02:00
skaiu
b64c744f2f Add image.raw() function. 2017-04-28 21:51:31 +08:00
Kwabena W. Agyeman
08b36f2b21 Fix typos. 2017-04-27 00:44:28 -04:00
Kwabena W. Agyeman
aa5131467e Fix UMM_Refactor Issues.
Memory allocation will grow organically now when more RAM is available.
2017-04-27 00:15:16 -04:00
Kwabena W. Agyeman
35e9f988d6 Refactor umm_malloc into it's own file.
We now have a nice and fast malloc system that easily offers 300KB+
dynamic memory... No need to use xalloc anymore except when we're
transfering objects to MP memory space.
2017-04-26 22:48:52 -04:00
Kwabena W. Agyeman
16d711ad5d Pull in upstream quirc fixes from github. 2017-04-25 21:17:12 -04:00
iabdalkader
2c4ec23244 Fix gcc2016q4 warnings.
* Fixed misleading indentation.
* Removed unused static variables.
* Disabled strict aliasing for STM DSP library.
2017-04-23 20:40:07 +02:00
iabdalkader
1fd9bf9251 Enable UART1 for OPENMV3 2017-04-23 20:32:44 +02:00
iabdalkader
6e2ba0e300 Bump firmware version. 2017-03-26 22:25:23 +02:00
iabdalkader
cab69cc64d Reverting last commit.
* Using parentheses for the logical test.
2017-03-26 21:48:59 +02:00
iabdalkader
e29d7769e6 Fix logical test error in zbar. 2017-03-26 21:41:42 +02:00
iabdalkader
3fd7c15094 Update docs. 2017-03-25 23:38:32 +02:00
Ibrahim Abd Elkader
6614d2380c Merge pull request #203 from kwagyeman/master
Image Streaming Code
2017-03-25 18:54:43 +02:00
Kwabena W. Agyeman
55e4809ff6 Image Streaming Code
The user can now call compressed_for_ide() and compress_for_ide() on an
image to make a jpeg compressed image formatted for transmission over a
data link other than USB. Note that OpenMV IDE will automatically handle
one of these compressed images ending up in the frame buffer and display
it like normal.

To send the image data the user can do:

print(img.compress_for_ide(), end='')
print(img.compressed_for_ide(), end='')
uart.write(img.compress_for_ide())
uart.write(img.compressed_for_ide())

and etc. As mentioned above, compress() compresses the image in place.
And that in place compressed image will then end up in the jpeg buffer.
OpenMV IDE will automatically handling decoding these special compressed
images when this happens.

All variations of the above code have been tested and are working.
2017-03-25 12:47:23 -04:00
Kwabena W. Agyeman
bfd048e6f3 Integrate ZBar 2/2
ZBar functionality integrated along with an example script.
2017-03-24 12:45:27 -04:00
Kwabena W. Agyeman
dab290675f ZBar Integration Part 1/2.
Main ZBar code, breaking the commit up because the main file is big.

I will refeactor UMM alloc out of apriltag.c and zbar.c once I'm
finished with this commit stream.

ZBar integration gives us support for basically all 1D linear barcodes.
2017-03-24 11:59:10 -04:00
Kwabena W. Agyeman
c6009ae05d Fixed apriltags z translation. 2017-03-21 21:01:52 -04:00
iabdalkader
fb3582b440 Remove old MAX_INT_FRAME. 2017-03-16 20:34:04 +02:00
iabdalkader
669e9ad072 Removed unused JPEG_OFFS_SIZE. 2017-03-12 19:28:14 +02:00
iabdalkader
15d6b96bed Fix py_image_get_buffer to support writing BAYER. 2017-03-12 19:25:48 +02:00
iabdalkader
4502256e19 Fix py_image assertion message. 2017-03-12 19:19:00 +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
iabdalkader
5615a25745 Add Bayer support in OV7725 driver. 2017-03-12 03:33:33 +02:00
iabdalkader
d330486758 Add Bayer JPEG support. 2017-03-12 03:32:20 +02:00
iabdalkader
b94182dce4 Add new RAW/BAYER pixel format to support 2BPP VGA. 2017-03-12 03:29:49 +02:00
iabdalkader
002c2894aa Add IM_GET_RAW_PIXEL 2017-03-12 02:36:52 +02:00
iabdalkader
fbc30e9736 Add missing ksize. 2017-03-09 22:46:03 +02:00
iabdalkader
e5aa66cd12 Use sep conv in ORB. 2017-03-09 22:43:24 +02:00
iabdalkader
ea7b87e866 Add separable convolution. 2017-03-09 22:43:05 +02:00
iabdalkader
040a3cb0e4 Use separable gaussian kernels. 2017-03-09 22:41:37 +02:00
iabdalkader
a4561c7efa WINC: Add support for AP mode. 2017-03-09 20:39:53 +02:00
iabdalkader
32dded64fd Use faster SPI GPIO. 2017-03-09 20:23:13 +02:00
iabdalkader
8c0e1603eb Redefine log level when CONF_WINC_DEBUG is enabled. 2017-03-09 20:22:00 +02:00
iabdalkader
096361c711 Remove headers from mp.h 2017-03-09 03:47:24 +02:00
iabdalkader
1d1eede947 Updated docs. 2017-03-07 21:35:35 +02:00
iabdalkader
6d838ff8ee Update docs. 2017-03-04 03:47:41 +02:00
iabdalkader
5e9beab3d6 Bump firmware version. 2017-02-28 18:07:39 +02:00
iabdalkader
a054b5faab Fix cascade step.
* Assumed window width == height.
2017-02-28 17:51:03 +02:00
iabdalkader
7616e487f9 Handle CTRL+D/C/A just like MP boards. 2017-02-23 15:20:14 +02:00
iabdalkader
f7c49cc01d Add CAN init0/deinit in main.c 2017-02-23 15:16:04 +02:00
iabdalkader
2934e88146 Enable CAN2 for OMV2 and OMV3 2017-02-23 15:04:04 +02:00
iabdalkader
f0a389f2cc Enable extra MP modules. 2017-02-23 02:15:04 +02:00
Kwabena W. Agyeman
1b3f444351 Add callbacks back in for emulating pixy. 2017-02-15 13:18:11 -05:00
Kwabena W. Agyeman
cd07c0d5fa AprilTags Fixes
* Made all memory allocations during the exhaustive time safe.
* Added 3D pose output from the AprilTags code.
2017-02-14 18:36:52 -05:00
Kwabena W. Agyeman
b22aadc21f QR Code Bug Fixes
Fixed typo in qrcode script. Moved scripts to new folder. Fixed roi
offset for qrcodes. Use fast functions in qrcode library.
2017-02-10 15:14:29 -05:00
Kwabena W. Agyeman
71e795812f April Tag Release Fixes
Everything works. Running out of memory is fixed and the rotation value
is valid now. For 320x240 operation on the STM32H7 we're going to need
on the order of 1 MB in the entire frame buffer. The code is designed to
handle us getting this amount of memory without any new changes for
320x240 support.
2017-02-10 13:42:35 -05:00
Kwabena W. Agyeman
443ba3bff8 AprilTags Support
Works super good.
2017-02-09 17:37:18 -05:00
Kwabena W. Agyeman
55716a632a AprilTags Main
This file includes all of the relevant header/source files from the
april tag library merged into one big file. Additionally, it also
includes heap/quicksort code. I've done the work of going through
the april tag library line by line and fixing it to use fb_alloc,
floats, and our fast math functions.

Anyway, I'm sending this massive file by itself first since it's so
big. Note that we migh in the future want to pull things out of this
file for our own use later if we need linear algebra support.
2017-02-09 17:04:08 -05:00
Kwabena W. Agyeman
c4b4a86100 Add flag for SWD programmer.
It can now check if the self-test passed.
2017-01-29 19:54:45 -05:00
Kwabena W. Agyeman
3f879ec1b3 Fixed bootloader LED 2017-01-29 19:52:24 -05:00
iabdalkader
0be2676bc1 Bump firmware version. 2017-01-21 23:39:32 +02:00
iabdalkader
3e581156da Fix LED pinout for OMV3. 2017-01-21 23:20:40 +02:00
iabdalkader
1cba92d757 Update docs. 2017-01-21 23:07:43 +02:00
Kwabena W. Agyeman
02af722fe8 Fixed fb_alloc() with mark for recently re-worked code.
I also tested the firmware for about an hour to make sure there was no
stack leak.

Note that I prefer for fb_free() to still be called versus
fb_free_till_mark() doing that for you in the code.

For functions without this fix they will just free the entire fb_alloc
stack when an exception happens. For functions with this fix they will
only free up to and including the mark. Since there are no places in the
firmware where you could start building a second fb_alloc stack when one
is already in place this point is moot currently. But, if we do
something like that in the future the problem will have already been
solved.

Any new code or re-worked code should use the mark function.
2017-01-18 18:39:08 -05:00
iabdalkader
0979ee2c0f Update MP branch 2017-01-18 04:14:11 +02:00
Ibrahim Abd Elkader
f7e04a450b Merge pull request #177 from kwagyeman/update_lens_corr
Speed up lens_corr.
2017-01-16 04:43:56 +02:00
Kwabena W. Agyeman
d6b49adefa Speed up lens_corr.
Speed up the algorithm by fixing the abs() issue. Do not use that
function in any of your code. It by itself cut the speed of the code
in half. I don't know what's in that function but I'm guessing it does
ABS of a float using ints or something.

I made the zoom parameter functional now too so you can use lens_corr to
zoom in on the image. Argument parsing is handled too. Finally, I
updated the only script where this is used.

Note that I'm able to get more than 10 FPS at 160x120 on the M4 and 15
FPS at 160x120 on the M7. Previous this was at about 5 FPS and 7.5 FPS
respectively.
2017-01-15 21:32:55 -05:00
Kwabena W. Agyeman
ed3f226478 Tested stats with examples and fixed bugs
The automatic grayscale and rgb565 color tracking scripts are very cool.
2017-01-15 14:59:42 -05:00
iabdalkader
e4c297d0e3 ORB: Use the normalized arg.
* Extract keypoints from the first scale only if normalized == True.
2017-01-15 17:40:29 +02:00
iabdalkader
bba8e5a9e0 Remove match_descriptor type arg.
* Not really needed can check MP object types.
2017-01-14 01:15:24 +02:00
iabdalkader
c9806c0588 Allow the IDE to interrupt main.py 2017-01-13 03:14:07 +02:00
Kwabena W. Agyeman
0e89b655bf Made set_windowing simpilier.
Tested with updated qr code example script.
2017-01-12 17:41:40 -05:00
iabdalkader
c28d090ee2 ORB: User floorf to get keypoint xy from scale. 2017-01-12 17:32:05 +02:00
iabdalkader
11f5d67669 Cleanup JPEG buffer checks. 2017-01-12 17:31:33 +02:00
iabdalkader
9a7c3defc3 Update JPEG buffer sizes in OMV2 and OMV3 2017-01-12 17:31:11 +02:00
iabdalkader
607db241a5 Move main memory to DTCM on M7.
* Allows bigger fb_alloc buffer
2017-01-12 17:30:24 +02:00
iabdalkader
66a7330d1e Add comment about write buffer. 2017-01-12 17:29:59 +02:00
Kwabena W. Agyeman
1025d23fe8 Add fb_alloc stack unwinding code.
Needs to be linked into MP too.
2017-01-11 23:05:59 -05:00
iabdalkader
cdef215a6e Make match_keypoints more robust.
* Check keypoints sizes.
* Handle zero matches case.
2017-01-12 04:54:40 +02:00
iabdalkader
cfdb4bdc90 Cast sin/cos to ints in draw_keypoints. 2017-01-12 04:52:50 +02:00
iabdalkader
5467993b38 Free FB memory if compress or compressed fail. 2017-01-12 04:51:21 +02:00
iabdalkader
2d201357a6 Add xalloc_try_alloc.
* Doesn't raise exception if there's no memory
2017-01-12 04:47:29 +02:00
Ibrahim Abd Elkader
e82e3ab785 Merge pull request #170 from kwagyeman/fix_compress
Fix compress and compressed.
2017-01-12 04:47:36 +02:00
Kwabena W. Agyeman
9efd7474ae Fix compress and compressed. 2017-01-11 21:21:04 -05:00
iabdalkader
819e95dc07 ORB: check if matches == 0 2017-01-12 03:46:57 +02:00
iabdalkader
a533ed3549 ORB: Fix ROI again.
* Must leave at least patch_size border.
2017-01-12 02:01:55 +02:00
Kwabena W. Agyeman
9f37c83def Minor Speed Improvements to Blob, QRCode, and Stats 2017-01-11 17:09:46 -05:00
Kwabena W. Agyeman
cf4cb787f5 Removed new_image_t, replaced with current image_t. 2017-01-10 18:26:49 -05:00
iabdalkader
5f7b40489b ORB: small fixes.
* Do Gaussian smooth on every level, can't get away with just one level.
* Fix ROI, was bigger than needed, and check roi.w/h instead of scaled image.
2017-01-10 14:49:43 +02:00
iabdalkader
e901221c52 ORB: Use popcount for distance. 2017-01-10 06:39:13 +02:00
iabdalkader
58ef87cd85 ORB: Change default threshold to 85 and min match to 5. 2017-01-10 04:11:41 +02:00
iabdalkader
cfc677ed40 Improve bootloader timing
* Detect when VBUS is connected and wait for enumeration, the IDE
  timeout is only started after enumeration.
* A 2s timeout for enumeration is used so the cam doesn't get stuck
  if it's connected to a charger or a power bank.
2017-01-10 00:58:15 +02:00
iabdalkader
d42b2987a7 Fix lookup types for find_keypoints. 2017-01-09 01:30:08 +02:00
iabdalkader
02334ebea3 Init theta. 2017-01-09 01:11:27 +02:00
iabdalkader
1ab282a7eb ORB: estimate and return the angle of rotation. 2017-01-09 00:59:33 +02:00
iabdalkader
ff6b3d8367 Change default matching threshold to 70. 2017-01-09 00:40:37 +02:00
iabdalkader
c233131ca4 Change default max_keypoints to 100. 2017-01-09 00:29:22 +02:00
iabdalkader
f1f38f3c74 FAST/AGAST: Allocate MAX_CORNERS or the actual max corners. 2017-01-08 19:05:25 +02:00
iabdalkader
b956935550 ORB: Use one array for all octaves.
* Since I'm sorting the whole array and not every octave now.
2017-01-08 18:55:14 +02:00
iabdalkader
6b7eb1a105 Add keypoints detector arg. 2017-01-08 18:40:28 +02:00
iabdalkader
05ea5115b5 Add constants for corner detectors. 2017-01-08 18:33:10 +02:00
iabdalkader
96e4f770c0 Use scale_factor instead of scale in find_features
* Updated all scripts.
2017-01-08 18:23:25 +02:00
iabdalkader
861627d61b Set default keypoint size to 10% of the image size 2017-01-08 17:53:59 +02:00
iabdalkader
dccadd7bf5 ORB, FAST, AGAST: Move keypoints sorting to higher level. 2017-01-08 17:39:55 +02:00
iabdalkader
68346372b1 ORB: Add comments. 2017-01-08 17:36:43 +02:00
iabdalkader
7fa9894bdc ORB: Add max_keypoints and scale_factor args 2017-01-08 17:35:47 +02:00
iabdalkader
9ac0d0b0dd Merge branch 'master' of https://github.com/openmv/openmv 2017-01-08 17:07:07 +02:00
iabdalkader
ee96ba1353 ORB: pre-compute umax. 2017-01-08 16:58:52 +02:00
iabdalkader
ff50b8ffb2 ORB: Don't scale the first octave 2017-01-08 16:57:41 +02:00
iabdalkader
46fd1936da ORB: Gaussian smooth the image once before keypoints extraction. 2017-01-08 16:54:52 +02:00
iabdalkader
24292d4f55 ORB: Quantize angle and fix rotation 2017-01-08 16:52:17 +02:00
Kwabena W. Agyeman
0111084125 Updated stats code
We now have a method to get an the normalized histogram of an image
patch. The histogram is returned as an object with methods too. You can
then get the stats off of the histogram or just get the CDF of it. The
CDF is particularly useful for automatically chaning the the color
tracking bounds.
2017-01-07 20:11:30 -05:00
iabdalkader
6873f17ea0 Write/read keypoint angle when saving/loading descriptors 2017-01-07 18:49:09 +02:00
iabdalkader
d653bdb136 Fix and update ORB.
* Set keypoint angle.
* More downscale levels
* Additional keypoints filter using distance ratio with second best match.
2017-01-07 18:43:38 +02:00
iabdalkader
f47b96360a Fix keypoints size. 2017-01-07 18:42:52 +02:00
iabdalkader
e06a6520a6 Remove dist from keypoints 2017-01-07 18:42:28 +02:00
iabdalkader
17cf2ca139 Skip matched keypoints. 2017-01-07 15:25:44 +02:00
iabdalkader
c758e14bcb Add angle, dist to keypoints 2017-01-07 02:44:19 +02:00
iabdalkader
9e76d775d6 Fix ORB angle calculations. 2017-01-07 02:42:32 +02:00
iabdalkader
6000684cb3 Fix keypoint drawing code. 2017-01-07 02:35:18 +02:00
iabdalkader
ea047bde94 Clean up AGAST. 2017-01-07 02:34:05 +02:00
iabdalkader
e2b5338dc8 Fix fast_alloc point 2017-01-06 19:41:22 +02:00
iabdalkader
a1c3061c1b Optimize keypoints_filter. 2017-01-05 17:01:42 +02:00
iabdalkader
00c30204ee Add rectangle_expand for bounding boxes. 2017-01-05 16:02:47 +02:00
iabdalkader
945a83c789 Add keypoints filtering function.
* This function filters keypoints far from the centroid, it's very useful for finding an accurate bounding box for an object.
  If a bounding box for the object is not needed, the centroid can be used instead since it's not affected too much by outliers.
* The filter finds the centroid of all the previously cross-matched keypoints then finds the mean, variance and standard deviation,
  it then filters keypoints with a distance higher than standard deviation from the centroid.
2017-01-05 05:35:57 +02:00
iabdalkader
f7a8167ce4 * Multiply by octave when clustering ORB points. 2017-01-05 03:35:43 +02:00
iabdalkader
e0b8d0d66d Fix ORB keypoints hamming distance.
* Used the wrong hamming for 4 points.
2017-01-05 01:53:04 +02:00
iabdalkader
e2d0c48401 Replace FREAK with ORB.
* New keypoints descriptor, much better implementation than FREAK.
2017-01-04 05:44:06 +02:00
iabdalkader
d7a223b136 Revert to FAST9 2017-01-03 20:43:27 +02:00
iabdalkader
cf1407cb48 Add AGAST corner detector. 2017-01-03 20:36:08 +02:00
Kwabena W. Agyeman
8dfba8b208 Fixed copy_to_fb for loading images. 2017-01-03 12:25:23 -05:00
iabdalkader
517ab14f40 Clean FB_PIXELS macro.
* No need to check BPP anymore.
2017-01-02 18:37:01 +02:00
iabdalkader
0bb431118b FAST improvements.
* Use all available FB memory to allocate corners.
* Limit the number of max keypoints to 150.
2017-01-02 03:15:16 +02:00
iabdalkader
942ddc5602 Make the lens correction function use less ram.
* Make lens_corr function work with 1/2 the ram needed.
2017-01-01 19:35:21 +02: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
Kwabena W. Agyeman
fbc58cf137 Updated QR Code Library with upstream changes and fixed up scripts for
demo.
2016-12-28 10:57:31 -05:00
Kwabena W. Agyeman
af15ec6eb3 New Blob Code
The new API is backwards compatible with the previous one except for
advanced features. The new blob code uses a flood fill algorithm that is
3x faster in filling out blobs that the previous code. On the M7 the
performance cap of 30 FPS is usually reached.

Additionally, blobs are objects with named attributes now so you don't
have to index access them anymore. However, index access is still
supported.
2016-12-27 19:10:24 -05:00
Kwabena W. Agyeman
6a8ce01e79 Add QRCode detection.
Use the qrcodes script and point your OpenMV Cam at google search
results for QR Codes.
2016-12-27 15:30:35 -05:00
Kwabena W. Agyeman
b668ac7e17 Add collections. 2016-12-27 14:04:30 -05:00
Kwabena W. Agyeman
ba04ff80bd Better Image Lib Primatives 2016-12-27 12:42:47 -05:00
iabdalkader
6480ecfc1a Update docs 2016-12-26 23:04:03 +02:00
iabdalkader
fd384bf1b0 Export OV7725's lens shading correction function. 2016-12-25 02:45:05 +02:00
iabdalkader
ac026d0b91 Fix F7 ADC support 2016-12-22 01:25:22 +02:00
iabdalkader
3ff0039bb8 Clean/Invalidate the M7 cache in the DMA driver. 2016-12-20 23:58:51 +02:00
iabdalkader
be95596e3a Fix OV7725 register name. 2016-12-20 22:25:30 +02:00
iabdalkader
1645ab94b2 Allow image loading directly to FB.
* Allows bigger images to be loaded to FB.
2016-12-14 18:44:23 +02:00
iabdalkader
cafddfed17 Redefine CFLAGS MCU_SERIES in the top Makefile.
* Make sure the MCU_SERIES is defined if MP config files are included outside MP build.
2016-12-14 13:55:53 +02:00
iabdalkader
0f9456fd37 Use WFI while waiting for snapshots. 2016-12-13 21:57:10 +02:00
iabdalkader
274f9bc445 Disable DCMI LINE in DCMI_Init.
* This disables the line interrupt before the first frame.
2016-12-13 21:43:22 +02:00
iabdalkader
edb1eca109 Revert to an older F7 DMA driver.
* The new DMA drivers (>v1.0.1) don't work yet.
2016-12-12 22:51:49 +02:00
iabdalkader
75e48c411d Reverted num of EXTI to 24 for M7 2016-12-11 02:46:09 +02:00
iabdalkader
177f24767b Enable additional GPIO ports for STM32F769xx only 2016-12-10 22:32:52 +02:00
iabdalkader
3e41450d97 Add support for OpenMV3 2016-11-27 19:32:09 +02:00
iabdalkader
b4aeb32e1b Add build option to enable stack protection. 2016-11-15 19:07:50 +02:00
iabdalkader
daf2527c0f Remove IDE/FS interrupt enable in pyexec. 2016-11-15 19:05:18 +02:00
iabdalkader
890d27d1dd Cleanup USBDBG code. 2016-11-15 18:53:34 +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
b421022ef9 Bump firmware version. 2016-11-04 00:17:18 +02:00
iabdalkader
ae10b0a40e Switch to FAST-12 2016-11-03 23:57:16 +02:00
iabdalkader
615364101f Fix template ROI when T and F have the same size. 2016-10-17 21:56:09 +02:00
iabdalkader
199a0d0f63 Make functions return arg image to string operations. 2016-10-17 21:33:47 +02:00
iabdalkader
dfde3f4c71 Use socket->timeout for functions that can block. 2016-10-11 00:09:58 +02:00
iabdalkader
fdf0b96270 Add clear image function.
* Sets image pixels to 0's.
2016-10-10 17:22:26 +02:00
iabdalkader
ef6e6303c7 Add HoG. 2016-10-10 17:22:04 +02:00
iabdalkader
60dc3f7e91 Remove ToF module. 2016-10-10 16:53:02 +02:00
iabdalkader
b6c4f9b873 Fix ToF module SPI code.
* Note the module will be removed in the following commit,
  I'm committing fixes anyway, if the module is needed later it can be restored.
2016-10-10 16:41:45 +02:00
iabdalkader
2faa9d9bcf Fix socket_recv bug.
* recv returned the call status not the sent bytes.
2016-10-09 23:13:15 +02:00
iabdalkader
fedd1f2fe4 Add missing lens_corr prototype 2016-09-24 01:57:57 +02:00
iabdalkader
14b6330b67 Add simple lens correction function. 2016-09-23 18:46:11 +02:00
iabdalkader
af24644f87 Remove match pointer from keypoint struct. 2016-09-23 18:44:23 +02:00
iabdalkader
6beb89c6e6 Fix image.gaussian return object. 2016-09-23 18:25:19 +02:00
iabdalkader
926be29c43 Bump firmware version. 2016-09-20 01:17:53 +02:00
iabdalkader
f55c9b48eb Add gaussian function. 2016-09-20 01:03:22 +02:00
iabdalkader
7b3d2d931e Move image kernels to imlib.c 2016-09-20 01:02:51 +02:00
iabdalkader
91bc9af3ec Allow FREAK keypoints to be clustered using kmeans. 2016-09-20 00:08:59 +02:00
iabdalkader
0950d6e52a Update Kmeans.
* Small fixes with arrays handling.
* Add generic distance function.
2016-09-16 03:31:34 +02:00
iabdalkader
6591558af4 Init RNG when calling randint. 2016-09-16 03:30:08 +02:00
iabdalkader
e81f228796 Add simple edge function. 2016-09-14 20:54:53 +02:00
iabdalkader
51f1605aee More fixes to Canny edge.
* Clear output border
2016-09-13 17:53:53 +02:00
iabdalkader
0be9e958a1 Small fix to Canny.
* Threshold gradients before nonmaximal suppression.
2016-09-13 13:15:01 +02:00
iabdalkader
e104be63df Implement Canny edge detector. 2016-09-13 02:37:43 +02:00
iabdalkader
49124b4e8c Add py_helper_lookup_int_array. 2016-09-13 01:59:32 +02:00
iabdalkader
83451de050 Add Hough Transform. 2016-09-12 22:16:58 +02:00
iabdalkader
217b3a8dd4 Rename FFT sin/cos table to avoid conflict with generic tables. 2016-09-11 17:05:35 +02:00
iabdalkader
f5e1028786 Add sin/cos tables. 2016-09-11 17:01:53 +02:00
iabdalkader
f908da8d5a Make FFT sin/cos tables static. 2016-09-11 16:59:42 +02:00
iabdalkader
627d81f569 Add imlib mask_ellipse. 2016-09-08 03:12:14 +02:00
iabdalkader
9153325c06 Fix LBP for face recognition.
* Rollback to 7x7 windows.
* Use chi square for distance with weights optimized for facerec.
2016-09-08 01:29:17 +02:00
iabdalkader
8cdf53d3fb Return arg image in histeq. 2016-09-04 21:33:41 +02:00
iabdalkader
21920eaa06 Bump firmware version. 2016-08-31 02:45:06 +02:00
iabdalkader
0653f49bde Set max FPS reduction to 1/2 FPS (30FPS).
* A compromise between FPS reduction and noise level (in night mode).
2016-08-31 01:41:34 +02:00
iabdalkader
bdafca5a78 Set default gain ceiling to 8x 2016-08-31 01:37:43 +02:00
iabdalkader
2fa4a67a96 Cleanup debug log. 2016-08-30 22:46:08 +02:00
iabdalkader
bb93be6da0 Use debug_printf in winc module. 2016-08-30 22:43:35 +02:00
iabdalkader
2877225003 Remove mdefs.h 2016-08-30 22:43:06 +02:00
iabdalkader
faf79007c9 Add DEBUG_PRINTF flag 2016-08-30 22:37:22 +02:00
iabdalkader
b665c65ed6 Rename mdefs.h to common.h 2016-08-30 22:37:04 +02:00
iabdalkader
f200f2e0b8 Set WINC SPI baudrate. 2016-08-30 01:09:49 +02:00
iabdalkader
f4907e6603 Up WINC SPI speed 2016-08-30 01:02:26 +02:00
iabdalkader
ed9133e447 Cleanup sockets error handling. 2016-08-30 00:55:51 +02:00
iabdalkader
60714b339c Clean up async request code. 2016-08-29 21:49:16 +02:00
iabdalkader
8541c3c2ca Fix WINC accept info. 2016-08-28 18:22:05 +02:00
iabdalkader
5d92001f75 Cleanup WINC line endings. 2016-08-28 17:52:07 +02:00
iabdalkader
813a2e6e6a Fix WINC socket_send.
* Check sent bytes returned from async request.
2016-08-28 17:51:42 +02:00
iabdalkader
014847da5d Bump firmware version. 2016-08-25 19:26:20 +02:00
iabdalkader
fa65054815 Update firmware version. 2016-08-25 19:08:41 +02:00
iabdalkader
3cde9f9260 Revert to old FS caching. 2016-08-24 22:31:46 +02:00
iabdalkader
4b07286284 Update colorbars test.
* Invert colorbars for OV7725.
* Increase colorbars thresholds.
2016-08-23 22:37:47 +02:00
iabdalkader
2ad2418d61 Enable DSP colorbar for OV7725.
* Enabling DSP colorbar outputs solid colorbars without an image,
  which makes the colorbars test run better.
2016-08-23 22:30:18 +02:00
iabdalkader
e88c344028 Use the same serial number used in bootloader. 2016-08-22 23:03:58 +02:00
iabdalkader
d93661aa03 Set heap back to 54K. 2016-08-22 23:03:42 +02:00
iabdalkader
2a6e30de98 Reuse SPI handle for WINC. 2016-08-22 23:03:24 +02:00
iabdalkader
5238d55042 Use JPEG_SUBSAMPLE_1x1 for 60 quality. 2016-08-22 21:16:28 +02:00
iabdalkader
ebf9a93294 Increase OMV2 FB_ALLOC and JPEG buffer size. 2016-08-22 21:15:44 +02:00
iabdalkader
fd46db4143 Use new FS block caching. 2016-08-22 21:15:13 +02:00
iabdalkader
0e60cb39ec Reduce AGC/AEC Fast Mode Operating Region.
* Increasing VPT causes more motion blur.
2016-08-22 21:04:37 +02:00
iabdalkader
a998acbe22 Return 0 if FB is not ready.
* Fix bug introduced in last commit.
2016-08-21 03:01:21 +02:00
iabdalkader
5b8de6f867 Clean USBDBG_FRAME_SIZE code. 2016-08-19 19:17:22 +02:00
iabdalkader
1142940b88 Add MLX qstrs. 2016-08-19 19:09:47 +02:00
iabdalkader
a6953e8757 Invalidate frame after IDE reads it. 2016-08-19 19:09:17 +02:00
iabdalkader
958c5b7f78 Use keyword args for MLX refresh rate and adc resolution.
* Issue #148 PR #149
2016-08-19 13:23:47 +02:00
William Minarik
18975dfb85 changes fir_init() to take specified refresh rate and ADC resolution 2016-08-18 14:36:05 -04:00
iabdalkader
4cd4b1f902 Optimize haar
* Skip homogeneous regions based on STD.
2016-08-18 00:29:45 +02:00
iabdalkader
b655a54885 Remove frame size assertion in snapshot()
* Frame gets automatically cropped if it's bigger than the max raw frame.
2016-08-18 00:26:01 +02:00
iabdalkader
c6181cc7f5 Increase AEC/AGC operating region. 2016-08-17 21:19:07 +02:00
iabdalkader
56438bc079 Add cpufreq module.
* Add CPU frequency scaling module and example script.
2016-08-17 19:42:05 +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
3a39a6fce0 Set default PLL settings to 192MHz 2016-08-17 19:09:48 +02:00
iabdalkader
c371893a60 Remove old RCC code. 2016-08-17 18:59:14 +02:00
iabdalkader
f8747cb60b Re-enable DMA2 Stream 3 and 4 for uSD
* Fix issue #148
2016-08-16 21:24:56 +02:00
iabdalkader
6722710329 Make IDE interrupt static. 2016-08-16 13:00:12 +02:00
iabdalkader
3a5b82c1b0 Add comment to linker script 2016-08-16 12:59:58 +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
7499062bda Fix OMV2 max frames. 2016-08-16 12:45:49 +02:00
iabdalkader
d9c8b1535d Reduce IDE JPEG quality. 2016-08-15 01:11:10 +02:00
iabdalkader
bcac8731b2 Add ARCH_STR to board files. 2016-08-14 15:14:43 +02:00
iabdalkader
6d6ad783b7 Add ARCH_STR command. 2016-08-14 15:12:43 +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
37ec0095fc Enable OS module. 2016-08-13 22:08:15 +02:00
iabdalkader
dcdb3e5e8d Remove old comments. 2016-08-13 22:07:50 +02:00
iabdalkader
2821690a35 Update MP branch with M7 support. 2016-08-12 23:27:20 +02:00
iabdalkader
53df7fed4f Update bootloader to support M7. 2016-08-12 23:03:11 +02:00
iabdalkader
d0ae48d3a6 Update OV7725 regs 2016-08-12 22:46:04 +02:00
iabdalkader
56ef404919 Add realloc arg to JPEG encoder.
* If realloc is set to false, JPEG encoder won't try to realloc JPEG buffer and will fail gracefully.
2016-08-12 22:44:39 +02:00
iabdalkader
1cbcb7e434 Add M7 support 2016-08-12 22:43:50 +02:00
iabdalkader
21c693f968 Update CMSIS 2016-08-06 00:25:04 +02:00
iabdalkader
e44d86b483 Update CMSIS 2016-07-29 12:28:42 +03:00
iabdalkader
11c44d11e2 Update DSP lib 2016-07-29 12:28:10 +03:00
iabdalkader
7d99357e25 Add F4 and F7 HAL 2016-07-28 16:38:45 +03:00
iabdalkader
e4ee55eefb Update firmware version. 2016-07-27 22:18:43 +03:00
iabdalkader
0da4951e62 Fix integral image lookup 2016-07-27 22:00:51 +03:00
iabdalkader
0363fa8758 Add ToF module. 2016-07-27 15:21:33 +03:00
iabdalkader
f7aa217f39 Use scaled DCT. 2016-07-06 21:19:14 +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
b5486fc2a3 Set JPEG chroma subsampling based on quality. 2016-07-03 21:27:44 +02:00
iabdalkader
9e592d45bf Add JPEG subsampling enum. 2016-07-03 21:27:28 +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
6adb46e1fa Make copy_to_fb accept (x,y) offset 2016-06-17 00:31:56 +02:00
iabdalkader
2594a1e320 Add py_helper_lookup_offset. 2016-06-17 00:30:02 +02:00
iabdalkader
76e3a77869 Reduce DS search step by one. 2016-06-15 23:41:08 +02:00
iabdalkader
7a977b5568 Reduce step size in DS search.
* Reduce DS step size instead of switching to smaller pattern.
* Makes it slower but more accurate, close to EX search.
2016-06-15 23:33:33 +02:00
iabdalkader
e40c50f739 Add diamond search for fast template matching. 2016-06-15 22:59:17 +02:00
iabdalkader
d9b03641f7 Add copy to framebuffer function and example script. 2016-06-15 21:59:36 +02:00
iabdalkader
86b038df33 Fix typo in Haar. 2016-06-15 21:04:25 +02:00
Kwabena W. Agyeman
15aed91efd Fixed FFT and Phase Correlation!
There were some mistakes, they are fixed now. FFT 1D and 2D work
flawlessly. No problems with that code anymore.

As for phase correlation I need to study how to interpret the output
better. The function generates noisy results once you move the image too
far and I'm not quite sure if I have the code right for detecting
positive and negative displacements.
2016-06-14 00:00:27 -04:00
iabdalkader
2767791aae Add loop step argument to template matching. 2016-06-14 00:14:22 +02:00
iabdalkader
a25e0c162e Make template matching use ROIs. 2016-06-14 00:07:54 +02:00
Kwabena W. Agyeman
45fdcc973e Add FFT Code and Phase Correlation Code
The heart of the 1D FFT works. I tested this on the PC. However, 2D FFTs
may have issues and the phase correlation algorithm does not generate
the expected results. That said, most of the work is done. Stuff just
needs to be deubgged.

The FFT lib is designed to handle up to 1024 point real FFTs and 512
complex FFTs. As for 2D FFTs, we can do up to 64x64 pixels. After which,
we don't have enough RAM to handle them because they use up about 128KB
each.

Things to do... the 2D FFT needs to be verified. So, we need to run an
image through it and then back again to verify that there are no
problems. Then we need to compare the 2D FFT output with another 2D FFT
algorithm on the PC...

Once the FFTs are known to be good we then need to make sure the phase
corelation algorithm outs the correct results. We need to test that with
multiple shifted images, etc.
2016-06-12 19:55:45 -04:00
iabdalkader
f0a6892475 Cleanup template matching code. 2016-06-11 02:00:27 +02:00
iabdalkader
8fac08e29e Fix integral_image_sq bug in calculating first row. 2016-06-10 00:14:41 +02:00
iabdalkader
15ba6a4927 Enable binning when resolution is higher VGA. 2016-06-03 23:05:51 +02:00
iabdalkader
ee2995115f Disable auto zoom/scale factors for VGA resolution.
* Disable auto zoom/scale factors for VGA resolution on OV7725.
2016-06-03 23:04:11 +02:00
iabdalkader
440c9dc8bc Implement binning. 2016-06-03 23:01:28 +02:00
iabdalkader
318b67da42 Fix typo. 2016-05-25 03:42:57 +02:00
iabdalkader
39f439cda5 Fix the base priority when doing a soft-reset 2016-05-16 14:26:48 +02:00
iabdalkader
8f35a14ad8 Update USBDBG patch version. 2016-05-16 14:22:59 +02:00
iabdalkader
2e2c563227 Re-implement line filters with Python callbacks. 2016-05-16 14:22:30 +02:00
iabdalkader
5265211cc4 Remove USBDBG FRAME_UPDATE command. 2016-05-16 13:40:09 +02:00
iabdalkader
5d9fbf729c Enable some MP optimizations. 2016-05-16 13:37:27 +02:00
iabdalkader
fea0b45eaa Update MP branch.
* Fix ADC channels.
* Add 427 AF file.
2016-05-12 18:25:06 +02:00
iabdalkader
a865075e85 Fix Makefile dependencies.
* Fixes issue with parallel builds (make -jn)
2016-05-12 14:28:27 +02:00
iabdalkader
959d3e5410 Disable STM-HAL build in MicroPython. 2016-05-12 14:02:45 +02:00
iabdalkader
f61d89e0a4 Fix Makefile Verbosity.
* Make build more quite.
2016-05-12 14:01:14 +02:00
iabdalkader
23f1935924 Enable modmachine. 2016-05-12 12:53:55 +02:00
iabdalkader
ba73787c8a Use MicroPython's SD Card Module. 2016-05-11 18:46:38 +02:00
iabdalkader
8e503f4145 Update to MP v1.8 2016-05-09 21:46:41 +02:00
iabdalkader
9a5992c03e Update code for MP v1.8 2016-05-09 21:46:29 +02:00
iabdalkader
2803a8f483 Update MP branch. 2016-05-04 21:37:15 +02:00
iabdalkader
c10fc56f44 MLX fixes.
* Alloc variables using xalloc.
* Change ADC resolution to 18 bits.
2016-05-04 21:37:10 +02:00
iabdalkader
e5cde106fb Remove MLX variables from linker script 2016-05-04 20:14:52 +02:00
iabdalkader
2b26d46f1e Fix py_fir memory issues. 2016-05-04 20:14:38 +02:00
iabdalkader
1f150c1847 Cleanup Makefile.
* Rename binary files.
* Misc cleanups
2016-05-03 19:16:43 +02:00
iabdalkader
a314b59d1a Generate a combined binary for the programming jig. 2016-05-03 16:12:52 +02:00
iabdalkader
a0d7c69cb7 Remove old CC3K code. 2016-05-02 23:11:11 +02:00
iabdalkader
d8359a99e1 Define MAIN_FW_ADDR. 2016-05-01 15:51:20 +02:00
iabdalkader
c7c3ddce63 Add DAC init in main.c
* Fix issue #121
2016-05-01 15:50:10 +02:00
iabdalkader
260caaa8e7 Fix WINC client.send() zeros data being sent.
* Issue #129
2016-04-30 23:08:23 +02:00
Kwabena W. Agyeman
fc605b0a80 Made histeg work for RGB565.
Added YUV to RGB565 conversion to make this happen.
2016-04-29 23:03:19 -04:00
iabdalkader
6b581af1b1 Add mass erase to make flash. 2016-04-29 20:32:14 +02:00
Ibrahim Abd Elkader
ebb7053040 Merge pull request #132 from kwagyeman/master
Add missing cam functionality
2016-04-28 23:58:27 +02:00
iabdalkader
0d5aaf5064 Fix USB descriptors.
* This fix makes the bootloader+fw image enumerate correctly on Linux and Windows.
2016-04-28 12:47:21 +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
iabdalkader
794bb367ae Fix Bootloader CDC descriptors.
* Removed some unused descriptors, but mainly set the CDC interface number to (1)
  same as MP, as Windows doesn't like different interface numbers for the same device.
2016-04-27 19:38:44 +02:00
iabdalkader
8cd6fbf301 Replace pyboard and MP string descriptors. 2016-04-27 18:17:42 +02:00
iabdalkader
130fcbf162 Pass wValue to control requests. 2016-04-27 08:34:20 +02:00
iabdalkader
cadb73eb5e Fix Makefile build order. 2016-04-26 22:58:07 +02:00
Kwabena W. Agyeman
7a01a9bede Final Imlib Cleanup
Finished going through imlib.c.
-> Histeq uses fb_alloc now and has hook for RGB histeq when reserve YUV
LUT is added (coming soon in next PR).

Cleanuped py_helper.c/h
-> No functional changes. Just added some header info.

Finished going through py_image.c
* 1 - Finished general code cleanup and updating everything to using new
library functions. In particular, I updated the remaining find_*
functions with the new roi clipping code when they accept rois.
* 2 - Made blob stuff return a list when nothing is found so you don't
have to do an if on the returned value anymore.
* 3 - img subscr is more powerful now allowing image reading and
writing. I updated this because I had to use it to find a previous bug
with socket.send() for the WINC driver.
* 4 - Renamed find_eyes to find_eye. Because it just finds one eye.
* 5 - Other than that just general code cleanup to make functions look
consistent.

And yes, changes have been test. Face tracking, eye tracking, keypoints,
etc. all work still.

Future things todo before release:
1 - Change all LAB stuff to YUV.
2 - Add in reverse YUV->RGB LUT and update functions like Mode() to use
this so they don't generate messed up outputs, also histeq() too.
3 - Add any remaining sensor control functions like agc control.
2016-04-25 21:55:49 -04:00
Ibrahim Abd Elkader
3ac7872188 Merge pull request #130 from kwagyeman/master
Improve JPEG capabilities.
2016-04-26 02:47:08 +02:00
iabdalkader
232461295d Remove old DFU code. 2016-04-25 20:35:36 +02:00
iabdalkader
3d38908f2a Update main Makefile
* Add bootloader sources.
* Generate main FW image dfu, bootloader dfu and combined dfu image.
2016-04-25 18:20:20 +02:00
iabdalkader
508f303d91 Move ISR vector start of the main firmware image. 2016-04-25 18:19:39 +02:00
iabdalkader
d14c55251d Change interrupt vector table offset.
* Set to 0x08010000 where the main FW image starts
2016-04-25 18:18:27 +02:00
iabdalkader
9ed107ccee Re-enable IRQs in main.c 2016-04-25 18:18:03 +02:00
iabdalkader
87740c0170 Add CDC bootloader source dir 2016-04-25 18:17:21 +02: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
bb9d79d744 Fixed dilate.
This was bugged. Tested and now works.
2016-04-21 13:11:38 -04:00
iabdalkader
da612ff75f Apply HAL I2C/DMA patch from MicroPython. 2016-04-20 23:03:39 +02:00
iabdalkader
ef772db6c4 Up MP branch 2016-04-20 22:30:43 +02:00
Kwabena W. Agyeman
b534dc6ffc Imlib cleanup
*Changed subimg to copy.
*Made blend work the same way as all our other double image argument
functions.
*Changed bilt to replace (the name of bilt is way to esoteric). Replace
gives you the basic assignment op.
* Removed scale/sacled. I removed this code because we don't want to
encourage people to scale things and allocate additional images in
memory. I decided to keep copy() for completeness sakes... but, I don't
see anyone using it. (By completeness sakes I mean that we now have the
assignment op, copy op, etc. for an image object).
* Removed rainbow. This feature is built into the FIR module now.

Moving on, compress needs to be renamed to compressed and a new compress
function will need to be added.

The compress() function will compress the image (or frame buffer, etc)
and not return a new object. The compressed() function will return a new
object and not compress the original image.

The compress function will make it easier for users to compress images
once they are done working on them before sending the image some where.
I don't see compressed() being used much then after adding the
compress() function. Since the compress() function won't use up heap
space this makes it very good.
2016-04-19 21:42:56 -04:00
Kwabena W. Agyeman
8a2852b706 Fixed file buffer bug.
This wasn't getting reinited breaking the system.
2016-04-14 23:56:54 -04:00
Kwabena W. Agyeman
1b9be6f81c Fixed blob merge bug.
Merging now keeps trying after a merge to make sure it's collected
everything.
2016-04-13 23:48:16 -04:00
Kwabena W. Agyeman
16daeb83a2 Fixed blob code.
Removed micropython code from the image libary. Also, blobs are now 10
tuple values by default now. The multilist thing has been removed from
blobs and it will return just a list of blobs instead of a tree of
lists.

Filter functions still work too.
2016-04-13 23:16:51 -04:00
Kwabena W. Agyeman
9e5d379c18 Remove old code.
Pixels, centroid, and orientation are calculated in the blob code now.
As for threshold, it is no longer needed (plus, it required storing a
secondary image in RAM which isn't really something we can handle).
2016-04-09 19:32:14 -04:00
Kwabena W. Agyeman
d1ff36602a New blob code.
Blob tracking has now been updated to work without requiring prior
segmentation of the image. You can still run it on a segmented image,
but, that is not needed anymore.

Use the copy color feature of the OpenMV IDE to get a color in the
image. Once you have that you can then pass the color to find_blobs which
will output a tuple of lists of blobs for each color. By default, all
blobs less than 1/1000th of the image are filtered out, however, you can
add a custom filter function which gets the image and the blob about to
be added to the list and you can decide to filter it or not.

For marker tracking, we now have a function called find markers which
basically merges all the blobs found by find blobs into one list of
blobs. Each new blob will have a color code value which will tell you
what colors are part of that blob. We support tracking up to 30 unique
colors this way.
2016-04-09 11:43:35 -04:00
iabdalkader
37c8587333 Fix WINC's FW update.
* Remove unused WINC code.
* Replace WINC fw update process with a single fw image.
2016-04-06 02:35:32 +02:00
iabdalkader
f841828818 Add WINC fw dump function. 2016-04-06 02:30:42 +02:00
iabdalkader
cc67372726 Add fw_dump 2016-04-06 02:29:39 +02:00
iabdalkader
6aaef6b68d Update WINC's firmware image. 2016-04-06 02:28:18 +02:00
iabdalkader
f2a1a1f641 Fix printf format. 2016-04-05 23:42:37 +02:00
iabdalkader
6addddbbc7 Fix WINC's firmware_verify. 2016-04-05 23:40:09 +02:00
Ibrahim Abd Elkader
749cd96e0c Merge pull request #112 from kwagyeman/master
Add mean, median, and mode filters.
2016-04-05 23:22:23 +02:00
iabdalkader
b9ec840a76 Add winc fw_update function. 2016-04-05 22:35:02 +02:00
iabdalkader
3268edceb2 Add WINC1500 Firmware image and certificates.
* FW version 19.4.4
2016-04-05 22:32:50 +02:00
iabdalkader
330b41aab6 Add WINC1500 FW upload code. 2016-04-05 22:31:39 +02:00
iabdalkader
dae73f6250 Update WINC1500 driver to 19.4.4 2016-04-05 22:30:00 +02:00
Kwabena W. Agyeman
401b7b72a8 Added mean, median, and mode filters.
Mean filter -> Fast and easy to use. This will likely be the only filter
that gets alot of action on the M4.

Median filter -> Works really well, but, slow. On grayscale at 160x120
you can get also 10 FPS with it for a 3x3 kernel. That said, it's still
slow. Also, the code only works for 3x3 and 5x5 kernels.

About the previous histogram filter... technically, that filter should be
better. However, it suffers from a startup cost. The operation of finding
the median point in the histogram costs too much to compute. This is
what causes it to be slow. On very large kernels it will be faster than
the sorting median alrogithm I put up... but, large kernels will be too
slow for anyone to use anyway. The paper Ibrahim linked to about it
showed it being used for like 7x7 kernels and up... so, I think the
researcher who thought of the idea was really thinking about the
algorithm for large kernels.

Mode filter -> Works great on grayscale. Not so much on color. I think it
needs to be run on the LAB color space instead of the RGB color space. I
say this because it causes pretty strong artifacts around edges. When we
get more flash we'll be able to have a reverse lookup table for LAB to
make the mode filter better. Until then...
2016-04-04 20:04:50 -04:00
iabdalkader
1566b38bde Implement fw_version. 2016-04-02 01:39:53 +02:00
iabdalkader
27adf0dcd2 Enable CONF_MGMT. 2016-04-02 01:39:29 +02:00
iabdalkader
0d19f693c0 Implement Listen and Accept. 2016-03-31 22:35:49 +02:00
iabdalkader
e5fd02c59a Implement bind, sendto and recvfrom. 2016-03-31 02:46:14 +02:00
iabdalkader
4201f0480d Use fd instead of u_state. 2016-03-31 01:05:26 +02:00
iabdalkader
a5d1b0f446 Implement socket settimeout 2016-03-31 01:04:57 +02:00
iabdalkader
1cccae0fcb Implement WINC send/recv. 2016-03-30 18:51:13 +02:00
iabdalkader
bf674dbe6d Add Socket and DNS callbacks. 2016-03-30 01:47:35 +02:00
Kwabena W. Agyeman
bc687ebf59 We seem to be doing this alot in the code.
So I'm just adding a function to do it cleanly and efficently. Call
skip_frames() after changing any camera settings to let it settle.

10 frames by default works fine. Tested it.
2016-03-28 22:59:59 -04:00
iabdalkader
4e31f25db8 Additional qstr definitions for OpenMV. 2016-03-29 02:26:39 +02:00