Compressive Sensing-Based IoT Applications: A Review

: The Internet of Things (IoT) holds great promises to provide an edge cutting technology that enables numerous innovative services related to healthcare, manufacturing, smart cities and various human daily activities. In a typical IoT scenario, a large number of self-powered smart devices collect real-world data and communicate with each other and with the cloud through a wireless link in order to exchange information and to provide speciﬁc services. However, the high energy consumption associated with the wireless transmission limits the performance of these IoT self-powered devices in terms of computation abilities and battery lifetime. Thus, to optimize data transmission, different approaches have to be explored such as cooperative transmission, multi-hop network architectures and sophisticated compression techniques. For the latter, compressive sensing (CS) is a very attractive paradigm to be incorporated in the design of IoT platforms. CS is a novel signal acquisition and compression theory that exploits the sparsity behavior of most natural signals and IoT architectures to achieve power-efﬁcient, real-time platforms that can grant efﬁcient IoT applications. This paper assesses the extant literature that has aimed to incorporate CS in IoT applications. Moreover, the paper highlights emerging trends and identiﬁes several avenues for future CS-based IoT research.


Introduction
Internet of Things (IoT) refers to the large set of smart embedded devices connected to the Internet to provide specific services to meet the users demands [1]. IoT presents the shift from only connecting the end-user devices to the Internet to using the Internet itself to interconnect smart objects (known also as IoT devices) and to communicate with each other and/or with humans to offer a wide range of applications and services [2,3].
IoT platforms usually deploy a large scale of smart objects including wearable sensors, actuators and radio frequency identification (RFID) devices to remotely monitor different physical, environmental and physiological quantities to improve the everyday activities of the end-users [4,5]. In fact, the IoT devices often operate in a long-term mode and communicate wirelessly with each other and with a central fusion node in order to empower diverse remote monitoring platforms. In general, remote sensing devices are battery-driven, hence their performance is prone to the limited battery lifetime leading to both poor integration and user adherence. Thus, to overcome those limitations, the acquired data should be first compressed and then transmitted through optimized paths to the fusion centre to minimize the high energy. However, applying advanced data compression and transmission techniques may also consume considerable onboard energy. Therefore, the adopted compression technique has to sustain a long-term efficient monitoring along with an optimized power consumption.
Compressed sensing (CS) is an emerging signal processing paradigm which aims to acquire directly a compressed form of signals with sparse behavior at the sensing stage and enables a high reconstruction quality at the receiver stage [6,7]. CS presents an alternative paradigm to the traditional acquisition fundamentals that state that the number of measured samples should be at least equal to the number of samples in the original signal to ensure an exact recovery. However, these conditions do not take the structure of the signal into consideration. Thus, if the signal of interest is sparse, i.e., the signal can be represented by a smaller number of non-zero coefficients than its original dimension, CS claims that taking only a few numbers of random linear measurements (projections) of the sparse signal is enough to capture the salient information in the signal to provide an acceptable reconstruction quality. CS aims to shift the complexity from the sensors which are usually resources constrained and self-powered to the receiver side which is usually installed on computing platforms with relaxed constraints.
For most real-world applications, it is always possible to find a sparse or compressible representation for signals of interest using the appropriate transformation. Thus, CS has spread widely in various applications such as radar, image processing, bio-signal compression, wireless communications and many others.
For instance, the healthcare sector has witnessed a tremendous efforts to explore CS in different applications. Experts believe that CS would be beneficial for a wide range application in medical laboratory and pathology testing, particularly where many data are generated. CS may also improve wearable health monitoring platforms, making it smaller, cheaper, and more energy efficient [8]. CS is expected to optimize power and energy used in wireless ambulatory devices, hence extending the sensor lifespan and significantly simplifying hardware design and reducing both the size and cost of the entire healthcare platform. CS-based healthcare applications include medical imaging [9], electrocardiogram (ECG) monitoring [10], EEG compression [11], biometric solutions [12], etc.
Subsequently, IoT platforms have also witnessed the integration of CS into its various application based on two properties that most of the IoT platforms exhibit. First, a wide range of real-world data can be well approximated by a sparse signal using the appropriate transform. For instance, both discrete cosine transform (DCT) and discrete wavelet transform (DWT) provide a good sparse representation for ECG , images, temperature, humidity data, etc. Moreover, it is always possible to form a sparsifying basis by means of dictionary learning methods [13]. Thus, exploring CS has been widely investigated in long-term data acquisition for large-scale wireless sensor networks (WSNs) [14][15][16].
The second property relies on the sporadic transmission schemes that most of the IoT platforms exhibit. In a sporadic transmission scheme, not all devices transmit their data simultaneously to the fusion node, rather only a small number of devices contribute on the aggregated signal at any given time. i.e., the rate of the active devices at each transmission time slot is very small. Thus, the architecture sparsity can be explored and the knowledge about the nodes activity can be exploited at the cloud level by means of sparsity aware and joint detection protocols to achieve a high data reliability with a small number of transmitting devices.
The objective of this paper is threefold: First, it aims to present a simple and a coherent overview of the fundamentals and the mathematical models that underlie CS concept as well as its well-considered recovery algorithms. Further, the paper highlights the main difference between CS and state-of-the-art compression techniques. Additionally, the paper also reviews the distributed compressive sensing (DCS) which represents the extension of CS to the multi-channel acquisition scenario.
Secondly, the paper surveys the different research efforts in the area of CS-based IoT platforms aiming to emphasize on the importance of deploying joint CS-IoT applications. Since IoT platforms are multidisciplinary paradigms that support the connection between different cross layers from the data sensing to the enabled services and applications. The paper divides the IoT into three main layers, namely, sensing, processing an application. Thereafter, for each layer, the paper delivers a thorough comprehensive discussion for the extant efforts and research directions that have been investigated and quantified in the literature to design and empower a high efficient embedded CS-based IoT platforms. To the best of our knowledge, no such review study has been presented in the literature before.
Third, the paper extends the discussion to illuminate the main research orientations and the emerging trends that have been originally developed out of the IoT scope. However, they hold great potentials for future integration within the context of energy-efficient real-time response CS-based IoT applications. This review paper aims to present a significant contribution to the joint CS-IoT researches by reviewing current work, diffusing insights and highlighting the important research trends that can be devoted to the CS-based IoT applications.
The remaining sections of this paper are organized as follows. Section 2 provides an overall description of general IoT framework and architecture. In Section 3, a brief overview of CS concept is provided by describing the system model, highlighting the general considerations on the design of the sensing matrix and presenting the most considered recovery algorithms associated with CS. Section 4 addresses the main issue of this paper by discussion thoroughly the joint CS-IoT efforts over the different IoT layers. The limitations facing each layer are exposed and the related CS efforts that have been made to tackle them are analyzed. Section 5 presents a discussion about open research issues and avenues for future work in IoT. Section 6 concludes the paper.

IoT Framework
The international telecommunication union (ITU) defines the IoT as a global infrastructure for the information society, enabling advanced services by interconnecting (physical and virtual) things based on existing and evolving interoperable information and communication technologies [17].
IoT consists of a network of sensors, actuators, wireless communication protocols and data processing technologies that interact with each other to provide a specific application [18]. IoT is often characterized by a large number of highly dynamic heterogeneous devices each with different and limited communication and computation resources. This heterogeneity in both the software/hardware levels requires a new level of networking/communication protocols as well as adaptation mechanisms [19]. Moreover, several other issues have to be addressed as well in both the integration and the management of these devices, such as scalability, information exchange, power consumption, interoperability and system flexibility for the dynamic change in the network topology [20]. Moreover, IoT has shifted the applications from the scale of a single device to real-time massive deployments of embedded cross-platform and cloud technologies. Therefore, to link everything together, several research groups and standardization bodies have approached and addressed these issues from several perspective [21].
Subsequently, different architectures have been proposed in the literature to establish a universal framework for IoT applications. These architectures take into consideration several parameters related to the IoT devices, the communication protocols, the networking and the targeted applications and services. For instance, a three-layer IoT platform consisting of a perception layer, a communication layer and a service layer has been proposed in [22,23]. Liu et al. considered an IoT architecture of four layers, namely physical, transport, middleware and application layers [24]. A five-layer IoT platform consists of perception layer, processing layer, transport layer, application layer and the business layer has been proposed in [25]. Table 1 summarizes a three-layer IoT platform with a brief description of the functionality of each layer. The IoT platform presented in Figure 1 consists of several sensors that can be deployed to gather information about the different physical phenomenon, these sensors are interconnected through a wireless network and communicate with a local processing unit where the data can be stored and lightweight processing can be performed. Afterwards, data are routed to the application layer hosted on the cloud where different data analytic algorithms can be applied to provide explicit services.

