## 3 Experimental Section
### Experimental Setup  
The system model and decoding process of the RSE-based UOCC using a CMOS camera are shown in Figure 4. Our experimental setup was implemented in a transparent water tank with dimensions of 23 \(\times\) 28 \(\times\) 150 cm\({}^{3}\). The water tank was three-fourths filled with tap water or saline water. At the transmitter side, the data packet was first constructed by a computer and loaded into the micro control unit (STM32). The structure of the UOCC data packet contained a 10-bit header and payload. Each packet was transmitted three times to mitigate the gap-time effect and guarantee each image frame captured by the mobile phone contained a complete data packet [14]. The non-return-to-zero (NRZ) on-off keying (OOK) format was utilized to modulate the data. The general-purpose input/output (GPIO) pin output high and low voltage, which corresponded to the data bits \"1\" and \"0\" respectively. Due to the restricted current drive of GPIO, a LED driver was placed after the STM32 to increase the current drive and control the brightness of the 9W white-light LED downlight with a color temperature of 6000 K. Therefore, the GPIO pin of STM32 was responsible for controlling the LED driver rather than directly driving the LED. Figure 3: Flow diagram of the proposed BFC method. After a 1.5 m underwater and 5 cm air channel transmission, a plano-convex lens was adopted in front of a smartphone (Huawei P20 Pro with resolution of 1920 \(\times\) 1080 (1080P) and frame rate of 60 fps) to condense the incoming light at the receiving side. The smartphone camera was employed in video capture mode with a manual configuration of the exposure compensation of -4 exposure value (EV), an international organization for standardization (ISO) value of 250, and the exposure time adjusted to 250 us. The key hardware parameters are shown in Table 1.  
Various underwater scenarios were demonstrated in this study. Since the breaking waves and rain are the main cause of upper ocean bubbles, we used clear tap water at normal temperature (25 \({}^{\circ}\)C) as the experimental environment in the first scenario. In the second scenario, in order to better simulate the real marine environment, we added sea salt to the tap water (25 \({}^{\circ}\)C) at a salinity of 30%. In the above two environments, a tunable air pump with a maximum outgassing volume of 3.5 L/min was employed to generate random air bubbles. The bubble density and the distance from the camera were taken into account to verify the effectiveness of the proposed algorithms. The density of random bubbles was set to be dense or sparse by changing the regulating valve of the air pump. In addition, we denoted the distance between the air pump and the camera with \(K\), which was set to 5 cm and 10 cm in different scenarios. Moreover, we also studied the case of the air pump moving continuously, including the transverse movement of the air pump (keeping \(K\) and density unchanged) in Figure 5a and the longitudinal movement of the bubble (keeping the position in the image and the density unchanged) in Figure 5b. The specific setting parameters of different underwater environments are shown in Table 2. \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameter** & **Value** \\ \hline The focal length of lens/mm & 49 mm \\ The resolution of the camera & 1920 \(\times\) 1080 \\ The ISO of the camera & 250 \\ Frame rate/fps & 60 \\ Exposure compensation/EV & \(-\)4 \\ Exposure time/ μs & 250 \\ The diameter of the LED downlight/cm & 10.5 \\ The power of the LED downlight/W & 9 \\ Voltage of the LED/V & 26 \\ Current of the LED/mA & 130 \\ \hline \hline \end{tabular} ISO: International Organization for Standardization. EV: exposure value.  
\end{table} 
Table 1: Hardware parameters of the experiment. Figure 4: Block diagram of the rolling shutter effect (RSE)-based underwater optical camera communication (UOCC) system for the experiment.