The purpose of this project is to create a computer vision system for water wave tracking and wave analysis.
x-python-script - 6.90 kB - 06/19/2019 at 22:00
x-python-script - 1.03 kB - 06/19/2019 at 22:00
x-python-script - 535.00 bytes - 06/19/2019 at 22:00
x-python-script - 979.00 bytes - 06/19/2019 at 22:00
Zip Archive - 2.07 MB - 06/19/2019 at 19:48
Wave probes tested + slow motion video
Here's the link to my CV python programs: https://github.com/xli2522/CV-on-Water-Waves.git
This repo includes:
The USB Live Arduino program is finished! Now back to Computer vision!!!
Find the complete program and setup on Github: https://github.com/xli2522/Wave-Gauges-Mini-Wave-Tank.git
+ New Paddle Design:
** I am going to merge two of my projects together: CV on wave pattern and Mini Wave Tank Micro-controller. The reason for that is I am thinking about comparing data from these two systems and try to find some correlations. Next week I will talk more about what I am planning to compare.
So ... Here's an update on my Micro Controller Data Collection System:
Controller: Arduino UNO R3
1 Inverting Op-Amp circuit:
(I'm too lazy to add another power supply to the op-amp so I ended up using lots of resistors to produce the appropriate voltage)
1 Wave Probe
Sample Output (find my Python and Arduino programs in the Files section):
(I will keep updating my programs, adding more functions and simplifying the algorithm)
Week 3 focuses on designing a program that detects wave patterns and projects them to the original video.
Here is a list of useful videos and documents:
1. The science of waves on water:
2. Making waves in a flume:
Week 2 of the project focuses on learning edge detection, optical motion detection, and the application of Kalman Filter on object tracking. Some of them are not necessarily related to this project but it's always good to learn more because someday these knowledge will come in handy :)
1. Application of Kalman Filter:
In this video you can see at least 9 times, the predicted position (using Kalman Filter) went far away from the actual position, this phenomenon actually shows the idea behind Kalman Filter - predicting the next move by looking at previous moves. This algorithm gives the predicted position 'inertia'. To improve this, we can use video with higher frame rates so this algorithm can have more information and more opportunities to correct itself.
2. Edge Detection (with Gaussian Blur treatment):
Canny algorithm is pretty good at separating larger objects and detecting their edges, like this lego man, however, when it comes to detecting the edge of tiny water patterns, Canny algorithm just isn't that good. (Canny often produces all black image when detecting water patterns.)
Sobel algorithm did an OK job detecting the lego man and when it comes to wave patterns, this algorithm also provides us with some information rather than a black image (like what Canny often does).
Although it's very noisy but you can still see a ripple-like pattern (this specific algorithm includes Gaussian Blur treatment before the picture is processed for edge detection, which improves Sobel's result).
3. Dense Optical Flow (DOF) Motion Detection
Different from last week's colour based detection, DOF algorithm detects motion vectors of pixels and marks moving area with different colour. It is very useful when you have no control over the colour of the background and the object, but a stationary camera or background is necessary.
(In the second video, you can see when the mouse is gone, it became very noisy, that's because the algorithm starts picking up very tiny movement of pixels after the large moving object is gone.)
Conclusion & Lesson:
So, the next step is to create a wave tank environment that's perfect for Canny algorithm to pick up wave patters.
Hello everyone, welcome to my first project log! I have been learning computer vision in the past week (I did't know anything about computer vision before this project) and tried different programs related to object tracking and feature detection. Most of the material and code can be found on OpenCV's website so if you happen to be interested in learning computer vision, that's a great place to start!
Here are some of the cool things I learned in the past week: (I will post some of the code to Github in the future so if you want to try them yourself but don't want to go through all the details and errors, stay tuned!)
1. Object tracking based on colour:
2. Corner detection and feature matching:
(It matches similar features but not always what you want, as you can see in the third picture, this algorithm drew lots of connections from the original photo to the desk.)