IoT Layer Description
Sensing layer Collect physical data entities (temperature, ECG blood pressure) using different sensors and convert the collected measurements into digital signal.

Processing layer
The Processing Layer provides mainly transient data storage for the data received from the sensors and performs local data processing, executes real-time actions, and up-links the data to the cloud.
Application layer The task of the Application Layer is based on the information routed from the processing layer to perform data analysis and develops diverse IoT services.
IoT platforms have evolved rapidly in the last decade by leveraging the interactions among different types of smart devices, such as vehicles, medical sensors, cameras and RFID systems. Subsequently, a wide range of applications has been enabled, for instance, experimental monitoring, automated industry, connected health-care, smart buildings, intelligent transportation systems (ITS), smart grid, etc. [26]. Moreover, growing interest has been dedicated to incorporate IoT platforms in an environmental context. Strong efforts have been made by several national governments and leading information technology (IT) companies to adopt IoT solutions in the development of smart cities [27]. Even though a unified smart city framework has not been clearly defined yet, all the effort to develop this sector of applications aims to fully exploit any public resource to enhance the quality of the services offered to the citizens [28]. Smart cities can provide assistance for public service management. These services include transportation [29][30][31], city surveillance and emergency management [32,33], preservation of cultural heritage [34] and environment monitoring [4,28,35].

Compressive Sensing Overview
CS is a two-stage paradigm that acquires the data in a compressed form at the sensor and reconstructs efficiently the original data from a fewer sample signal at the receiver. Thus, CS simultaneous senses and compresses the data in one single operation.
The well-established traditional sensing and processing theory in WSNs relies mainly on the Nyquist-Shannon sampling theorem which presents the main pillar of the digital processing realm. This theorem states that, given any signal with a bandwidth of W, its information is entirely preserved if it is sampled at secured sampling frequency f s ≥ 2W. Further, with the ever-increasing number of digital sensing devices, several challenges have faced this paradigm, from the torrent amount of data generated by the different sensing devices to the high data transmission rate and unbearable constraints on the sampling/processing platforms. Such challenges would largely increase the cost of the wireless transmission and shorten the sensors lifespan. Thus, to address the challenges associated with high-dimensional data, researches depends often on compression techniques by discarding the redundant samples in the signal. The benefits of compression will apply to the whole ubiquitous computing environment, as decreasing data size means shorter communication delays, efficient usage of bandwidth and reduced battery drain. For instance, taking WSN applications, where the energy consumption in the sensing nodes is mainly dominated by wireless communication rather than the onboard processing. State-of-the-art radio transmitters exhibit energy consumption of order of nJ/bit while all the other sensor circuits consume at most only tens of pJ/bit [36]. This cost disparity suggests that some data reduction strategy at the sensor node should be employed to minimize the energy cost of the system. Thus, reducing the number of the transmitted samples is necessary to achieve a long lifespan. However, it should be noted that these compression techniques remain useful as long as they do not consume more energy than the one saved by reducing the transmitted samples. In fact, in WSN, this condition is fulfilled.
Recently, to tackle the issue of acquiring a huge amount of redundant samples, a very interesting theory, namely CS, has been proposed [6,7]. CS suggests that it is possible to surpass the traditional limits of sampling theory for a specific type of structured signal by reducing the sampling rate without any significant loss in the data information. The authors argued that, if the information rate of the signal is less than its bandwidth rate, i.e., the signal is either sparse or compressible, then it is possible to capture all the information without any loss using fewer samples than what the Nyquist-Shannon theorem stats. Hence, CS enables a potentially large reduction in the sampling and computation costs for sensing signals with sparse or compressible behavior.
CS differs significantly from state-of-the-art compression techniques. While the latter exhibit a two stages framework, first, the signal is sampled with respect to its bandwidth rate following the Nyquist sampling frequency high f s to acquire an N-length signal. Secondly, data compression is performed by means of filtering, coding and extracting the most salient features in the signal to reduce the signal dimension from N to M such that (M N). CS, on the other hand, is a one single stage framework that aims to perform both acquisition and compression simultaneously to acquire directly a compressed form of the signal. To this end, CS leverages the fact that most real-world signals exhibit a sparse behavior when represented by the appropriate basis (this basis can be either a fixed transform such DCT and DWT or it can be formed by means of dictionary learning techniques). A sparse behavior indicates that the signal information rate is much smaller than its bandwidth rate. Thus, rather than sampling the signal at a Nyquist rate and then performing compression, CS takes random measures of the signal in a sub-Nyquist rate corresponding to the signal information rate. This process is performed by taking inner products between the signal of interest and a well-designed tall sensing matrix Φ ∈ R M×N . Therefore, to reduce sampling rate and to achieve the objective of joint sensing and compressing, CS is applied prior to sampling and quantization adopting two approaches, Analog CS and Digital CS [37]. Therefore, Applying CS will result in the sensing/transmission of fewer samples. Thus, such paradigm is well suited for WSN applications which require a continuous data.

Mathematical Overview
Let the orthogonal basis {Ψ i } N i=1 span R N . Then, any signal x ∈ R N can be expressed as a linear combination of the elements of Ψ with the elements of the vector s = [s 1 , s 2 , · · · , s N ] T ∈ R N such that The signal x is said to be k-sparse if the vector s has only k N non-zero entries.
The set of the indices corresponding to the positions of the non-zero entries of s is called the support of s and denoted as Σ k . In addition, the matrix Ψ is called the sparsifying matrix in the context of CS.
To perform a compressed acquisition on the data, the input signal x is multiplied by a tall random sensing matrix; hence, the acquisition process in CS can be modeled by: where Φ ∈ R M×N represents the sensing matrix used to acquire and compress the data. Moreover, the ratio N M is defined as the compression factor (CF).

Sensing Matrix
Ideally, the sensing matrix Φ has to fulfill the following constraints: • Optimal or near-optimal reconstruction performance: The measured data maintain the salient information of the signal for reconstruction purposes.

•
Optimized sensing performance: Only a few measurements are required to obtain an optimal (near-optimal) recovery. • Universality: The sensing matrix maintains a low coherence with almost all sparsifying matrices.

•
Low complexity, fast computation and structure-based processing: These features of the sensing matrix are desired for large-scale, real-time sensing applications.

•
Hardware friendly: Easy and efficient implementation on hardware is necessary.
The above-mentioned conditions present the ideal criteria for any sensing matrix. However, it is hard to find matrices that satisfy all these conditions. Thus, two relaxed conditions that can grant a high reconstruction quality have been established for designing the sensing matrix. First, a low coherence between the sensing matrix and the sparsifying matrix is recommended to enable the sensing matrix to capture the salient information of the original signal with the minimum number of projections [38]. Second, the sensing matrix should satisfy the restricted isometry property (RIP) to ensure that the compression preserves the signal information (k-RIP) and to ensure that mapping the signal x from a high dimension space R N to a lower dimension one R M should be unique, i.e., it should preserve the distance between each pair of two distinct signals x and x (2k-RIP) .

