diff --git a/docs/research_ImageRecognition.md b/docs/research_ImageRecognition.md new file mode 100644 index 0000000..1591527 --- /dev/null +++ b/docs/research_ImageRecognition.md @@ -0,0 +1,76 @@ +### Coordination between Arduino and Image Recognition + +#### Feasibility and Frameworks +- Integration between Arduino and image recognition is feasible. +- Various small cameras like OV7670 are compatible with Arduino. +- Available image processing libraries: + - OpenCV: Resource-intensive but widely used. + - Alternatives: Cameramatcs or Pixy2, tailored for microcontrollers. +- Object recognition: + - Pre-trained models or frameworks like TensorFlow Lite for Microcontrollers or EdgeImpulse suitable for microcontrollers. + +#### Processing and Output +- Data processing on Arduino: + - Camera detects cards, sends raw data to Arduino. + - Arduino analyzes data and interprets recognized cards. +- Decision logic: + - Implementation of decision logic on Arduino defining actions. + - Possible speech output based on card recognition. + +#### Energy Consumption +- Low power consumption or consistent power supply is desirable. + +*Note*: Image processing on Arduino can be challenging due to limited resources and performance capabilities. Finding compromises may be necessary. + +#### Frameworks +- TensorFlow Lite for Microcontrollers: + - Executes machine learning models on resource-constrained devices. +- Edge Impulse: + - Simplifies application development for microcontrollers, facilitates data collection, model training, and deployment. +- OpenMV: + - Platform for computer vision on microcontrollers, supports basic image processing tasks. +- Arduino Libraries: + - Example: Arduino Computer Vision Library. + +#### Considerations +- Processing 10-15 playing cards simultaneously on Arduino can be challenging, considering resource limitations. +- Possibilities: + 1. Algorithm optimization. + 2. External processing unit. + 3. Prototype and test. + +#### Example Code Collection +##### Image Recognition with Color Detection (Arduino) +```cpp +#include +#include +#include +#include + +#define RED_THRESHOLD 1000 // Threshold for red color detection + +Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); + +void setup() { + Serial.begin(9600); + if (tcs.begin()) { + Serial.println("Color sensor found!"); + } else { + Serial.println("Color sensor not found. Check connection."); + while (1); + } +} + +void loop() { + uint16_t clear, red, green, blue; + tcs.getRawData(&red, &green, &blue, &clear); + + if (red > RED_THRESHOLD) { + Serial.println("Red color detected!"); + // Further actions for the detected card can be implemented here + } else { + Serial.println("No red color detected."); + } + + delay(1000); // Delay between detection loops +}