Commit Graph

906 Commits

Author SHA1 Message Date
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