Reconstruction Algorithms
Fast and efficient reconstruction algorithms are the keys to incorporate CS in real-world applications, thus developing such algorithms have been the main concern in the CS community. Several reconstruction algorithm classes have been proposed in the literature. Nevertheless, the well-recognized algorithms fall under the umbrella of two major algorithmic approaches, namely, convex optimization and greedy algorithms.

Convex Optimization
A straightforward approach to recover a sparse vector x is to solve the 0 minimization problem: However, the 0 minimization problem is considered as an NP-hard for large scale matrix [39], i.e., solving Equation (2) for any large matrix Φ is necessarily computationally intractable. Therefore, convex relaxation to Equation (2) has been considered to overcome the drawback of 0, leading to 1-minimization.
The 1-minimization approach, known as basis pursuit (BP) [40], considers the following solution: A noisy acquisition model adapts itself by considering the basis pursuit denoising (BPDN) solution [41]:x = arg min x 1 subject to y − Φx 2 ≤ (4) where represents the upper bound on the noise level. Further, if there is no knowledge about the noise level, least absolute shrinkage and selection operator (LASSO) approach [42] can be explored: where γ > 0 represents a tuning parameter for different levels of sparsity.

Greedy Algorithms
Greedy algorithms have been widely exploited in CS applications due to their relatively simple framework which provides a fast reconstruction with a low implementation cost. These methods enhance iteratively the approximation for the signal by making locally optimal choices. Greedy algorithms consist of two main steps, element(s) selection and coefficients update. These methods are usually initialized with a residual r [0] = y, signal estimatex [0] = 0 and empty support set T = ∅. At each iteration j, single or multiple elements from the sensing matrix are added to the support set, the signal estimate is calculated using a least square approach . The algorithms halt when the residual norm is smaller than a predefined threshold.
The performance of these recovery algorithms depends on the targeted application and no unique recovery metric is established to determine the best recovery technique for all scenarios. Thus, both theoretical and experimental performance comparison between the different classes of CS recovery algorithms can be found in [52][53][54][55]. Table 2 lists the details regarding the complexity and the minimum number of measurements required for each algorithm to achieve its optimal recovery bound. Table 2. Complexity and minimum measurements required for CS reconstruction.

Distributed Compressive Sensing
Conventional CS theory explores only the intra-signal structures (sparsity and compressibility) at a single sensor. However, if the scenario of interest presents an architecture where the data are not only collected by a single sensor but rather with a distributed network of sensors, then exploiting the collaboration of these sensors would lead to an additional gain in the information collected and improve the design of the application. Such scenario arises in several IoT monitoring applications, where a network of wireless sensors is deployed to measure different scalar physical/physiological quantities, such as temperature, light, humidity, human vital signs, etc. If the sensors are densely deployed, their measurements are correlated and they are likely to share certain structures.
CS-based multi-sensor architecture with J sensors can exhibit two scenarios. In the first one, the acquired signals are independent; hence, the reconstruction problem is equivalent to performing J individual reconstruction operation for each sensor and no collaboration between the sensing nodes can be explored for the reason that each sensor holds no information about the data acquired by the other sensors. However, in the second scenario, which emerges frequently in most IoT applications, the signals acquired from all the sensor are highly correlated, which presents an inter-signal sparsity structure. Therefore, to reconstruct the whole signal ensemble, not only the individual sparsity of each sensor measurements can be exploited, but also the dependency among the samples acquired by different sensors at the same time should be explored to reduce the required number of measurements to assemble the most pertinent information related to the sensed phenomenon. This process ,which we refer to as joint measurements recovery, is the motivation for introducing distributed compressive sensing (DCS) concept [56].
DCS presents a new distributed coding paradigm that exploits both intra-and inter-signal correlation structures. In DCS scenarios, a number of sensors acquire sparse signals which are correlated with each other. Each sensor individually acquires a compressed signal by taking random projections and then transmits it to the fusion node. More importantly, DCS requires no collaboration between the sensors during the acquisition phase. However, the recovery process can exploit the inter-signal correlation between the measurements to reconstruct all the signals simultaneously. The recovery algorithms associated with DCS are derivatives from their CS counter-parts, such as multichannel-BPDN [57], simultaneous OMP (SOMP) [58] and distributed compressive sensing OMP (DCS-SOMP) [56] which is the general form of SOMP.

CS-Based IoT Applications
The heart of any IoT platform is the smart devices that build up the sensing layer. Data acquisition is performed using several sophisticated smart IoT devices that are deployed in different locations to collect various types of data over a long period depending on the targeted application. The collected data are usually large and contain some redundant information. Therefore, the data are first transmitted to a local processing unit with adequate storage and computing capacities to perform different pre-processing techniques on the samples to extract different information and features. The processing unit also plays the role of a gateway to route only the useful information to the cloud rather than transmitting the whole collected data, this approach can significantly reduce the network bandwidth.
CS presents a very promising paradigm to be explored in IoT applications. A CS-based IoT framework can be implemented on three levels. First, at the sensing level, where data acquisition and transmission process presents a challenging task in term of power consumption, thus minimizing the latter is the critical issue to tackle. Therefore, CS can be deployed effectively as a compression technique to develop an energy-efficient scheme for data acquisition and transmission. Second, CS can be deployed on the embedded systems implemented on the local processing unit to realize "CS-based Edge computing platform" where the compressed data transmitted from the sensors can be aggregated, stored and reconstructed to extract salient information and important features to be sent to the cloud which hosts the application layer. The latter represents the third level in which CS can be explored along with other data analytic algorithms to execute actions and provide solutions based on the specific tasks that the IoT is supposed to deliver. Figure 2 illustrates the possible scenarios where CS can be deployed over IoT platform.

