## 2 Proposed RS-Based MIMO-OCC Scheme with Grouped LED Tx
### System Overview of MIMO-OCC Using Proposed Multi-Channel Tx Design  
Figure 5 illustrates the flow diagram for the proposed MIMO-OCC, using the 64-neopixel Tx unit and a RS-based RaspiCam as the Rx. The proposed scheme is an initial study to investigate the upper bounds of the system using the proposed Tx unit, therefore, we assume perfect synchronization and line-of-sight transmission. Neopixels are controlled in the Arduino software domain. First, \(N_{\text{pixels}}\) are assigned to \(N_{\text{chips}}\) of neopixels, which are then grouped column-wise into eight \(N_{\text{groups}}\) to form eight different transmission channels within one Tx unit. For data transmission, we have adopted a non-return-to-zero (NRZ) on-off keying (OOK) data format for IM of tri-color (band \(i\), \(j\), \(k\)) RGB channels (\(P_{i}\), \(P_{j}\) and \(P_{k}\)) as \(P_{i}+P_{j}+P_{k}=1\) and \(P_{i}+P_{j}+P_{k}=0\), which is most commonly used in OCC. The data is generated in the Arduino unit and mapped to the LED addresses with the frequency, \(f_{s}\), given as:  
\[f_{s}=(t_{\text{chip}})^{-1}, \tag{5}\]  
where \(t_{\text{chip}}\) is the 1-bit time per neopixel chip, and its minimum value is 2.5 ms, due to Arduino hardware limitation to ensure flicker-free transmission at \(f_{s}\) of 400 Hz. The maximum number of visible bits per group in a single frame is given as:  
\[N_{\text{visible}}=\bigg{\lfloor}\frac{t_{\text{frame}}}{t_{\text{chip}}} \bigg{\rfloor}. \tag{6}\]  
Note that \(N_{\text{visible}}\) will change with respect to the distance between the source and the camera, as well as camera resolution. Based on \(N_{\text{visible}}\), the data transmission rate is given as:  
\[R_{d}=N_{\text{groups}}(\frac{1}{t_{\text{chip}}}), \tag{7}\]  
where \(N_{\text{groups}}\) is the number of data transmission channels in the Tx unit (see Figure 1b).  
Table 1 shows the resolutions, frame rate and \(N_{\text{visible}}\) of RaspiCam. For further analysis, we selected a \(1920\times 1080\) pixel resolution, which is the most commonly used in cameras.  
Figure 5: MIMO-OCC data processing flow diagram.  
To determine the upper bound of the system, we have selected NRZ-OOK data bit streams for IM of LED groups for transmission over the free space channel. Note that the same data is transmitted by all 8-LEDs per group, as shown in Figure 6.  
At the Rx, a RaspiCam for a given SS, resolution, and frame rate is used for capturing the images (i.e., recording a video stream for 3 s) of the IM light sources over an \(L\) ranging from 20 to 100 cm for post-processing. Note that a smaller image containing the emitter's signal information is transmitted, in order to speed up the processing time at the Rx. Therefore, the first step represents the detection of the region of interest (ROI) [36]. The obtained coordinates, which define boundaries of the ROI, are used for image cropping. Then, image processing is performed on the cropped images, which are then converted to the grayscale in order to retrieve the intensity profile. The threshold level is set based on the average of the received image intensity profile within the ROI. Following thresholding, binarization of the data frames is performed to convert the frame into vector transformation. This process is performed and applied to the remaining frames for decoding the transmitted data bit streams.