## Materials and Methods
### Directional Bee Traffic
In Figure 3c, two moving bees are detected: the first bee is denoted by the upper green rectangle and the second one is denoted by the lower green rectangle. In Figure 3d, the first (i.e., upper) bee has moved toward the landing pad, while the second (i.e., lower) bee has moved laterally, i.e., more or less parallel to the landing pad. The two bee moves are shown in two vector fields in Figure 3f. The upper vector field that captures the motion of the upper bee contains nine vectors, while the lower vector field that captures the motion of the lower bee contains only one vector. Once the vector fields are computed for a pair of consecutive frames, the directions of these vectors are used to estimate directional bee traffic levels. Specifically, each vector is classified as _lateral_, _incoming_, or _outgoing_ according to the value ranges in Figure 4. A vector \(\vec{v}\) is classified as _outgoing_ if its direction is in the range \([11^{\circ},170^{\circ}]\), as _incoming_ if its direction is in the range \([-11^{\circ},-170^{\circ}]\), and as _lateral_ if its direction is in the ranges \([-10^{\circ},10^{\circ}]\), \([171^{\circ},180^{\circ}]\), or \([-171^{\circ},-180^{\circ}]\). Let \(F_{t}\) and \(F_{t+1}\) be two consecutive frames from a video \(V\). Let \(I_{f}(F_{t},F_{t+1})\), \(O_{f}(F_{t},F_{t+1})\), and \(L_{f}(F_{t},F_{t+1})\) be the counts of incoming, outgoing, and lateral vectors. For each pair of consecutive images \(F_{t}\) and \(F_{t+1}\), the algorithm computes three non-negative integers: \(I_{f}(F_{t},F_{t+1})\), \(O_{f}(F_{t},F_{t+1})\), and \(L_{f}(F_{t},F_{t+1})\). If a video \(V\) is a sequence of \(n\) frames \((F_{1},F_{2},\ldots,F_{n})\), then we can use \(I_{f}\), \(O_{f}\), and \(L_{f}\) to define the functions \(I_{v}(V)\), \(O_{v}(V)\), and \(L_{v}(V)\) that return the counts of incoming, outgoing, and lateral vector counts for \(V\), as shown in Equation (3). Figure 2: 2D Correlation Algorithm. The upper image with particles on the left is \(F_{t}\). The lower image on the left is \(F_{t+1}\). The region with the light orange borders in the upper image is \(IA_{1}\). The region with the pink borders in the lower image is \(IA_{2}\). The 3D plot on the right plots all 2D correlation values. The highest peak helps to estimate the general flow direction. \[ \begin{split} I_{v}(V)&=\sum_{i=1}^{n-1}I_{f}(F_{i},F_{i+1 })\\ O_{v}(V)&=\sum_{i=1}^{n-1}O_{f}(F_{i},F_{i+1})\\ L_{v}(V)&=\sum_{i=1}^{n-1}L_{f}(F_{i},F_{i+1})\end{split}  \tag{3}\]  
For example, let \(V=(F_{1},F_{2},F_{3})\) such that \(I_{f}(F_{1},F_{2})=10\), \(O_{f}(F_{1},F_{2})=4\), \(L_{f}(F_{1},F_{2})=3\) and \(I_{f}(F_{2},F_{3})=2\), \(O_{f}(F_{2},F_{3})=7\), \(L_{f}(F_{2},F_{3})=5\). Then, \(I_{v}(V)=I_{f}(F_{1},F_{2})+I_{f}(F_{2},F_{3})=10+2=12\), \(O_{v}(V)=O_{f}(F_{1},F_{2})+O_{f}(F_{2},F_{3})=4+7=11\), and \(L_{v}(V)=L_{f}(F_{1},F_{2})+L_{f}(F_{2},F_{3})=3+5=8\). For each pair of consecutive frames \(F_{t}\) and \(F_{t+1}\), the omnidirectional motion vector count is defined as the sum of the values of \(I_{f}\), and \(O_{f}\), and \(L_{f}\), as shown in Equation (4). Then, for each video \(V\), the omnidirectional vector count \(T_{v}(V)\) for the video is the sum of the three directional counts, as also shown in Equation (4). \[ \begin{split} T_{f}(F_{t},F_{t+1})&=I_{f}(F_{t},F_{ t+1})+O_{f}(F_{t},F_{t+1})+L_{f}(F_{t},F_{t+1})\\ T_{v}(V)&=I_{v}(V)+O_{v}(V)+L_{v}(V)\end{split}  \tag{4}\]  
Figure 3: (**a**,**b**) Two consecutive frames selected from a 30-s video. (**c**,**d**) Two consecutive frames selected from a different 30-s video. The vector field in (**e**) is generated from the images in (**a**,**b**); the vector field in (**f**) is generated from the images in (**c**,**d**). Table 1 gives the list of the DPIV parameters we used to run our experiments described in the next section. In all experiments, only a single pass of DPIV was executed.