Sensing Layer
The proper integration of sensors, actuators, RFIDs and communication technologies will deliver a strong foundation for the sensing layer of any IoT platforms. An adequate sensing layer that meets the high demands of energy-efficient IoT application should be empowered by exploring efficient hardware/software solutions. The latter consist of incorporating state-of-the-art compression techniques and data routing protocols.
The hardware part of the IoT sensing layer is enabled using two main technologies, RFIDs and WSNs. While RFIDs are mainly used to enable low-cost identification and tracking applications, WSNs can provide the IoT with broad sensing and actuation capabilities. In addition, intensive research and efforts have already been dedicated to expanding the WSNs to cover unlimited set of IoT applications.
RFIDs generally consist of two major elements, an RFID tag embedded on a chip with a unique identification sequence (ID) and a radio scanner device, called RFID reader. RFIDs have gained a lot of attention in IoT applications, they serve to store data, to track objects and to communicate with other devices [59]. Moreover, RFIDs present appealing solutions due to their ability to operate in battery-free mode and their lowest cost and small dimension [23].
For IoT applications, RFIDs have been used in different variations, the tags could be implemented on the human body [60], deployed on the skin [59] or attached to the walls or other objects. Although the reading distance of RFIDs (the distance between the tags and the reader) is not large (5-6 m), they can be deployed efficiently for indoor tracking applications [61].
Several IoT applications have witnessed the integration of RFIDs, for instance, Khan et al. [62] presented the design and the implementation of a GPS-RFID tag that can be effectively deployed for different IoT tracking applications. The designed tag operates in a semi-passive mode (battery assisted) with a reading range up to 5.6 m. In addition, it can be reconfigured to serve as a continuous data transmitting platform in the online mode or as data logging platform in the offline mode. Attran et al. [63] presented new chipless RFID tag using microelectromechanical (MMES) systems technology for IoT applications, the proposed prototype is expected to reduce the cost of the RFID tag as the chip fabrication is eliminated, hence, the cost of the RFID tag will be as low as barcode labels.
On the other hand, WSN-based IoT applications can be divided into two categories: outdoor and indoor. Outdoor monitoring collects environmental data that can be used in the context of smart cities (light, humidity, traffic, GPS tracking, and air monitoring), whereas indoor monitoring is more concerned with smart-home applications that can provide remote healthcare services, in which the sensors can be either distributed over the house to measure humidity, temperature and detect motion or they can be deployed over the human body to acquire vital signs such as electrocardiogram (ECG), electroencephalography (EEG), blood pressure, glucose level in the blood, etc.
It should be noted that most of the progress made in the WSN-based monitoring applications can be adapted easily for IoT. However, there is a crucial difference between most IoT applications and their WSN counterparts in terms of device heterogeneity, i.e., WSNs usually deploy a set of similar sensors that collect a single type of data, whereas, in IoT applications, a large scale of sensors acquire different types of data. Moreover, inadequate deployment of WSN nodes can result in a severe degradation in the reliability of the system and increase the complexity and the cost for the overall platform. Thus, numerous researches that aim to bridge the gap between exciting WSNs and future IoT platforms have been widely discussed in the literature [64][65][66][67].
The major problem to tackle in the sensing layer is the high power consumption. Following the several results presented in the literature, the radio frequency transmission of the data over the wireless channel is the most power consuming process [36] and it can highly decrease the performance of the system, mainly if the sensors used are self-powered. Thus, determining the best compression technique in term of minimizing power consumption is the first step to develop an energy-efficient platform.
Besides CS, many research groups have developed low power, low-cost compression techniques exploring state-of-the-art compression algorithms [68][69][70]. Subsequently, various efforts have been made to establish different frameworks to compare CS with state-of-the-art compression algorithms for different applications to determine the optimum compression technique.
First, Mamaghanian et al. [71] developed a non-adaptive CS-based platform for ECG compression on the Shimmer mote. In addition, they provided a comparison study between the performance of CS and DWT-based ECG compression in terms of reconstruction quality, node lifetime and CPU execution time. Although the results show that DWT outperforms the non-adaptive CS in terms of reconstruction quality (to achieve very good reconstruction quality, DWT requires M = 0.3 × N samples in the compressed signal, whereas, to achieve the same reconstruction quality, CS requires M = 0.5 × N), CS-based compression has shown to provide a better energy-efficient performance, with a node lifetime extension of 37.1% over DWT and an execution time 20 times faster than the one taken by DWT. Chen et al. [36] implemented and quantified two different implementation approaches for CS, namely, digital CS and analog CS. The analysis showed that for real WSN applications, digital CS provides a better energy efficiency performance. Moreover, they compared CS with the Lempel-Ziv-Welch (LZW) compression technique; the CS compression system offers six times higher compression factor and over ten times lower implementation (storage/power) cost.
Moreover, Razzaque et al. [69] provided a more detailed comparative study including CS, DCS, transform coding (TC), predictive coding (PC) and adaptive sampling (AS) approach [72]. The work has investigated three different datasets including temperature, seismic signals and CO 2 emission data. The overall obtained results reveal that CS improves the energy saving by a factor of 79.4% compared to 62.43% and 34% obtained by TC and AS, respectively. In addition, Abate et al. [73] conducted a comparative study in terms of reconstruction quality and computation time between CS and the segmentation and labelling technique [74] which has been considered for the definition of the new standard of the IEEE 1451 [75]. The obtained results show that, even though CS is more complex, it outperforms remarkably the segmentation and labelling technique in terms of data reconstruction and robustness to noise. Furthermore, a comparison between CS and transform coding (TC) and transmission without compression in terms of energy consumption is presented in [15]. First, the authors established energy dissipation models for both approaches to investigate the energy consumption in a unified framework. The obtained results indicate that CS extends the network lifetime up to four times compared to no transmission without compression processing if the data are highly sparse and the transmission range is between 50 m and 100 m. All these results prove that incorporating CS in IoT applications will provide more improvements in terms of energy-efficiency. Thus, with the relative superiority of conventional CS over classical compression techniques being established, a fundamental question is how to raise the standards and further enhance the exciting results of CS to minimize power consumption. To this end, various approaches have been proposed in the literature to answer this fundamental question.

Adaptive Measurements
The intuitive solution is to minimize the number of the transmitted samples from the sensors to the processing unit by selecting a high CF. However, using a high CF can degrade the performance of data reconstruction. In addition, the optimal value of CF depends heavily on the signal sparsity which may vary in time (at the level of each sensor) and in space (sensors may have different readings for the same signal), hence CF can be high as long as it assures an acceptable recovery performance to meet the desired quality of service (QoS) for a specific application. Therefore, determining the optimal CF has been the quest of different studies by exploring different ideas and approaches. Fragkiadakis et al. [76] proposed an adaptive framework for selecting CF value to overcome the signal sparsity level variations from data-block to another. The proposed framework consists of a network of sensors, where each sensor transmits its data to a central node (CN). First, each sensor transmits a part of its data which can be seen as a training set to the CN. The latter starts a compression/decompression operations with several values of CF to determine the signal sparsity along with its best CF based on a predefined QoS metric (error of reconstruction). In addition, the CN creates a profile that assigns to each range of sparsity the best CF that renders the minimum reconstruction error. Furthermore, Charalampidis et al. [77] proposed a new approach to detect the changes in the signal sparsity using change point methods (CPM) [78] to update the CF value each time the signal sparsity level changes.

Weighted Measurements
Another approach to optimizing the number of transmitted samples is to assess a weight to each sensor depending to its importance in the application (a scenario that often occurs in the heterogeneous WSNs). This idea was first introduced in the context of CS for image reconstruction using wavelet decomposition where different CFs are assigned to different wavelet sub-bands [79]. Subsequently, borrowing the same concept to IoT applications, Lee et al. [80] introduced weighted CoSaMP (wCoSaMP) reconstruction algorithm to enable a new framework for data acquisition in heterogeneous IoT platforms where different type of sensors have different impact on the overall system, for instance, for IoT-based connected health, the ECG data are more crucial than humidity and temperature data. Applying this concept, fewer measurements are needed to achieve the same performance as conventional CS.

CS-Based Data Gathering
Efficient data gathering suitable solutions for the high energy consumption in large-scale WSNs. Luo et al. [81] proposed a compressive data gathering (CDG) approach to extend the sensors lifetime in multi-hope architecture, where each node performs a CS acquisition and transform its random measurements to the next node. Subsequently, the data at the sink node will be the sum of the different random measurements. CDG approach disperses both communication and computation costs to all sensor nodes, resulting in a natural load balancing. Moreover, based on CDG, Xu et al. [82] presented compressed sparse function (CSF) algorithm for data gathering in WSNs. This approach adopts DCT to sparsify the collected data from each sensor and then transmits the sparse functions to the sink. Then, the reconstruction is performed by means of polynomial interpolation techniques. This approach allows reconstructing the whole ensemble data from an incomplete set of received measurements. Beside CSF and CDG, Xiang et al. [83] proposed minimum energy compressed data aggregation (MECDA) approach. The algorithm determines the best routing path from the sensor nodes to the sink node that consumes the minimum power. To determine this optimum path, the algorithm exploits minimum spanning tree and shortest path forest techniques. Nevertheless, this algorithm maintains its optimum performance as long as the network topology remains fixed. In addition, an opportunistic routing approach called compressive data collection (CDC) has been proposed in [84]. In the proposed approach, each sensor selects randomly one of its neighbours by means of opportunistic routing protocols [85] and forward to its compressed reading.

