## 2 Background and Motivation
### Gaussian Blur  
As mentioned previously, the rolling shutter mechanism adopts a sequential exposure method, displaying the \"ON\" and \"OFF\" status of the illumination source as stripes in the image. Only these stripes carry valid data information sent by the transmitter. Therefore, the extraction of the striped area (RoI) is a core factor affecting the performance of OCC. While one can quickly identify RoIs in images with the naked eye, automatically extracting them via a smartphone is by no means trivial due to the spatial distribution of transmitters. Existing work [30; 34] typically uses computer vision (CV) technology to extract RoI, where  
Figure 1: Schematic of the rolling shutter effect.  
Open Source Computer Vision (OpenCV) algorithms are integrated into demodulator Apps for smartphones.  
As illustrated in Figure 2, the image frame received by the CMOS camera is first grayscaled. Subsequently, Gaussian blur and image binarization steps are used to obtain the RoI's outline further. After the RoI outline in the receiving image is determined, the receiver decoder samples a row or column of pixel grayscale values from the RoI for subsequent demodulation and decoding to enable data communication. However, the realization of Gaussian blur requires filtering by constructing the corresponding weight matrix. The normal distribution is a significant weight distribution pattern, with larger values closer to the center of the bell curve and smaller values moving closer to the center of the bell curve. When calculating the average, we only need to take the \"center point\" as the origin, assigning different weights to each location according to the distance from the center pixel. Since the images are all two-dimensional, the density function of their two-dimensional normal distribution (also known as the Gaussian function) can be expressed as  
\[G(x,y)=\frac{1}{2\pi\sigma^{2}}e^{-(x^{2}+y^{2})/2\sigma^{2}}, \tag{1}\]  
where \(x\) and \(y\) represent the horizontal ordinate distance from the point to be calculated to the center of the convolution kernel, respectively. \(\sigma\) represents the Gaussian function standard deviation, the influence of other pixels in the neighborhood on the center point of the convolution kernel.  
According to the Gaussian function, the weight value of each pixel in the image received by the surveillance camera is calculated, and the weight matrix is normalized. For each pixel of the original communication image, the product of its neighborhood pixels and the corresponding elements of the weight matrix are calculated and then summed to obtain the Gaussian blur value of the current center pixel. The weight matrix is then shifted to the right to calculate the Gaussian blur value for each point. Obviously, the contour extraction technique in OpenCV needs to traverse each pixel in the received image, resulting in high computational complexity and time consumption during OCC decoding. However, most indoor lighting currently employs round, square or rectangular LED luminaires. It is relatively simple to extract the contours of these LED luminaires compared with the complex contour extraction in the field of CV. Therefore, we only need to iterate through part of the pixels rather than all of them for quick positioning, which will effectively diminish the decoding delay of the OCC receiver and strengthen the communication capacity of the OCC.