# A Review-Unguided Optical Communications: Developments, Technology Evolution, and Challenges
## 5 Advancements in Optical Wireless Communications
### Optical Camera Communication (OCC)
Figure 36 depicts a top-level schematic of a typical VLC-OCC system. The input data dk are modulated to generate data stream xk and are then applied into the LED driver circuit that performs the intensity modulation at the optical source. The modulator's output optical beam xop is transferred into free space, and the intensity-modulated optical light is received by an image camera at the receiver. The estimated data are then regenerated after image processing and demodulation. Out of the few popular modulation schemes available for VLC-OCC systems, the simplest one is RZ/NRZ OOK, having a data rate greater than the frame rate of the receiving camera [370]. Since the intensity variations are sensitive to rolling-shutter cameras, the spatial methods are followed for the implementation of m-ary quadrature amplitude modulation and m-ary phase-shift keying techniques. In  
a VLC-OCC system, the flickering effect is avoided using OOK modulation with under-sampled frequency shift (UFS-OOK) or with under-sampled phase shift (UPS-OOK), i.e., alternative 0 and 1 are signified by two different frequencies or phases, respectively [371]. Applying the second modulation method, it is possible to transmit data at double the rate than the first one. Alternatively, an under-sampled PAM scheme is also used to transmit an increased data rate of 250 bps using a 50 fps camera receiver system [372]. Three different colors (red, green, and blue) used as optical source modulations, using the color shift keying (CSK) technique at the data rate of 150 bps and 5.2 Kbps, are given in [373; 374], respectively. The modulation of spatial components of a traffic-light VLC-OCC system using a two-dimensional Harr wavelet transform is detailed in [375]. Nowadays, due to the availability of several sophisticated opto-electronic components, a VLC-OCC channel can be either LoS [358], NLoS [376], or a combination of these. Therefore, the classical typical channel impulse responses for all these three cases reported in the literature [346] can be adopted. Typically, today's VLC-OCC receiving camera consists of lenses, a focus-adjustable aperture, optical filters, a lens let array, and integrated sensor chips [377]. The usage of a lens let array increases light collection efficiency even though incident light falls on only a portion of the camera aperture. In terms of the camera, there are two types: (i) aCCD, which is not generally used in smartphones due to the bigger analog-to-digital converter (ADC) compared to CMOS devices; and (ii) a CMOS sensor. Note that the main difference between these two is the capturing mechanisms of light: the global and rolling shutter modes (see Figure 37). In the former, at the same time, all pixels are exposed to light, i.e., capturing the ON and OFF states of the light source in a single frame, which is widely used in CCD-based image sensor. Since a single large-bit ADC is used, the CCD capturing and processing time for the entire frame is high. The sensor, in the latter, scans the pixels of the entire image row by row, with the reset and readout pulses supplied to each row successively. The sample rate of the ADC limits the scanning process, which is tied to the system clock. The camera's detecting pixel constantly integrates incoming light, with each row of pixels being exposed at the same moment during the exposure time \(\mathrm{T_{exp}}\). Because each row is exposed to light once in rolling-shutter mode, light from several sources is caught simultaneously in a single frame. When compared to a global shutter-based camera, a rolling-shutter-based camera can be employed in a VLC system since it provides flicker-free transmission with higher data rates [378]. OCC image-processing techniques can be conducted in MATLAB, OpenCV, Python and FPGA. Because the data in VLC-OCC are collected as a two-dimensional image, the traditional SNR method cannot be used to assess the performance.