Sparse Networks
From another perspective, IoT applications are usually deployed using dense WSNs in which the data collected from the sensors are redundant and highly correlated. Thus, exploring the redundancy in the reading each of sensor can be used to minimize its duty cycle, thus, prolonging its lifespan and subsequently the network lifetime. Furthermore, the high correlation between the measurements can be used to enable a scheme where only a few sensors operate in an active mode for each time slot. By taking advantage of these facts, Du et al. [86] presented CS based activation scheme for water distribution in IoT networks, the proposed method selects a few numbers of sensors to send their data to the sink at each time slot, which renders a remarkable reduction in the power consumption. Besides, a recent active node selection framework aims to improve signal acquisition performance, network lifetime, and the use of spectrum resources has been proposed in [87]. The proposed approach exploits the temporal correlation to select the active nodes based on the support of the data reconstructed in the previous time slot. In addition, the correlation between the sensor's measurements were exploited in [88], in which a 1-bit DCS-WSN framework was proposed to achieve more data compression while retaining an acceptable performance using the joint sparsity between the sensors reading. Zhang et al. [89] presented another idea for saving energy in WSN based on regression and CS. The main idea is to divide the sensors into different clusters, where at each cluster only one sensor (reference) node works in a periodically sampling mode, whereas all other nodes in the cluster exhibit a CS-based acquisition. After receiving data from all nodes, the sink node runs prediction algorithm to roughly estimate the signal series of all nodes based on the signal of the reference node.
A comparative study has been conducted [86] to compare the performance of different data gathering approaches in term of the achieved network lifetime. The investigated scenario includes a network of 100 sensors deployed randomly over a specific area, in which only 20 sensors are active at each time slot and all the sensors transmit their data to a single node. The lifetime achieved by the approach proposed in [86] is about 5 and 2.5 times the CDG and CSF lifetime, respectively, whereas the lifetime achieved by the CDC algorithm is about 80% of the achieved lifetime using the proposed algorithm in [86].

CS-Based Routing Protocols
Routing and CS have been jointly addressed in [90] in which the routing path is iteratively built through a greedy choice to minimize the intermediate coherence of the measurement matrix with the sparse matrix. Moreover, based on the results obtained in [81,90], where the authors proved the benefit of their approaches in terms of good reconstruction quality with fewer transmitted samples, Caione et al. [91] introduced and quantified a new data routing approach. The authors proposed a DCS-based data gathering in large-scale WSNs based on CS acquisition, where they have investigated the performance from a node lifetime point of view. The approach considered in [91] provides each node with the ability to take the proper decision about the optimum value of its CF. After compression, the data are routed by exploring a hybrid approach based on DCS and pack and forward (PF) technique. The aim of this hybrid is to reduce the overall number of transmitted packets. The obtained results reveal an extension in the network lifetime compared to the use of conventional DCS even with a large number of sensors in the network. Moreover, Masoum et al. [92] built up a probabilistic model for the ensemble of the signal using a Bayesian approach and adopted belief propagation (BP) algorithm to recover the ensemble measurements. Their results show an improved reconstruction quality as well as a reduction in the energy consumption up to 20% compared to Multichannel BP associated with DCS.

Processing Layer
With the deployment of huge, dense WSNs to collect different types of information. Big data is generated from the sensing objects and routed to the cloud. Even though the big data provides a comprehensive knowledge about the sensed phenomena, they require very powerful storage, processing and information retrieving mechanisms. Moreover, big data is usually so massive that it exceeds the capabilities of commonly used computing environments. Thus, it restrains the performance of the IoT platforms by increasing the high-level service requirements (massive storage, expensive processing power, high latency, etc). Subsequently, a major challenge in IoT platforms design is to decide the layer in which the data can be processed. In fact, this decision depends on several factors such as real-time constraints, energy efficiency, communication bandwidth, delay, etc.
Therefore, for large-scale IoT platforms in which real-time response and power efficiency are strict requirements, opting for a device-centric processing does not seem to be effective. In a device-centric approach, the micro-controllers embedded within the sensors are exploited to process the data. Nevertheless, the computation/communication resources of these sensors are limited which would lead to poor system performances. On the other hand, opting for a cloud-centric processing can satisfy the computing requirements, however, the transmission of a substantial amount of data over the wireless channel incurs a heavy communication overhead. Consequently, cloud processing usually faces issues of scalability, high energy cost, latency and bandwidth availability [93]. Thus, a trade-off solution can be endorsed by adopting a gateway/fog centric architecture. The IoT gateway devices which are used to provide an interoperability between the different heterogeneous cross platforms are usually installed on powerful computing embedded platforms such as ARM Cortex-A [94]. In addition, smartphones can be used as processing units for gateway centric IoT [95].
Moreover, gateway/fog computing does not only bring the computing platform to the edge of the network but it also provides a low latency, location awareness, smart geographical distribution and on-line analysis [96]. Therefore, moving the computation from the cloud to the edge near the IoT devices would help to meet the computation requirements, to provide real-time response and to improve the scalability of the network. This approach is known as edge computing.
Edge computing presents the new trend in IoT infrastructure development; it aims to analyze the time-sensitive data at a platform in a proximity to where the data were initially collected rather than sending many data to the cloud. Edge computing platform does not eliminate the role of cloud computing, however, it will only send selected information and historical analysis for long-term storage and deep data analytic operations. Edge computing can be well suited for CS-based IoT applications, where the compressed data can be reconstructed at the gateway unit, then only the extracted features, the reconstruction reports and other useful service-specific information can be sent to the cloud for further deep learning, classification and objects/events detection.
Edge computing leverages the powerful local processing units to shift the data computation and storage from the cloud clusters to the embedded cross platforms. Edge computing can be accomplished using PCs, mobile computing devices, field programmable gate array (FPGAs), etc. Moreover, Edge computing offers real-time analysis and response, low-cost management as well as fewer data transferred to the cloud.
From the several available computing platforms, FPGA technology establishes itself as an appealing environment to implement such edge computing platforms. FPGAs would provide energy efficiency, interactivity, powerful computation abilities and reconfigurable embedded system to IoT. Moreover, compared to other computing platforms such as Raspberry Pi, FPGAs provide a better performance [97]. Although the implementation of CS-based edge computing on the FPGA for IoT applications have never been addressed in the literature, we present herein some of the efforts which can be explored to provide powerful computing platforms.
For any CS-based edge computing platform, efficient implementation of data reconstruction algorithms is the main task to realize. While a software implementation of these algorithms can be time-consuming due to the massive matrix multiplications requirements, an FPGA-based solution presents an attractive alternative to accelerate the reconstruction process by leveraging the high level of parallelism of FPGA platforms. Therefore, the hardware implementation for the different reconstruction algorithms has been investigated by the CS research community. In fact, greedy algorithms gained most of the attention compared to convex optimization approaches due to the high complexity of the latter. Nevertheless, from all the greedy algorithms, OMP has been the focus of most researchers due to its computing efficiency, stability and relative simplicity. Besides, in contrast to advanced greedy algorithms such as SP and CoSaMP, OMP does not require any inputs except for the compressed signal and the sensing matrix. OMP recovery algorithm includes two computationally expensive steps, namely, coefficients selection and signal estimation. Coefficients selection step requires intensive matrix-vector multiplication operations in order to find the closely correlated atoms to form the signal proxy. For high dimensional signals, matrix-vector multiplication is a very time-consuming process. The signal estimation step consists of solving a least squares problem which is both time and resources consuming as it includes both matrix inversion and matrix-vector multiplication. Therefore, all efforts have been made to provide an FPGA-based implementation for OMP rely on the optimization of these two fundamental steps.
Septimus et al. presented the first implementation of OMP on Xilinx Virtex-5 FPGA [98] where the implementation was validated on a signal of length N = 128 and a maximum sparsity of 5. Although the size of the signal and its sparsity are small, the obtained results showed that adopting FPGA-based OMP implementation has great promises for real-world applications. Furthermore, the same authors further optimized their implementation by adopting Q-R decomposition (QRD) to solve the LS problem in [99]. The obtained results revealed three times faster execution time than their first implementation. Thereafter, various efforts have been made to provide more efficient FPGA implementation for OMP. Bai et al. [100] proposed a solution to the LS problem based on QR decomposition using a vector multiplication unit (VMU) which consists of a large number of parallel computing channels. The proposed solution has been implemented on a Xilinx Virtex-6 FPGA. The authors evaluated their implementation on an image block of size 32 × 32 pixels achieving reconstructed quality with signal-to-noise ratio (SNR) of 23.5 dB with an execution time of only 0.63 ms. In [101] single-precision floating-point CS reconstruction engine implemented on a Kintex-7 FPGA is presented. The author fully explored the maximum hardware resources available to achieve high performance by deploying highly parallel architecture that shares computing resources among different tasks of OMP by using configurable processing elements (PEs). Rabah et al. [102] presented a descriptive analysis to OMP algorithm where they conducted a detailed study on the complexity of each step in the OMP algorithm. In addition, they adopted a Cholesky factorization method to solve the LS problem. A four-block architecture has been implemented on MATLAB-SIMULINK and Xilinx system generator (XSG) has been used to map the system-level design to a high-level description language (HDL). Subsequently, more efforts have been made to implement OMP for real-world signals. Kulkarni et al. quantified the performance of OMP implementation on FPGA Vertex-7 for ECG signal [103] and image data [104]. Recently, Quan et al. presented an efficient solution for the FPGA implementation of OMP [105]. The proposed approach uses fast Fourier transform (FFT) to implement the coefficient selection step which is represented by a correlation operation. Additional efforts for FPGA-based implementation of OMP can be found in [106][107][108][109].
Beside FPGAs, the hardware implementation of CS reconstruction algorithms on other computing platforms such as graphics processing units (GPUs) and application specific integrated circuits (ASICs) have been presented in the literature. A hardware implementation of three CS recovery algorithms on ASIC have been proposed in [110] for channel estimation in wireless network. The authors provided a comparative study of the architecture, the complexity and the cost of MP, OMP and gradient pursuit. Fang et al. [111] presented a GPU implementation of OMP where they proposed a matrix inversion update method to minimize the computation complexity of the matrix inversion problem which leads to speed up the reconstruction.
In [112], the authors presented a comparative study between the implementation of the OMP for image reconstruction using a high parallel computation with an LU decomposition for solving the LS problem. The proposed architecture has been implemented on different platforms including general purpose CPUs, GPUs, a Virtex-7 FPGA and a domain-specific many-core. The implementation results showed that reconstruction time on FPGA is improved by two times compared to the results in [99]. In addition, the GPU based implementation has shown to be three times faster than results obtained in [111]. Table 3 expatriates on the comparative results between several works presented in the literature on the implementation of OMP on different platforms.

