Commit Graph

339 Commits

Author SHA1 Message Date
sz 93405b0878 This should be a copy 2020-07-08 03:28:31 -05:00
sz 915c2fdc2f A little experiment to see if we can get the *scan* to fail on merged frames
Sometimes we catch a partial redraw from the android camera -- it would
be nice to either:
A. detect up front, and discard by failing the scan (meaning we don't
have to burn cycles+heat on a hopeless decode)
B. be able to salvage part of an image (i.e. multi-part interleave)

This represents option A...
2020-07-08 00:01:21 -05:00
sz 847ee99937 Use getUMat() 2020-07-06 23:41:07 -05:00
sz ad3c75362c and the main cimbar example binary.
Updating decoder params to match ecc=64 for now.
2020-07-06 21:44:20 -05:00
sz bea14f758d Not sure if this is enough, but the undistort is opencl aware? maybe? 2020-07-06 21:43:51 -05:00
sz 4f5c1d47c5 Use the opencv "TAPI" (cv::UMat) for opencl/GPU(?) support
It's hard to tell if it actually helps.
2020-07-06 21:41:20 -05:00
sz afcd1fe85e Back out CIE76?? 2020-07-02 17:13:58 -05:00
sz 41396fcce9 Small fixes 2020-07-01 21:06:51 -05:00
sz b18d971493 Test checkpoint 2020-07-01 18:27:16 -05:00
sz caa9ebc9c4 Need tests, but this is the idea for the flood-fill style decode 2020-06-30 23:42:07 -05:00
sz 19ecbf97a9 WIP, split out logic for cell positions + decode
vs cell positions + encode.

Might be a better way to refactor this...
2020-06-30 22:13:32 -05:00
sz 22986be0c7 Checkpoint -- have CimbReader return the current tile index 2020-06-30 19:19:14 -05:00
sz 26df87b623 Make ScanState header-only 2020-06-30 18:35:54 -05:00
sz3 cde4bd8172
Merge pull request #7 from sz3/video
Add `cimbar_video`, a tool to create a window of continuously updating fountain cimbar codes
2020-06-27 02:25:27 -05:00
sz 9c12f7068d Break tests, propagate t2 scan results forward.
Also, make default skip scale by image size.
2020-06-27 00:51:32 -05:00
sz 30c818341e Fix: only merge anchors if they're close in size.
The practical consideration here is that we don't want erroneous
detections (which will tend to be tiny) to "move" our real (large)
anchor points.
2020-06-26 23:36:16 -05:00
sz 7328016e70 Be smarter about detecting the window close 2020-06-26 23:34:16 -05:00
sz bd1a674154 Add some logic to let us bail early from the encoder
(useful for cimbar_video)
2020-06-25 01:36:43 -05:00
sz b12615012d Add `cimbar_video` exe to generate frames to screen on the fly.
Uses opencv's imshow, allows variable framerate.
2020-06-25 01:11:01 -05:00
sz3 a1c3eac7b8
Merge pull request #6 from sz3/undistort-harder
Naive undistort algorithm + updating lots of tests
2020-06-17 22:32:16 -05:00
sz aa99a3fb1a Merge remote-tracking branch 'origin/master' into undistort-harder 2020-06-17 22:27:31 -05:00
sz3 c69efbdb2c
Merge pull request #5 from sz3/interleaving
Interleave data chunks, so error correction has more uniform noise to deal with
2020-06-17 22:26:16 -05:00
sz 151308585c Merge remote-tracking branch 'origin/master' into interleaving 2020-06-17 22:25:55 -05:00
sz3 8021e6673c
Merge pull request #4 from sz3/colors-and-tweaks
Colors and tweaks
2020-06-17 22:15:17 -05:00
sz d0c8d52661 Fix more tests, use newer samples 2020-06-17 22:00:10 -05:00
sz 6cbb9cac5d Update more tests 2020-06-17 21:43:40 -05:00
sz fa3030294f Minor test fix 2020-06-17 21:25:51 -05:00
sz e0f36cae69 Update/improve tests.
Use new samples, check outputs (w/ imagehash) instead of logging to tmp
+ manual verification, add a MakeTempDirectory class to clean up stuff,
etc
2020-06-17 21:11:15 -05:00
sz e4b02d4a85 Switch fountain encoding to use 2-byte blocks, because...
...this is the current wirehair limitation anyway.
Also added some test cases!
2020-06-17 18:50:26 -05:00
sz 75e88a6d72 Current test case for an observed earth-shattering kaboom
wirehair_decode() will sometimes seg fault if you give it the same frame
too many times. This is probably not intended behavior?

