maksymt17 / aquamarine Goto Github PK
View Code? Open in Web Editor NEWObject recognition tool
Home Page: https://github.com/MaksymT17/aquamarine
License: GNU Affero General Public License v3.0
Object recognition tool
Home Page: https://github.com/MaksymT17/aquamarine
License: GNU Affero General Public License v3.0
add Object class with possibility to check around if this object connected to other one
Remove virtual destructor for Matrix class
To Reproduce
Steps to reproduce the behavior:
Additional context
Such virtual destruction make a negative impact on execution time,
Logger needs to be added to make it possible slightly debug program execution.
Variadiac arguments have to be used, logs should be parametrized.
parameters:
AffinityThreshold
MinPixelsForObject
PixelStep;
CalculationTimeLimit
IdleTimeout
Add time limitation for algorithms:
No needs to proceed calculations if result can not be provided in time.
If time exceeded - user should be notified about possible noise in images - comparison results can be distorted.
Resolution:
change input parameters: affinity threshold and min count of pixels in object,
or provide other image with reduced 'noise'.
should provide results of movement for every potential object
search of movement should be done only for objects not whole image
optionally can be added check for checking whole image
Threads count has to be added in config file, to make possibility adjust speed of processing images
Describe the solution you'd like
In case of HW specific such threads multiplier can significantly improve overall results of processing.
In meantime wrong multiplier can also provide loss of objects, especially with conjunction of small Calculation_Time_Limit value.
Describe alternatives you've considered
Add parameter to config file, set value as default to 2.0
Additional context
Explanation can be added on aquamarine wiki page
add pixelsCount in object class, and calculate summ of merged objects when merge needed
During searching objects keep some order - Ascending/Descending type.
Will be used during handling results. If user interested in biggest objects - they will be collected in needed order: biggest -first, smallest - last.
[Technical]:
std::set can be used where comparator will be selected, based on 'value'-weight of objects.
[Purpose]:
User can get results of more interested objects(usually - bigger)
[Warning]:
Can be timecostly if a lot of objects found.
[Flexibility]
Can be configurable: up to user requirements. When user can define if ordereing important, if not - can be used simple vector of objects as it was before
Explanation of used and required parameters have to be added
Is your feature request related to a problem? Please describe.
Create Bmp image drawer
Describe the solution you'd like
Can be used existing bmp_reader from third_party
Describe alternatives you've considered
as option different libraries will be nice, especially with direct access from taken picture, closer to driver for faster extraction
Additional context
drawRect should exisist to make vision to user where object/movement detected
check all classes about namespace,
replace 'recognition' to 'am'
UTs are failing because of selection Row instead of a column,
UT doesn't updated regarding Row segment selection per thread
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
Add UT and cover functionality related to the storage of RESULTS in the database.
Interface added,
Needed implementation of searching objects regarding to ChannelDiffs matrix
add new method in interface and implement it
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Make the possibility to generate a report about how UTs are covered sources
replace vector of Pixels found to bounding Rect for object, to simplify and reduce memory usage.
can be used some external tool or script
or c++ code with extraction
requirements:
fast convertion, JPEG data extraction.
optionally:
will be a plus to use low level access to memory,
maybe manufacturers can provide some SDK, for extraction pixels data from internal photo camera picture buffer
opened external discussion:
stackoverflow question
remove oldschool bit shifts, and use std::bitset<> instead.
Make code more readable and use modern types defined already in standard.
Needed set of Unit Tests which will check expected results after comparison/reading/searching
Check how ThresholdDiffChecker::getThresholdDiff works with different numbers of threads,
Priority is low for that moment as this class doesn't impact Object/Movement detection
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
add FHD, 20x20, 10x10 image samples to make possible run tests with different resolutions and objects to search.
Type of optimization:
Analyze
add multithread with flag ::launch for immediately execution on available threads
Description:
modify all async calls flag
with supporting basic support of prvided statements:
EQUAL
EXPECT_TRUE/FALSE
EXPECT_THROW
simplified alternative of gtest
Describe the bug
Fix problem with missed results from last thread
To Reproduce
Steps to reproduce the behavior:
Expected behavior
last thread executed objects collected, but not added in final list.
Multithreading in Bmp image data extraction, have to be implemented to speed-up execution of current functionality.
Currently Extraction data from QHD image takes more then second, its inappropriate.
Multithreading + optimisations have to be added.
add multithreading to speed-up searching of objects, with possibility to merge different objects from threads to bigger one, if these connected
unexpected exception throws
steps:
issue occurs if used only 1 thread
clean up and refactoring of Implementation
simplify code and optimize
Add singleton class Context for storage basic info available all time during comparisons.
Type of optimization:
[Extraction/Analyze/Build&Compile/Cross-platform]
Description:
Add ThreadPool with conditional variables
Type of optimization:
[Analyze]
Description:
check search/extraction functionality for possible optimizations where an object can be constructed in place.
MovementDetector shall check whether Objects moved on pair of images provided.
User should set objects which he interested in then check of movement can be started.
After checking what changes with should be provided possibility to recieve updated list of objects.
Implement launch of aquamarine binary with python.
Add image samples and default config to make it possible to run the test in a dedicated folder.
fix wrong merging of objects between threads results
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Merge objects if there are connected
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Linux/ Windows OS
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
Replace the current implementation with ObjectRectangle class instead of Object.
Should improve performance and not impact results. The result of the comparison is a rectangle(s).
Divide source files respectively.
Type of optimization:
Analyze
[Extraction/Analyze/Build&Compile/Cross-platform]
Description:
Modify existing implementation for multithreaded calculations and improve CPU cache utilization.
An update of the aquamarine wiki page is also required.
Type of optimization:
Extraction:
replace std::vector<> inside of matrix to vector<vector>
Description:
as Matrix is representation of image and related pixels, better to use 2 matrix instead of current vector.
Why:
Avoid unnecessary row index calculation all time due access to matrix values
Exception thrown
"std::vector out of range"
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Calculation has to be finished without exception
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Additional context
index is going out of thread column limits
relative paths usage(such as "../common/Types,hpp") in includes have to be changed.
Type of optimization:
[Extraction/Analyze/Build&Compile/Cross-platform]
Description:
Add linkage of gtest in all tests
Modify UTs sources
While Aquamarine has been making comparisons results could be saved into the database file.
Then after multiple runs, all results could be checked apart from logging.
SQLite3 could be used as a database.
Have to be added new files with types definitions, not uses only one as it now.
Content of Types.hpp -> put to multiple files.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.