Application Layer
Although CS was developed as a sensing/compression paradigm, it can be extended to other domains such as signal detection and sparse problem optimization. Thus, for IoT platform scenario, the application layer relies on the data routed from the local processing layer (edge computing platform) to provide both object-based and event-based data analytics, such as data aggregation, classification, active detection, signal identification, smart cities application, cloud status monitoring and even CS-based recovery.

Multi-User Detection and Identification
Regarding users/devices activity, CS-based event detection approaches exploit the fact that the rate of the active sensing devices over the overall number of the sensing nodes is usually small, which can be seen as a sparse network architecture. Therefore, CS techniques have been exploited not only to detect the signal of interest but also to detect and identify the number of the active devices/users that contribute on the data aggregated at the cloud level. Zhu et al. [114] introduced a CS multi-user detection (MUD) detectors for communication systems with code division multiple access (CDMA) by adopting BP algorithm. Furthermore, CS-based MUD using greedy CS algorithms has been proposed in [115]. The authors studied the efficiency and reliability of applying CS to detect both the users activity and to identify data in a CDMA transmission. The obtained results in [115] indicate that the orthogonal least squares (OLS) algorithm is reliable for sparse MUD even in overloaded CDMA systems. However, it is shown in [115] that the symbol errors of the OLS are mainly caused by incorrect activity detection. These results imply that improving user activity detection would enhance the overall system performance. Thus, Schepker et al. [116] introduced block-wise orthogonal least squares (BOLS) detection as sparse MUD for sporadic communication using CDMA.
In [117,118] a CS-based two-stages framework for joint data identification and detection is proposed for IoT applications using multi-carrier CDMA (MC-CDMA) with data transmitting scheme based on sparse index multiple access (SIMA) [119]. First, CS is exploited to estimate the channel state information (CSI) to determine the number of the devices/users that are actually transmitting data using OMP. Next, using the estimated CSI, the transmitted data are detected using expectation-maximization (EM) algorithm. In addition, a proposed solution to detect the active users in large scale IoT by combining linear detection and CS recovery algorithm is presented in [120]. This approach aims to improve the receiver performance relying on linear detection and reducing the computational complexity by exploring efficient CS recovery algorithms.
Furthermore, Wang et al. [121] addressed the problem of MUD in massive IoT networks. The authors adopted structure matching pursuit (SMP) algorithm to jointly detect the common active users at all times, and then to detect the dynamic active users at each time slot individually. However, if the number of devices scales up remarkably, this method will suffer from a high system complexity and a slow reconstruction time. Therefore, Liu et al. [122] proposed a scalable CS-based MUD scheme to tackle this issue based on single measurement vector CS (SMV-CS) [123,124] which uses group OMP (GOMP) [125] to divide the data into different sub-blocks and reconstruct each sub-block individually.

CS-Based Cloud Storage
On the other hand, receiving big data has shifted the storing paradigm from single server to multiple mega-server and it is continuously growing. The massive number of data that are collected on a daily basis requires large-scale data processing engines to analyze. However, applications are rarely interested in raw data records. Instead, only the salient features are required for deep data analytics. CS can be explored efficiently to store the cloud data by reducing the data size and discarding the non-relevant features to facilitate different types of applications. Many IoT data analytic applications are executed by sending queries to the cloud server to retrieve data. For instance, Top-k, range, and keyword queries present the most popular types of queries for IoT and WSN applications. Top-k query means that the k highest (or lowest) data values are retrieved from a dataset [126]. Thus, by leveraging the fact that the CS compresses and preserves an approximate form of the data, Zhang et al. [127] proposed a new impression store cloud architecture based on CS that does not store all the raw data, but rather some features that can yield to provide a successful application in term of QoS. This approach saves storage capacity and bandwidth and allows for efficient and scalable parallel updates and queries. This approach consists of compressing the data to the minimum factor that allows the recovery of only the application-defined principal components. In addition, Chen et al. [128] a two-stage compression scheme. First, the data are compressed at the sensor level with an M samples. Afterwards, they wait for a query from the cloud to send only the k << M samples that are required for a specific defined application.

Mobile Crowd Sensing
CS can be deployed efficiently for applications related to smart cities in order to monitor environmental and urban conditions using the so-called mobile crowd sensing (MCS) approaches. MCS explores the user's mobility; the sensors embedded within the users smart-phones and the existing wireless infrastructures are used to sense and collect environmental data. The collected data can relate to a number of phenomena, including air quality, noise level, street surface and pavement conditions. MCS consists of dividing a specific area to N different cells, where, at each cell, single or multiple users are allocated with different sensing tasks. The main drawback of conventional MCS approaches is that they incur a high sensing cost in term of energy consumption to achieve a high sensing quality. In addition, many participants are required to collect and transmit data which puts high constraints in term of bandwidth occupancy. Thus, sparse MCS presents an alternative solution to the conventional methods. Sparse MCS consists of allocating only a small number of cells (M N) with participants to collect data. The aim of this approach is to estimate the data of the all N cells from the collected data from M cells. This can be seen as a CS basic problem by estimating an N-length data from an incomplete set of measurements. Sparse MCS approaches face two key challenges, first, how to select the cells that provide the optimum coverage, second, how to assess the estimated data quality without apriori knowledge of the data of the non-sensed cells.
To address these challenges, wang et al. [129] presented a framework for sparse MCS application with an iterative task allocation process. In this framework, cells allocation operation is determined using uncertainty-based approach [130]. After transmitting data from the selected cells, the whole area conditions are estimated using spatiotemporal CS recovery algorithms [131]. The obtained results show a significant reduction in the sensing cost while still guaranteeing the overall data quality for urban sensing. Thereafter, several efforts have been made to further enhance the performance of sparse MCS in terms of privacy [132], cell allocations [133,134] and reducing the number of participants required for data collection [135].