For now, a workaround (keep track of what we've given it)
2020-06-15 20:26:01 -05:00
sz 9cd315c54b Add another test? 2020-06-12 23:28:38 -05:00
sz b354425d48 Merge branch 'undistort-harder' of github.com:sz3/libcimbar into undistort-harder 2020-06-12 21:20:58 -05:00
sz f3472a2789 Maybe not necessary now? 2020-06-12 21:20:24 -05:00
sz addf2ae36e ok clang 2020-06-12 20:59:24 -05:00
sz f0a996b5a5 Match `cv::undistort`'s internal implementation. 2020-06-12 20:20:52 -05:00
sz 488f9a29ae Split undistort into initUndistortRectifyMap + remap.
SPEEED
2020-06-12 20:13:16 -05:00
sz 09df51b6aa The class changed 2020-06-12 19:17:40 -05:00
sz ddaa279a74 Merge remote-tracking branch 'origin/cleverer-scaling' into undistort-harder 2020-06-12 19:14:41 -05:00
sz 342bb4881b Use smallest ratio instead of average?
Running risks of hacks on hacks losing the plot, but OTOH, gotta get it
working first.

Also, we need to not fail outright if the undistort can't get params.
2020-06-12 19:13:59 -05:00
sz 17c5ede28f Plug undistort into the test cimbar program
Apparently we can't run cv::undistort(img, img) without opencv getting
mad... except we can in tests(???)

Anyway, uh, make a copy I guess.
2020-06-11 22:08:46 -05:00
sz 6abce8dece WIP for hack-y undistort.
Basic premise: opencv camera calibration seems to require everything
short of animal sacrifice to get working correctly, and that's not
particularly viable for a cell phone app. The "right answer" is probably
a database of precomputed cameras+distortion matrices, but that's also
out of scope for right now. So: hax

Have some off-by-one errors (or discrepancies) in the Scanner which
compound through the edge detection and into the calibration. We'll see
how bad that is.
2020-06-11 20:00:37 -05:00
sz e15bf90926 Using floats (double) for more of the edge calculations...
More precision is probably better?
2020-06-11 17:36:55 -05:00
sz 0082a8f5cc Quick and dirty template-ing of point<> to give us floating point math 2020-06-11 01:23:29 -05:00
sz 32ad946212 Update tests (remove many examples -- various things changed) 2020-06-11 00:30:26 -05:00
sz 75a6dd1a78 WIP: bring over python edge scan code 2020-06-11 00:13:34 -05:00
sz 2fe93bac98 Quick note 2020-06-10 17:53:25 -05:00
sz 1be6d973e9 Had the wrong size in BadChunk :| 2020-06-06 02:19:53 -05:00
sz 16e18435c9 Various tests for the aligned_stream
If we fail immediately, we currently have to throw out the wrong thing.
2020-06-05 23:22:57 -05:00
sz e94b97ac36 This is what ecc=40 looks like,
and for the moment I'm tired of cutting it too close! We can optimize
for performance later.

Also, deleting the old bitwriter.
2020-06-05 21:58:37 -05:00
sz 3470479686 WIP to make fountain decoding better
The FOUNTAINSTREAM template type is a bit brutal, but it might be ok for
now???
2020-06-05 00:41:01 -05:00