Traffic Monitoring
Traffic monitoring is the crucial task that can provide great insights for the design and the management of infrastructures in highly urban cities. The state-of-the-art traffic monitoring approaches exploit roving vehicles and the mobility of smart-phones to provide periodic reports regarding traffic status, driving speeds and the flow direction to estimate the whole traffic conditions [136]. These approaches often employ an intensive number of users (probes) to cover the roads of interest. Nevertheless, their performances are usually limited by the number of users, energy expenditure of the sensing devices, privacy as well as the high cost associated with hiring many participants to provide the complete traffic map. However, the high dimensional datasets for traffic conditions can be well approximated with low-rank matrices by mining the hidden structure of this datasets. Zhu et al. [137] used principal component analysis to mine a large set of traffic data collected in China. Their analysis showed that the energy is concentrated in just a few principal components which underpin the applicability of CS-based traffic sensing. On the other hand, individual traffic reports are usually error-prone; for instance, if the car goes through obstructions (urban canyons and underpasses), the reliability of their GPS data would fade. In addition, with the continuous mobility of the probes, multi-path propagation phenomena will degrade the quality of wireless communication which will lead to huge amount of missing data. Thus, CS can be used to estimate the entire data (including the missing one) from the partially received traffic data points. The approach proposed in [137] has proven to provide an estimation error less than 20% even though 80% of the data were not received. Furthermore, by leveraging the fact that the traffic conditions among interconnected roads are highly dependent, the correlation model between these traffic conditions can be explored to reduce the number of users, while maintaining the same quality for the entire city traffic map. Liu et al. [138] presented a multiple linear regression (MLR) method based on CS to estimate the entire road traffic from a small set of measurements. The idea is to divide the map to N blocks relying on the intersecting points. Then, only a small number of blocks M << N are assigned with j vehicles (probes) to measure the average velocity v j and the distance to travel each road L j = [l 1 j , l 2 j , · · · , l M j ]. Hence, to estimate the entire road velocities from the set of observed velocities {v j } j=M j=0 , CS recovery algorithms can be adopted. The authors compared their approach with state-of-the-art solutions based on singular value decomposition (SVD), the results showed that the proposed method achieved an estimation accuracy up to 80% while the SVD approach achieved only a 60% estimation accuracy.
Finally, more CS-based data analytic approaches can be addressed in that future. For instance, by leveraging the reconstruction reports, data mining and incremental learning algorithms [139] can be deployed at the cloud to determine the optimal number of measurements every node has to acquire to provide the best reconstruction performance. Table 4 provides a summary for the extant efforts to integrate CS into IoT applications. Table 4. Summary of the Joint CS-Based approaches for IoT applications.

IoT Layer Approach Features Main Attribute
Sensing Layer Adaptive measurements [76,77] Optimize CF value • Sparsity change detection based on QoS [76] • Sparsity change detection using CPM [77] CS-based sparse Energy efficiency • Alternate the selection of the active sensors at each time slot [86] Networking [86][87][88][89] High reconstruction quality • Nodes activation based on data reconstruct in the previous time slot [87] • Divide network into clusters, each with only one single reference node [89].
Weighted measurements [79,80] Optimize CF value • Applicable on heterogeneous IoT platform • Assign for each sensor a CF value depending on its importance in the application CS-based data gathering [81,83,90,92] Data gathering • CDG for multi-hope: Compress and route to the next node [81] Low communication cost • CSF: each node sparsifies the data and route the sparse functions to the sink [82] Low error rate •(MECDA) approach: select the best route that consumes the minimum power [83].
• CDC: each sensor selects its route based on opportunistic routing protocols [84].

Challenges and Research Trends
Exploring the techniques and the approaches presented in Section 4 would provide an efficient CS-based IoT platform that can be used to enable numerous applications. However, many studies related to CS can be further incorporated. This section provides some of the research orientations and challenges that the CS research community is trying to investigate and to address. Although these efforts are introduced out of the IoT scope, they can fit well in the design and the development of an energy-efficient, real-time and secure IoT platforms. This section highlights the advantages of incorporating such techniques in IoT applications, where four of most prominent research orientations that can be well explored to enhance the IoT performance over the three different layer are discussed. For the sensing layer, using both energy-efficient CS encoders and structured sensing matrices would decrease the system complexity, hence provide energy efficiency. For the processing layer, using gateway embedded on many-core platforms instead of single-core can boost up the speed and the quality which will help meet the real-time requirements. Finally, incorporating CS-based encryption methods helps to achieve a high level of security and privacy for specific IoT application.

CS Encoder Design
The different techniques that explore CS at the sensing layer can contribute significantly to the design of energy-efficient CS-based IoT system by using the CS as a compression technique. However, to fully exploit CS theory, the sensing nodes have to collect directly a compressed form of the signal. Therefore, it is of high importance to design CS-based sensing nodes.
In fact, one of the main attributes of CS is to shift the high complexity burden from the IoT sensing devices to the gateways that are usually embedded on platforms with much-relaxed computation, communication and energy efficiency abilities. CS is expected to reduce the power consumption of the sensing and the transmission processes. Unlike conventional compression techniques which require some processing to extract the salient information, CS encoding can be implemented in two different modes, analog or digital domains. In analog CS, the linear projection is applied in the analog domain prior to digitization, whereas the digital encoder first quantizes the signal samples and then performs the equivalent modulations using digital logic. CS-based IoT applications require sensing nodes with low-power consumption design, thus they could benefit from research that aims to develop a low rate-energy efficient CS acquisition sensors [36,37,141,142]: • Analog CS [143,144] represents the hardware implementation of the CS acquisition model (Equation (1)) in which the signals are acquired at the sub-Nyquist rate. The CS-based acquired signal is the inner product between the input signal and M random vectors. In fact, the analog CS encoder is designed using random modulator (RM) [145]. The RM is implemented using a mixer, an integrator, and an analog to digital converter (ADC). The mixer performs the inner product between the signal and the measurement matrix in a sub-Nyquist rate. The integrator accumulates the output voltage of the mixer, and it has to be reset after each sample is taken. Finally, the signal is sampled at rate 1/M using the ADC. For more illustrations and implementations, the reader can refer to [146,147]. • Digital CS is performed by sampling the input signal following the Shannon-Nyquist theorem, and then performing M random modulation. In addition, a non-uniform sampler (NUS) [148] technique can be used, where the CS encoder picks an M samples randomly from the whole N dimension vector after the digital conversion. The NUS can be seen as an RM modulator with binary sensing matrix with elements {0, 1}.

•
Bellasi et al. [37] examined the implementation of both analog and digital encoders and showed that an inexpensive and energy-efficient digital logic is most suitable to implement CS-based data reduction. Moreover, they investigated two scenarios that can occur often in WSN. In the first scenario, the energy consumption of storage/transmission is dominating the total power balance, thus the superior compression performance of analog CS leads to a significant advantage over digital CS. Instead, in scenarios where signal acquisition and processing are dominant, digital encoders are indeed more energy-efficient. The results hold great promises to extend CS application of CS encoder from small WSNs to massive IoT platforms.

Structured Sensing Matrix
A crucial task in CS is to select the appropriate sensing matrix, which has a crucial impact on the reconstruction performance. Moreover, selecting inappropriate sensing matrix would lead to additional system complexity and may provide unacceptable reconstruction quality.
In CS, the sensing matrix is usually designed using a dense random matrix with entries drawn from an independent identical sub-Gaussian distribution [149,150]. Gaussian processes are widely used as sensing matrices in CS; they offer a low coherence with most of the natural basis used in signal processing [148]. Moreover, they satisfy the RIP condition with high probability [151]. However, they suffer from several limitations in term of implementation on hardware due to their dense nature. Consequently, they can be implemented using a non-chip random seed to generate all the entries or they can be generated offline and stored in a large memory [152]. In addition, they slow down the measurement process of CS because it has to deal with all non zero entries. Thus, the random matrix measurement operator must be replaced by more structured sensing architectures that correspond to the characteristics of feasible acquisition hardware.
Therefore, using structured sensing matrices would improve both the sensing and the reconstruction processes. At the sensing level, deploying sparse Bernoulli matrices with entries {0, 1} can reduce the number of multiplication operations by replacing the inner product by just an accumulation process [153], which can be seen as an NUS approach.
Furthermore, structured sensing matrices would accelerate the reconstruction time and minimize the onboard computation on the receiver side. Therefore, incorporating such techniques aligns perfectly with the vision of providing efficient CS-based IoT platform.
Using Bernoulli matrices with entries {1, −1} [71] can be seen as good fit for FPGA reconstruction, where the multiplication process can be replaced by data accumulation only. Several works have also focused on structured sensing matrices such as Toeplitz, circular, block diagonal and permuted block diagonal (BPBD) [154] and deterministic binary bloc-diagonal (DBBD) [152]. These structured matrices have been shown to be hardware friendly by discarding the need to implement on-chip random seed for random matrices [152].

Implementation on Multi-Core Platforms
With the fast increase in the number of IoT devices, the big data transmitted to the computing platforms will put a lot of pressure on the real-time requirements and the processing will exceed the capabilities of single-core platforms. This scenario occurs in several IoT applications that require real-time video streaming. Subsequently, single-core platforms will soon fade and be replaced with multi-core platforms that have more relaxed computation and communication features [155]. Moreover, most IoT applications would utilize the end-user personal computer and mobile as the edge computing platform; thus, the implementation of reconstruction algorithms on multi-core platforms that are similar to the ones held by the end-user has been addressed in the literature for different applications. For instance, taking advantage of parallel computing, Borghi et al. presented in [106] the design and investigated the performance of BP algorithm on four different multi-core platforms, namely, Intel Core 2 Quad, Intel Core I7, PS3 cell and NVIDIA 8800 GTS. In addition, medical imaging applications have witnessed several implementation of CS reconstruction algorithms on multi-core platforms [156][157][158][159]. More recently, Bortolotti et al. presented a hardware implementation of OMP on a heterogeneous mobile SoC based on the ARM BIG.LITTLE TM architecture for CS-based ECG monitoring [160]. The proposed architecture shows to be able to provide a real-time reconstruction for ECG signals which can fit well into IoT applications for long-term healthcare monitoring.

Data Security
Enabling secure communications is an imperative task in IoT applications. In the design of IoT platforms, the sensitive data (image, video, Medical records, etc.) transmitted over the wireless channel have to be secured against unauthorized access. Subsequently, data privacy is a paramount challenge that has to be addressed in IoT applications. A reliable solution can be realized by means of sophisticated state-of-the-art data encryption techniques. Nevertheless, CS can also be well suited to act as an encryption mechanism by exploiting the fact that randomly mapping the original data to another one would encrypt the information. Exploring CS as an encryption technique by using the random sensing matrix as the key has been investigated in [161], where the authors showed that even-though a perfect secrecy is not guaranteed, computational secrecy can be achieved as long as the sensing matrix satisfies the RIP and the number of random projections is at least twice the sparsity of the signal. In addition, Kailkhura et al. [162] showed that the design of an optimal sensing matrix in the context of full secrecy is not universal but it depends mainly on the structure of the signal of interest.
In addition, WSNs have witnessed some applications where CS has been used as both acquisition and encryption scheme. Wang et al. proposed a two-level CS-based security platform to transmit the data from the sensors to the cloud [163]. The first level of encryption is performed by acquiring data following the CS concept. Afterwards, the sensors further encrypt the compressed data without changing its dimension so no additional bandwidth cost is required. Recently, Peng et al. [164] proposed a chaotic CS (CCS) scheme to tackle both energy saving and data security problems in large-scale wireless body area networks (WBANs). The aforementioned schemes are designed mainly to prevent external access to the data. However, to face attacks that can occur within the system (inference attacks) such as controllable event triggering attacks (CETA) and random event triggering attacks (RETA), Hu et al. [165] presented a method called secure compressive data gathering (SCDG). The presented approach is based on changing the sensing matrix coefficients at each time slot.
In addition, cloud security present as well a hot topic to address [166] and CS techniques have shown to disclose great opportunities. For instance, a CS-based encryption scheme for crowd sensing to enable efficient remote sensing system (RSS) maps are presented in [167]. In addition, Wang et al. [168] presented a CS-based framework for preserving the privacy of reconstructed image when operating in outsourcing mode. Cloud outsourcing refers to shifting the data management from the embedded servers to the cloud servers. This framework would be very beneficial for application of connected health-care where the medical images with diagnostic results for different patients are privacy-sensitive. Reader should refer to [169][170][171][172][173] for variety of CS-based frameworks to enable secure cloud operations.

Conclusions
IoT applications require a huge number of heterogeneous smart devices to sense, communicate and collaborate with each other in order to gather the maximum information to enable numerous types of services. A large number of sensors will generate big redundant data that would cause unnecessary network traffic, thus degrading the overall system performance. Therefore, exploring CS can reduce the number of data collected and can release the pressure on the wireless communication.
This paper provides a brief overview on CS theory, starting from the basic model of the signal acquisition to the criteria that should be satisfied while designing the sensing matrix, as well as listing some of the most considered reconstruction algorithms used in the literature.
Moreover, this paper reviews the extant work presented in the literature that addresses the integration of CS techniques in the IoT platforms. To this end, and aiming to make the discussion clear and easy to follow, the IoT platform is divided into three layers and the related CS researches for each layer is discussed thoroughly.
The acquisition layer consists of the huge number of sensors that communicate with each other and with a central fusion node. High power consumption presents the most important issue to tackle. Thus, CS techniques can be deployed as a compression technique to reduce the power consumption.
In addition, compressive gathering, sparse networking and hybrid joint DCS-routing protocols can also be explored to achieve energy-efficient sensing layer.
At the processing unit, implementing edge computing platform on FPGAs presents an appealing solution to achieve real-time performance. Several design and architectures for CS reconstruction algorithms have already been proposed and investigated in the literature.
For the application layer, the utilization of CS can be extended from being just a compression paradigm to a broad range of applications by exploring the recovery algorithms associated with CS to enable several applications related to smart cities applications and next generation communication systems.
While it is hard to cover all of the CS software and hardware research that can be integrated with the realm of IoT, this paper highlights the open issues and future trends that can be addressed exploring CS techniques along with some powerful computing platforms to stimulate new research orientation in the field of IoT. The realization of CS encoder that provides directly a compressed signal acquisition is a hot topic to investigate as it enables the next era of digital sampling. In addition, using structured sensing matrices would simplify the acquisition operation and allow real-time data reconstruction. Moreover, providing a CS implementation on commercial multi-core platforms can be well fitted for different IoT applications related to smart home and health care. At the top of all that, CS can be used to enable secure and encrypted transmission scheme by exploring the randomness accommodated with acquisition process without introducing any additional processing.