Adaptive Block-Based Approach to Image Noise Level Estimation in the SVD Domain

: Estimation of additive white Gaussian noise levels in images has a variety of image processing applications including image enhancement, segmentation and feature extraction. Designing an algorithm with a consistent performance across a range of noise levels and image contents is a challenging problem; without any prior information, it is difﬁcult to differentiate the noise signal from the underlying image signal. In this paper, an adaptive block-based noise level estimation algorithm in the singular value decomposition domain is proposed. The algorithm has the ability to change the singular value tail length according to the observed noise levels. A number of different choices of block size are considered and, for each choice, a mathematical model is proposed to describe how to adjust the singular value tail length as a function of the initial noise level estimates. In comparison with a seminal ﬁxed singular value tail length algorithm, the proposed algorithm signiﬁcantly improves the noise level estimation accuracy at low noise levels at the expense of a small increase in computational time; for example, for the block size of 64 × 64 and AWGN level σ = 1, the MSE is reduced by 65%, whilst the computational time is increased by less than 1.3%.


Introduction
In general, images can be corrupted by a noise signal during image acquisition, transmission, storage and image processing [1,2].Noise level estimation from a single noisy image without any prior information is an important and challenging field of digital image processing.Noise level estimation algorithms have a variety of image processing applications including image enhancement and denoising [2][3][4][5], edge detection [6], image segmentation [7,8], and feature extraction [9,10].The objective of noise level estimation research is to design an algorithm that can provide accurate and consistent performance across a range of noise levels, image contents, lighting variations, different textures, and contrast levels.In practice, noise level estimation is a very challenging task as it is difficult to ascertain the extent to which the observed local variations are associated with the noise.
Over the past decades of research, various approaches to noise level estimation have been proposed.In the broadest classification, the noise level estimation algorithms can be grouped into one of the following classes: block-based methods, filter-based methods and transform domain methods.In the block-based noise level estimation approach, images are tessellated into blocks [11][12][13][14][15].Most commonly, this approach entails two additional steps: identification of homogeneous image patches and a statistical analysis of selected image patches to generate a noise level estimate for an entire image.There exists an underlying assumption that the principal signal variations in homogenous image patches are due to noise and not due to the underlying image signal.Performing statistical analysis on homogenous image patches alleviates the influence of image textures on noise level estimation.Filter-based methods use the difference between the noisy image and the low-pass filtered image to estimate the levels of noise in still images [16][17][18].It is assumed that low-pass filtering is able to sufficiently suppress the underlying image signal and that the resulting difference-image contains mostly image noise.This assumption does not hold true when the underling image contains more complex structures.Various solutions have been proposed to improve the filter-based noise level estimation in such instances.For example, in [18] adaptive edge detection is employed to exclude edges from the noise level estimation process.Since the filter-based noise level estimation algorithms are usually associated with the higher levels of accuracy and robustness, whilst the block-based algorithms are associated with simplicity and a lower computational load, many hybrid algorithms have been proposed in an attempt to combine the benefits of both approaches [19][20][21].Transform-based methods transform the image from a spatial domain into another domain prior to noise level estimation [22][23][24][25].Wavelet transform [23] and DCT transform [25] are popular choices of transform for noise level estimation.Recently, noise level estimation algorithms based on principal component analysis [26,27] and singular value decomposition [28,29] have become increasingly popular.
In a seminal paper [28], the noise level estimation in the Singular Value Decomposition (SVD) domain is demonstrated to attain levels of accuracy and consistency over different image contents that are comparable to the state-of-the-art methods.The algorithm in [28] performs the singular value decomposition on an entire image and, thus, it can be computationally expensive.In [29], an attempt is made to reduce the computational complexity of the noise level estimation in the SVD domain by adopting a block-based approach to noise level estimation.
In this paper, we demonstrate that the performance of both algorithms, [28] and [29], tends to deteriorate at low noise levels.In [28] and [29], the noise level estimates are obtained by analyzing the tail of a singular value sequence.It is assumed that noise has the most significant effect on the tail of the singular value sequence, whereas the underlying image signal mostly contributes to the first few singular values.Both algorithms use the fixed singular value tail length to generate noise level estimates.However, at low noise levels, the effect of noise on the singular value sequence is reduced to a smaller number of singular values.Thus, at low noise levels, the length of singular value sequence that is used in [28] and [29] is not effective and the accuracy of noise level estimation deteriorates.
In this paper, an adaptive block-based algorithm for noise level estimation in the SVD domain is proposed.The proposed algorithm is designed to address the identified deficiency of the algorithm in [29].Thus, the principal objective of the proposed method is to improve the performance of the block-based noise level estimation algorithm [29] at low noise levels without a significant increase in computational time.
The main contribution of this paper is the proposed block-based adaptive noise level estimation algorithm in the SVD domain that can adapt the length of a singular value tail based on the observed noise levels.The ability to adapt the noise level estimation characteristics according to the observed noise levels is imposed through a two-stage process, whereby initial noise level estimates are used to adjust the algorithm parameters in order to facilitate a more accurate noise level estimation performance in the second stage of the algorithm.A general function for adjusting the singular value tail length with respect to the initial noise level estimates is proposed.The proposed algorithm is implemented for a number of different choices of block size.For each choice of block size, the coefficients of the proposed function are obtained empirically.Furthermore, the optimal choice of block size is evaluate.Specific measures are taken to ensure that the added computational time cost compared to the block-based noise level estimation algorithm in [29] is minimized.
In a comparative analysis with the image-based noise level estimation algorithm in the SVD domain [28] and the block-based noise level estimation algorithm in the SVD domain [29], the proposed noise level estimation algorithm is shown to significantly reduce the noise level estimation mean square error at a negligible computational time cost.The performance at low noise levels is especially improved.
This paper is organized as follows.Noise level estimation in SVD domain is discussed in Section 2. The proposed adaptive block-based noise level estimation algorithm in the SVD domain is presented in Section 3. Simulation results are presented and discussed in Section 4. Section 5 concludes the paper.

Noise Level Estimation in the SVD Domain
Singular value decomposition of some real rectangular m × n matrix A of rank r is defined as: Here, U ∈ R mxm and V ∈ R nxn are orthogonal matrices such that columns of matrix U correspond to eigenvectors of AA T , whilst the rows of V T correspond to eigenvectors of A T A. Matrix S is a diagonal matrix of singular values.Singular values s(i) form a decreasing sequence s(1) ≥ s(2) . . .≥ s(r) > 0, where r denotes the matrix rank.
In general, the SVD domain enables separation of the underlying image signal and noise, lending itself particularly well to noise level estimation.Since the paper considers a block-based approach to noise level estimation, the effect of noise on the singular value curve is demonstrated on an image patch rather than on a whole image.Figure 1a presents a test image, and Figure 1b presents an example of a 64 × 64 image patch.In Figure 1c, the singular value curves at various levels of additive white Gaussian noise are presented.If an image is corrupted by an additive noise, the singular values of the resulting image correspond to the sum of singular values due to the signal and noise, s(i) = s s (i) + s n (i).In general, noise signal mostly affects the singular value sequence tail, whereas the underlying image signal strongly affects the first few singular values.With the decreasing noise levels, the effect of noise on the singular value curve is reduced to an increasingly smaller number of singular values.
Electronics 2018, 7, x FOR PEER REVIEW 3 of 18 presented in Section 3. Simulation results are presented and discussed in Section 4. Section 5 concludes the paper.

Noise Level Estimation in the SVD Domain
Singular value decomposition of some real rectangular  ×  matrix A of rank r is defined as: Here,  ∈   and  ∈   are orthogonal matrices such that columns of matrix  correspond to eigenvectors of   , whilst the rows of   correspond to eigenvectors of   .Matrix S is a diagonal matrix of singular values.Singular values s(i) form a decreasing sequence s(1) ≥ s(2)… ≥ s(r) > 0, where r denotes the matrix rank.
In general, the SVD domain enables separation of the underlying image signal and noise, lending itself particularly well to noise level estimation.Since the paper considers a block-based approach to noise level estimation, the effect of noise on the singular value curve is demonstrated on an image patch rather than on a whole image.Figure 1   The proposed noise level estimation algorithm is based on the approach presented in [28,29].In a seminal paper on the noise level estimation in the SVD domain [28], for each image, noise level estimation requires that the singular value decomposition is performed on an input image corrupted by an unknown noise source and on an image that is obtained when the input image is further degrade by a known noise source.Multiple SVD decompositions based on the use of a known noise source enables a consistent noise level estimation performance across different image contents.Noise level estimation in the SVD domain entails six distinct steps [28].
In the first step, singular value decomposition is performed on an input image A that is corrupted by an unknown noise source  resulting in a sequence of singular values,  () ().Subsequently, an average of M trailing singular values is evaluated as: where  () is a function of the singular value tail length M. In [28], the recommended singular value tail length is defined as M = 0.75r.Furthermore, in [28], it is ascertained that a reliable noise level estimation requires the length of singular value tail to be restricted to a range  ∈[0.25r, 0.8r].The proposed noise level estimation algorithm is based on the approach presented in [28,29].In a seminal paper on the noise level estimation in the SVD domain [28], for each image, noise level estimation requires that the singular value decomposition is performed on an input image corrupted by an unknown noise source and on an image that is obtained when the input image is further degrade by a known noise source.Multiple SVD decompositions based on the use of a known noise source enables a consistent noise level estimation performance across different image contents.Noise level estimation in the SVD domain entails six distinct steps [28].
In the first step, singular value decomposition is performed on an input image A that is corrupted by an unknown noise source σ resulting in a sequence of singular values, s (A) (i).Subsequently, an average of M trailing singular values is evaluated as: where P (A) is a function of the singular value tail length M. In [28], the recommended singular value tail length is defined as M = 0.75r.Furthermore, in [28], it is ascertained that a reliable noise level estimation requires the length of singular value tail to be restricted to a range M ∈ [0.25r, 0.8r].
In the next step, the input image A is degraded by a zero mean additive white Gaussian noise with a known deviation σ B = 50 to obtain a new image B. This image is processed in a similar fashion as the input image A. First, the singular value decomposition is performed on the image B to obtain a sequence of singular values s (B) (i) and subsequently, the average of M trailing singular values is evaluated: In the final step, the noise level estimate σ is obtained as in: where the parameter α, defines the slope of a linear function that describes the distribution of average P(M) values across a range of noise levels [28].Equation ( 4) is derived in [28] and it is optimal for a given singular value tail length.The value of parameter α depends on the matrix rank r and the singular value tail length M. For each r and M, parameter α is evaluated experimentally, as described in Section 3.2.Figure 2 displays the sequence of steps involved in the noise level estimation in the SVD domain.
Electronics 2018, 7, x FOR PEER REVIEW 4 of 18 In the next step, the input image A is degraded by a zero mean additive white Gaussian noise with a known deviation   = 50 to obtain a new image B. This image is processed in a similar fashion as the input image A. First, the singular value decomposition is performed on the image B to obtain a sequence of singular values  () () and subsequently, the average of M trailing singular values is evaluated: In the final step, the noise level estimate  ̂ is obtained as in: where the parameter α, defines the slope of a linear function that describes the distribution of average P(M) values across a range of noise levels [28].Equation ( 4) is derived in [28] and it is optimal for a given singular value tail length.The value of parameter  depends on the matrix rank r and the singular value tail length M. For each r and M, parameter α is evaluated experimentally, as described in Section 3.2.Figure 2 displays the sequence of steps involved in the noise level estimation in the SVD domain.

Proposed Adaptive Block-Based Noise Level Estimation Algorithm in the SVD Domain
In this section, we present our proposed adaptive block-based algorithm for noise level estimation in the SVD domain.The principal idea of our proposed algorithm is to perform the blockbased noise level estimation in the SVD domain in two distinct stages in order to enable the parameters of the algorithm to adapt to the observed noise levels.Specifically, the primary objective is to reduce the length of the singular value tail at low noise levels.

Overview of the Proposed Noise Level Estimation Algorithm in the SVD Domain
In the first stage of the proposed block-based noise level estimation algorithm, a coarse noise level estimate is generated.The first stage of the algorithm is based on the block-based noise level estimation algorithm in [29].In the second stage, the algorithm parameters, including the length of the singular value tail, are adjusted according to the initial noise level estimate, and the noise level estimation is performed again.The proposed algorithm reduces the length of a singular value tail at

Proposed Adaptive Block-Based Noise Level Estimation Algorithm in the SVD Domain
In this section, we present our proposed adaptive block-based algorithm for noise level estimation in the SVD domain.The principal idea of our proposed algorithm is to perform the block-based noise level estimation in the SVD domain in two distinct stages in order to enable the parameters of the algorithm to adapt to the observed noise levels.Specifically, the primary objective is to reduce the length of the singular value tail at low noise levels.

Overview of the Proposed Noise Level Estimation Algorithm in the SVD Domain
In the first stage of the proposed block-based noise level estimation algorithm, a coarse noise level estimate is generated.The first stage of the algorithm is based on the block-based noise level estimation algorithm in [29].In the second stage, the algorithm parameters, including the length of the singular value tail, are adjusted according to the initial noise level estimate, and the noise level estimation is performed again.The proposed algorithm reduces the length of a singular value tail at low noise levels.This results in a more accurate noise level estimation.The proposed mechanism is based on the observation that at low noise levels, the underlying image signal dominates the noise in the SVD domain and the effective length of the singular value tail decreases.In each stage of the algorithm, the actual noise level estimation is based on the block-based noise level estimation algorithm in [29].
The algorithm in [29] is a block-based variant of the previously described algorithm in [28], where SVD analysis is performed on the entire image.What follows are the main characteristics of the noise level estimation algorithm in [29].A noisy input image is tessellated into r × r blocks.Approximately 40% of blocks are randomly selected.From each block, a single noise level estimate is obtained following the steps presented in Figure 2. Finally, the noise level estimate for the entire image is obtained as the average value of individual block-based noise level estimates.In the design of the proposed algorithm, specific measures are taken to ensure that the added computational load due to a two-stage noise level estimation process is minimized.
The proposed adaptive block-based noise level estimation algorithm in the SVD domain entails the following steps: (1) Tessellate an input image into r × r blocks.
(2) Randomly select 40% of blocks and perform the singular value decomposition on each block to obtain a sequence of singular values s j (i), where i = 1, 2, . . .r, and j denotes the block index, where j = 1, . . .D. Here, D represents a total number of selected blocks.(3) Each image block is processed via a sequence of steps presented in Figure 2.For each jth block of image A, the average value of the singular value tail is evaluated using (2) to obtain P (A) j (M).The singular value tail length is set to M = 0.75r.An AWGN with deviation σ B = 50 is added to the selected image patches to obtain a new set of image patches that are now associated with the image B. For each jth block of image B, the average value of the singular value tail is evaluated using (3) to obtain P (B) j (M).From each jth block, a noise level estimate σj is obtained using (4).The initial noise level estimate for the entire image is obtained as the average value of D independent noise level estimates.Each of these D noise level estimates is associated with one image block.These estimates are obtained using the initialized singular value length M and parameter α values.This denotes the end of the first stage of the proposed noise level estimation algorithm.(4) If the coarse noise level estimate, obtained in the first stage of the proposed noise level estimation algorithm, is below a specified threshold for a give block size, the algorithm enters the second stage.Otherwise, the algorithm is terminated, and the final noise level estimate is equated to the initial noise level estimate.(5) The second stage of the proposed algorithm adopts the following results from the first stage: j (i) and σ. (6) The length of the singular value tail is adjusted according to the initial noise level estimate.
A simple function is proposed to define the relationship between the adjusted M value and the initial noise levels estimate σ.Here, the apostrophe is placed next to the variable to denote that the variable has been adjusted in the second stage of the algorithm.(7) Parameter α is adjusted based on the modified singular value tail length M .2) and (3), respectively.Furthermore, the singular value sequences s (A) j (i) are adopted from the first stage and thus, the singular value decomposition is avoided in the second stage of the algorithm.( 9) From each jth block, a noise level estimate σ j is obtain using (4) and the adjusted parameter α .
The final noise level estimate for the entire image is obtained as the average of D independent noise level estimates, where each estimate is associated with one image block.The individual estimates are based on the adjusted singular value tail length M and the adjusted parameter α .This denotes the end of the second stage of the algorithm.

Determining the Value of the Slope Paramter α
The important aspect of the noise level estimation in the SVD domain is to determine the value of parameter α.Parameter α defines the slope of a linear function that describes the distribution of average P(M) values across a range of noise levels [28].The value of parameter α depends on the matrix rank r and the singular value tail length M.
For a given block of size r × r and the singular value tail length M, the procedure of evaluating parameter α is defined as follows.Average P(M) values are evaluated over a range of different noise levels.For each noise level, P(M) is evaluated on 50 different pure AWGN images and an average value is recorded.Linear regression is used to represent the distribution of the average P(M) values across a range of noise levels and the value of parameter α is equated with the line gradient.
In order to further clarify how parameter α is evaluated, three different choices of block size are considered: 32 × 32, 64 × 64 and 128 × 128.The length of singular value tail is fixed to M = k × r, where k = 0.75.Here, parameter k represents a fraction of the singular value tail length with respect to the matrix rank, k = M/r.Thus, it denotes the normalized singular value tail length.For the considered choices of block size, the distribution of average P(M) values across a range of AWGN levels is shown in Table 1.In Figure 3, a scatter plot of the average P(M) values against the noise levels is shown for each considered choice of block size.The associated results of least-square fitting are also shown.Clearly, in each case, the gradient is positive and its value increases with the block size.For the considered choices of block size and for the fixed length of singular value tail M = 0.75r, the estimated α values are as follows: α 32 = 3.4093, α 64 = 4.8467, α 128 = 6.8675.

Determining the Value of the Slope Paramter α
The important aspect of the noise level estimation in the SVD domain is to determine the value of parameter .Parameter  defines the slope of a linear function that describes the distribution of average P(M) values across a range of noise levels [28].The value of parameter  depends on the matrix rank r and the singular value tail length M.
For a given block of size r × r and the singular value tail length M, the procedure of evaluating parameter  is defined as follows.Average P(M) values are evaluated over a range of different noise levels.For each noise level, P(M) is evaluated on 50 different pure AWGN images and an average value is recorded.Linear regression is used to represent the distribution of the average P(M) values across a range of noise levels and the value of parameter  is equated with the line gradient.
In order to further clarify how parameter  is evaluated, three different choices of block size are considered: 32 × 32, 64 × 64 and 128 × 128.The length of singular value tail is fixed to M = k × r, where k = 0.75.Here, parameter k represents a fraction of the singular value tail length with respect to the matrix rank,  = /.Thus, it denotes the normalized singular value tail length.For the considered choices of block size, the distribution of average P(M) values across a range of AWGN levels is shown in Table 1.In Figure 3, a scatter plot of the average P(M) values against the noise levels is shown for each considered choice of block size.The associated results of least-square fitting are also shown.Clearly, in each case, the gradient is positive and its value increases with the block size.For the considered choices of block size and for the fixed length of singular value tail M = 0.75r, the estimated  values are as follows:  32 = 3.4093,  64 = 4.8467,  128 = 6.8675.The proposed algorithm requires that parameter  is specified for each block size r × r and the singular value tail length M = k × r .Thus, the aforementioned procedure is repeated for each choice of block size and across a range of singular value tail lengths.In each case, the considered singular value tail length M is restricted to range  ∈[0.25r, 0.8r] in order to ensure accurate noise level estimation [28].For example, for the block size of 128 × 128, the considered singular value tail range is  ∈[32, 102].The proposed algorithm requires that parameter α is specified for each block size r × r and the singular value tail length M = k × r .Thus, the aforementioned procedure is repeated for each choice of block size and across a range of singular value tail lengths.In each case, the considered singular value tail length M is restricted to range M ∈ [0.25r, 0.8r] in order to ensure accurate noise level estimation [28].For example, for the block size of 128 × 128, the considered singular value tail range is M ∈ [32, 102].
For each considered block size and the singular value tail length, the associated parameter α is evaluated and the results are presented in Figure 4.The singular value tail lengths are normalized and represented by parameter k.
Electronics 2018, 7, x FOR PEER REVIEW 7 of 18 For each considered block size and the singular value tail length, the associated parameter  is evaluated and the results are presented in Figure 4.The singular value tail lengths are normalized and represented by parameter k. ( For each choice of block size, the coefficients of the proposed model,  0 and  1 are evaluated using least-squares fitting, and the results are presented in Table 2 and Figure 4.In the implementation of the proposed method, estimated α values can be stored in a lookup table or alternatively, the proposed linear model in ( 5) can be used.

Adjusting the Singular Value Tail Length Based on the Initial Noise Level Estimates
The main idea behind the proposed algorithm is to enable the length of the singular value tail to be adjusted according to the initial noise level estimates.The adaptive change in the singular value tail length enables a more consistent performance across a range of noise levels.
In this section, a simple model is proposed to represent the normalized singular value tail length as a function of the initial noise level estimate.In this paper, three different choices of block size are considered, 32 × 32, 64 × 64, and 128 × 128, and for each choice of block size, a specific model is developed.
In order to develop a function of the normalized singular value tail length with respect to a noise level estimate, what needs to be examined is how the noise level estimation performance is affected by the normalized singular value tail length at various noise levels.For each block size, the following experiment is conducted.The noise level estimation mean square error is evaluated for range of k values on a dataset of N = 20 standard images, Supplementary A, Figure S1.The simulation is repeated L = 40 times for each noise level  and MSE results are reported.The mean square estimation error is evaluated as: Given the nature of parameter α distribution over the range of the normalized singular value tail lengths, a simple model is proposed to represent the estimate α as a linear function with respect to parameter k: For each choice of block size, the coefficients of the proposed model, a 0 and a 1 are evaluated using least-squares fitting, and the results are presented in Table 2 and Figure 4.In the implementation of the proposed method, estimated α values can be stored in a lookup table or alternatively, the proposed linear model in (5) can be used.The main idea behind the proposed algorithm is to enable the length of the singular value tail to be adjusted according to the initial noise level estimates.The adaptive change in the singular value tail length enables a more consistent performance across a range of noise levels.
In this section, a simple model is proposed to represent the normalized singular value tail length as a function of the initial noise level estimate.In this paper, three different choices of block size are considered, 32 × 32, 64 × 64, and 128 × 128, and for each choice of block size, a specific model is developed.
In order to develop a function of the normalized singular value tail length with respect to a noise level estimate, what needs to be examined is how the noise level estimation performance is affected by the normalized singular value tail length at various noise levels.For each block size, the following experiment is conducted.The noise level estimation mean square error is evaluated for range of k values on a dataset of N = 20 standard images, Supplementary A, Figure S1.The simulation is repeated L = 40 times for each noise level σ and MSE results are reported.The mean square estimation error is evaluated as: where σ denotes the noise level estimate.The normalized singular value tail length is restricted to a range k ∈ [0.25, 0.8].This restriction is placed to ensure accurate noise level estimation [28].For the block size of 128 × 128, the singular value tail length is varied from k = 0.25 to k = 0.8, in increments of ∆k = 0.156.This corresponds to the tail length variation from M = 32 to M = 102, in increments of ∆M = 2.The results are reported in Appendix A, Table A1.Similarly, for the block size of 64 × 64, the normalized singular value tail length is varied from k = 0.25 to k = 0.8, in increments of ∆k = 0.156, which corresponds to the singular value tail length variation from M = 16 to M = 51, in increments of ∆M = 1.The results are reported in Appendix A, Table A2.For block size of 32 × 32, the normalized singular value tail length is varied from k = 0.25 to k = 0.8, in increments of ∆k = 0.313, which corresponds to the singular value tail length change from M = 8 to M = 25, in increments of ∆M = 1.The results are reported in Appendix A, Table A3.
For each block size, similar trends can be observed regarding MSE distribution across noise levels.For a given noise level, there is some normalized singular value tail length k that minimizes the estimation MSE level.In general, as parameter k deviates from the optimal value, in either direction, the associated MSE value deteriorates.More importantly, as the noise level increases, the optimum parameter k value tends to increase.These results show that significant improvements in MSE level can be achieved by adapting the singular value tail length according to a specific noise level.
In this paper, we propose a simple function to represent how to adjust the normalized singular value tail length k according to the noise level σ: where b 0 and b 1 are coefficients of the proposed model.Here, k denotes the adjusted normalized singular value tail length.The coefficients of the proposed function are obtained by solving the following optimization problem: Here, σb 0 , b 1 denotes the estimate of the noise level σ n that is obtained using the coefficients b 0 and b 1 to describe the singular value tail length adjustment function.Tables A1-A3 show the estimation mean square error results at discrete values of singular value tail length k, and noise level σ n .Since parameter k is inherently discrete, the output of function f is rounded to the nearest discrete k value.For three different choices of block size, particle swarm optimization [30] is used to solve the optimization problem, and the results are reported in Table 3.The associated functions f (σ, b 0 , b 1 ) are presented in Figure 5.The proposed algorithm uses a threshold value to determine whether or not the algorithm enters the second stage, where the noise level estimation is performed based on the adjusted singular value tail length.For each choice of block size, the threshold value σ th is determined as the noise level at which the function describing the adaptation of the singular value tail length according to the noise levels takes the value k = 0.75.This normalized singular value tail length k = 0.75 is recommended in [28] and [29] as it offers good noise level estimation performance at mid to high noise levels.The decrease in the singular value tail length is only effective at low noise levels.Thus, the noise level at which k = 0.75 is used as a threshold value to decide whether or not to adjust the singular value tail length.When the initial noise level is above the given threshold σ th , the proposed algorithm and the noise level estimation algorithm in [29] behave identically.For the three choices of block size, the following threshold values are ascertained σ th 32 = 4.15, σ th 64 = 7.77, and σ th 128 = 9.21.
Electronics 2018, 7, x FOR PEER REVIEW 9 of 18 decrease in the singular value tail length is only effective at low noise levels.Thus, the noise level at which k = 0.75 is used as a threshold value to decide whether or not to adjust the singular value tail length.When the initial noise level is above the given threshold  ℎ , the proposed algorithm and the noise level estimation algorithm in [29] behave identically.

Results and Discussion
In this section, a comparative analysis of the proposed block-based noise level estimation algorithm in the SVD domain with the alternative SVD-domain-based algorithms in [28] and [29] is presented.
In order to simplify the discussion and reporting of the experimental results, the image-based algorithm in [28] is referred to as simply SVD.On the other hand, the proposed adaptive algorithm is abbreviated as ASVD, whilst the block-based noise level estimation algorithm in [29] is abbreviated as SVD-B.The number following the abbreviation is used to identify the choice of block size.Thus, the abbreviation ASVD 64 denotes the proposed adaptive block-based noise level estimation algorithm implemented using 64 × 64 image blocks.The abbreviation SVD-B 32 denotes the blockbased noise level estimation algorithm in [29] implemented using 32 × 32 image blocks.
In Section 4.1, the proposed ASVD algorithm is compared to SVD-B and SVD noise level estimation algorithms in terms of MSE and average estimation error.The block-based methods are evaluated for three different choices of block size, 32 × 32, 64 × 64, and 128 × 128.In Section 4.2, the proposed noise level estimation is compared to the two alternative SVD-domain-based noise level estimation algorithms, in terms of computational time.
Noise level estimation algorithms are implemented using MATLAB 2017 (The MathWorks, Inc., Natick, MA, USA), and all the experiments are performed on Intel's i7-4510U 2.GHz CPU with 8 GB of RAM.The average noise level estimation error, MSE, and computational time results are used to ascertain the optimal choice of block-size for the proposed adaptive block-based noise level estimation algorithm.In the implementation of the algorithm, MATLAB function "s = svd(A)" is used to perform singular value decomposition of image blocks.In the second stage of the proposed algorithm, the adjusted singular value tail length is obtained using the function (7), where the coefficients b0 and b1 are determined for different choices of image block size as in Table 3.The

Results and Discussion
In this section, a comparative analysis of the proposed block-based noise level estimation algorithm in the SVD domain with the alternative SVD-domain-based algorithms in [28] and [29] is presented.
In order to simplify the discussion and reporting of the experimental results, the image-based algorithm in [28] is referred to as simply SVD.On the other hand, the proposed adaptive algorithm is abbreviated as ASVD, whilst the block-based noise level estimation algorithm in [29] is abbreviated as SVD-B.The number following the abbreviation is used to identify the choice of block size.Thus, the abbreviation ASVD 64 denotes the proposed adaptive block-based noise level estimation algorithm implemented using 64 × 64 image blocks.The abbreviation SVD-B 32 denotes the block-based noise level estimation algorithm in [29] implemented using 32 × 32 image blocks.
In Section 4.1, the proposed ASVD algorithm is compared to SVD-B and SVD noise level estimation algorithms in terms of MSE and average estimation error.The block-based methods are evaluated for three different choices of block size, 32 × 32, 64 × 64, and 128 × 128.In Section 4.2, the proposed noise level estimation is compared to the two alternative SVD-domain-based noise level estimation algorithms, in terms of computational time.
Noise level estimation algorithms are implemented using MATLAB 2017 (The MathWorks, Inc., Natick, MA, USA), and all the experiments are performed on Intel's i7-4510U 2.GHz CPU with 8 GB of RAM.The average noise level estimation error, MSE, and computational time results are used to ascertain the optimal choice of block-size for the proposed adaptive block-based noise level estimation algorithm.In the implementation of the algorithm, MATLAB function "s = svd(A)" is used to perform singular value decomposition of image blocks.In the second stage of the proposed algorithm, the adjusted singular value tail length is obtained using the function (7), where the coefficients b 0 and b 1 are determined for different choices of image block size as in Table 3.The adjusted singular value tail length requires the parameter α to be adjusted as well.In the implementation of the proposed algorithm, a set of parameter α values corresponding to different block size choices and singular value tail lengths is stored in a lookup table.

MSE and Average Noise Level Estimation Error
The performance of the proposed block-based noise level estimation algorithm in the SVD domain is compared to the SVD-B algorithm on a set of test images shown in Figure 6.Noise level estimation performance is evaluated over a range of different noise levels.Noise levels are varied from σ = 1 to σ = 10 in increments of ∆σ = 0.5.The implementation of the proposed algorithm uses the lookup table for parameter α.
Electronics 2018, 7, x FOR PEER REVIEW 10 of 18 implementation of the proposed algorithm, a set of parameter α values corresponding to different block size choices and singular value tail lengths is stored in a lookup table.

MSE and Average Noise Level Estimation Error
The performance of the proposed block-based noise level estimation algorithm in the SVD domain is compared to the SVD-B algorithm on a set of test images shown in Figure 6.Noise level estimation performance is evaluated over a range of different noise levels.Noise levels are varied from  = 1 to  = 10 in increments of ∆ = 0.5.The implementation of the proposed algorithm uses the lookup table for parameter .For each noise level, simulations are repeated 50 times and MSE results are presented in Table 4. Both, the proposed ASVD algorithm and the SVD-B [29] algorithm are evaluated for three different choices of block size, 32 × 32, 64 × 64, and 128 × 128.
The results in Table 4 show that SVD-B has a very important limitation.For all considered test images and choices of block size, the estimation MSE levels significantly deteriorate with the decreasing noise levels, as explained below.The proposed ASVD algorithm is designed to solve this problem.Specifically, the ability to adapt the length of singular value tail according to the initial noise level estimates enables the proposed algorithm to perform accurate noise level estimation even at low noise level range.For each noise level, simulations are repeated 50 times and MSE results are presented in Table 4. Both, the proposed ASVD algorithm and the SVD-B [29] algorithm are evaluated for three different choices of block size, 32 × 32, 64 × 64, and 128 × 128.
The results in Table 4 show that SVD-B has a very important limitation.For all considered test images and choices of block size, the estimation MSE levels significantly deteriorate with the decreasing noise levels, as explained below.The proposed ASVD algorithm is designed to solve this problem.Specifically, the ability to adapt the length of singular value tail according to the initial noise level estimates enables the proposed algorithm to perform accurate noise level estimation even at low noise level range.For example, on test images 'Barbara' and 'Boat', and at AWGN level σ = 0.5, the SVD-B 64 algorithm attains the mean square error levels, MSE = 3.888 and MSE = 2.942, respectively.In contrast, on the same test images, 'Barbara' and 'Boat', and at same noise level σ = 0.5, the proposed ASVD 64 algorithm attains the mean square error levels of MSE = 0.283 and MSE = 0.332.Thus, in these two instances, the proposed ASVD 64 algorithm offers the improvements in MSE levels over the SVD-B 64 algorithm by more than 92% and 88%, respectively.
In order to further demonstrate the level of improvement in MSE levels, please consider the following examples.For image "Barbara", at noise levels σ = {0.5, 2, 3.5, 5, 6.5}, the proposed ASVD 64 algorithms offers the following improvements in MSE levels over SVD-B 64 algorithm: 92.8%, 99.1%, 97.1%, 86.2%, 73.7%, respectively.Similarly, for image "Boat", at noise levels σ = {0.5, 2, 3.5, 5, 6.5}, the proposed ASVD 64 algorithms offers the following improvements in MSE levels over SVD-B 64 algorithm: 88.8%, 97.3%, 95.8%, 93.9%, 15.2%, respectively.For image "Town", at noise levels σ = {0.5, 2, 3.5, 5, 6.5}, the proposed ASVD 64 algorithms offers the following improvements in MSE levels over SVD-B 64 algorithm: 65.6%, 76.8%, 76.0%, 61.8%, 19.9%, respectively.In case of image "Girlface", at noise levels σ = {0.5, 2, 3.5, 5, 6.5}, the proposed ASVD 64 algorithms offers the following improvements in MSE levels over SVD-B 64 algorithm: 62.8%, 75.0%, 76.0%, 66.0%, 36.0%,respectively.In case of image "Car", at noise levels σ = {0.5, 2, 3.5, 5, 6.5}, the proposed ASVD 64 algorithms offers the following improvements in MSE levels over SVD-B 64 algorithm: 88.9%, 94.1%, 91,0%, 84.3%, 24.4%, respectively.The improvements in MSE levels usually occur up to the threshold value that is associated with the particular block size.There are examples where that is not the case.Consider the image "Crowd"; the improvements in MSE levels occur up to σ = 3.5.The result in Table 4 show the proposed ASVD algorithm outperform the SVD-B algorithm for all choices of block size.In each case, the improvements in the noise level estimation performance are significant.Also, a very general observation is that the performances of the proposed ASVD algorithm and the SVD-B [29] algorithm become more similar with increasing noise levels.At higher noise levels, the initial noise level estimates increase in value and thus, the singular value tail lengths increase as well.As the difference in the singular value tail lengths between the two algorithms gets smaller, the associated noise level estimation performances become more similar.When the initial noise level estimate is above the threshold value, specified for a given block size, the proposed noise level estimation algorithm and the SVD-B algorithm behave identically.In this case, the proposed algorithm will not enter the second stage and the final noise level estimate is equated with the initial noise level estimate.
In the next experiment, the performance of the proposed ASVD algorithm is to two SVD-domain-based algorithms, SVD-B [29] and SVD [28].The two block-based algorithms are implemented for three different choices of block size: 32 × 32, 64 × 64, and 128 × 128.The noise level estimation performance is measured in terms of MSE, as defined in (6), and the average estimation error as in: The algorithms are evaluated over a range of noise levels.Noise levels are varied from σ = 0.5 to σ = 10, in increments of ∆σ = 0.5.A dataset of N = 15 standard test images is used, and simulations are repeated L = 40 times for each image.Thus, for each noise level, MSE and average estimation error are evaluated on a set of 600 images.The MSE and the average estimation error results are presented in Figure 7.
Table 4 show the proposed ASVD algorithm outperform the SVD-B algorithm for all choices of block size.In each case, the improvements in the noise level estimation performance are significant.
Also, a very general observation is that the performances of the proposed ASVD algorithm and the SVD-B [29] algorithm become more similar with increasing noise levels.At higher noise levels, the initial noise level estimates increase in value and thus, the singular value tail lengths increase as well.As the difference in the singular value tail lengths between the two algorithms gets smaller, the associated noise level estimation performances become more similar.When the initial noise level estimate is above the threshold value, specified for a given block size, the proposed noise level estimation algorithm and the SVD-B algorithm behave identically.In this case, the proposed algorithm will not enter the second stage and the final noise level estimate is equated with the initial noise level estimate.
In the next experiment, the performance of the proposed ASVD algorithm is compared to two SVD-domain-based algorithms, SVD-B [29] and SVD [28].The two block-based algorithms are implemented for three different choices of block size: 32 × 32, 64 × 64, and 128 × 128.The noise level estimation performance is measured in terms of MSE, as defined in (6), and the average estimation error as in: The algorithms are evaluated over a range of noise levels.Noise levels are varied from  = 0.5 to  = 10, in increments of ∆ = 0.5.A dataset of N = 15 standard test images is used, and simulations are repeated L = 40 times for each image.Thus, for each noise level, MSE and average estimation error are evaluated on a set of 600 images.The MSE and the average estimation error results are presented in Figure 7.The results show that the proposed ASVD algorithm outperforms the block-based algorithm SVD-B for all choices of block sizes.Both block-based algorithms outperform the algorithm SVD [28], where the noise level estimation is based on the singular value decomposition of the entire images, rather than on image patches.The MSE curves demonstrate that the proposed algorithm offers the best performance for the block size of 64 × 64, whereas the SVD-B algorithm [29] attains the best MSE results for the block size of 128 × 128.Clearly, the choice of block size affects the performance of both algorithms.
Compared to the SVD-B algorithm, the proposed ASVD method significantly improves the MSE results, especially at very low noise levels.For example, for the block size of 64 × 64 and AWGN level  = 1, the noise level estimation MSE is reduced by more than 65%.At noise levels  = 4 and  = The results show that the proposed ASVD algorithm outperforms the block-based algorithm SVD-B for all choices of block sizes.Both block-based algorithms outperform the algorithm SVD [28], where the noise level estimation is based on the singular value decomposition of the entire images, rather than on image patches.The MSE curves demonstrate that the proposed algorithm offers the best performance for the block size of 64 × 64, whereas the SVD-B algorithm [29] attains the best MSE results for the block size of 128 × 128.Clearly, the choice of block size affects the performance of both algorithms.
Compared to the SVD-B algorithm, the proposed ASVD method significantly improves the MSE results, especially at very low noise levels.For example, for the block size of 64 × 64 and AWGN level σ = 1, the noise level estimation MSE is reduced by more than 65%.At noise levels σ = 4 and σ = 6, the improvements are about 63%, and 29%, respectively.As the level of AWGN gets closer to the threshold value σ th 64 = 7.77, the performance of the two algorithms becomes more similar.In instances when the initial noise level estimates are above the σ th 64 = 7.77 threshold, the two algorithms have identical noise level estimation performances.
The average error results show that all SVD domain algorithms tend to overestimate the levels of noise at low noise levels.The proposed ASVD algorithm reduces the extent of overestimation.Figure 7 clearly show that the choice of block size has an effect on the performance of both noise level estimation algorithms.However, the proposed algorithm is more affected by the choice of block size compared to the SVD-B [29].In case of the proposed ASVD algorithm, the choice of block size determines the choice of a function that governs the change of the singular value tail length with respect to the initial noise level estimates.These functions are significantly different for various choices of block size.Furthermore, the range of noise levels where the change in the singular value tail length occurs is a function of the threshold value, which in turn is a function of block size.The block size of 32 × 32 is associated with the smallest threshold value σ th 32 = 4.15, while the block size of 128 × 128 is associated with the highest threshold value σ th 128 = 9.21. Figure 7 shows that the proposed ASVD algorithm offers the best performance for the choice of block size 64 × 64.This choice of block size is slightly better than 128 × 128, whilst for the block size of 32 × 32, the performance of the proposed algorithm is considerably worse.In addition, in the case of block size 32 × 32, improvements in MSE levels over the SVD-B algorithm are also restricted to a smaller noise level range.At low noise levels, both block-based approaches outperform the algorithm in [29] in terms of MSE.

Computational Time
The computational complexity is an important issue in the algorithm design.In Table 5, the average computational times for different SVD-domain-based noise level estimation algorithms are presented.The computational time results correspond to 512 × 512 images.All considered SVD block-based noise level estimation algorithms significantly reduce the computational time compared to the image-based SVD [28] algorithm.From the computational time perspective, the benefit of the block-based approach to noise level estimation in the SVD domain is significant.For example, compared to the SVD [28] algorithm, the proposed ASVD 64 noise level estimation algorithm reduces the computational time by 50.6%, from 0.0811s to 0.0401s.
The results in Table 5 show that the computational time of a block-based SVD noise level estimation algorithm depends on the size of the image blocks.The highest computational time of 59 ms is attained for SVD 32.For image blocks 64 × 64 and 128 × 128, the computational times of the SVD-B algorithm [29] are 39.6 ms and 40.3 ms, respectively.In consideration of a single image block, the computational time that is required to produce a noise level estimate decreases with the decreasing image block size.However, the computational time is also a function of the number of considered image blocks.The SVD 32 noise level estimation algorithm uses more blocks than SVD 128 algorithm.For a given block size, the computational time can be slightly reduced at the expense of reduced estimation accuracy by decreasing the number of considered blocks.However, this problem is not considered in this paper, but it will be a subject of future research.
The principal objective of this experiment is to determine the computational time cost of adopting the proposed two-stage adaptive noise level estimation compared to a single-stage block-based SVD noise level estimation algorithm in [29].In another words, is the added computational time cost of the proposed algorithm justified by the improvements in the noise level estimation accuracy levels?
The results in Table 5 show that the proposed ASVD algorithm increases the computational time by less than 1.3% compared to SVD-B [29].The added computational time does not significantly vary with block size.The reason for only a negligible increase in computational time is attributed to the efficiency of the second-stage noise level estimation.The second stage of the algorithm uses the same image patches and the same sequences of singular values that were evaluated in the first stage of the algorithm.The second stage of the algorithm does not require the singular value decomposition to be performed again.
The time complexity of the algorithm SVD [28] is determined by the time complexity of singular value decomposition of some dense M × N matrix, O(M × N × min{M, N}).Time complexity of the singular value decomposition is the principal motivation for the block-based approach to noise level estimation.The time complexity of SVD-B [29] algorithm implemented using the blocks of size n × n, is O(n 3 ).The time complexity of the proposed ASVD algorithm is also O(n 3 ).In the second stage of the proposed algorithm, the singular value tail length is adjusted, the associated P (A) (M) and P (B) (M) are evaluated and the new noise level estimate is produced.The time complexity of the second stage of the algorithm is negligible compared to the first stage of the algorithm.The effective design of the proposed method ensures that the added computational time cost compared to the algorithm SVD-B [29] is insignificant.

Conclusions
In this paper, an adaptive block-based algorithm for AWGN level estimation in the SVD domain is proposed.The proposed noise level estimation algorithm adopts a variable singular value tail length in order to enable accurate noise level estimation performance at low noise levels.The proposed noise level estimation algorithm is designed to have two distinct stages.In the first stage, a coarse noise level estimate is obtained using the block-based image analysis in the SVD domain, as described in [29].The coarse noise level estimate is used to adjust the parameters of the algorithm, including the length of singular value tail, in order to produce a more accurate noise level estimate in the second stage of the algorithm.As the AWGN level decreases, the contribution of the underlying image signal to the singular value sequence increases and the number of singular values that are mostly dominated by a noise signal decrease.Thus, the effective singular value tail length is reduced.The ability to reduce the singular value tail length enables the proposed method to significantly improve the noise level estimation accuracy at low noise levels.The paper considers a range of different block sizes, and for each block size, a mathematical model is proposed to describe how to adjust the singular value tail length according to the observed noise levels.
A comparative analysis of the proposed algorithm with the block-based SVD algorithm in [29] and image-based SVD algorithm in [28] is presented.The result show that the proposed noise level estimation algorithm significantly improves the MSE and average error levels across a range of noise levels and for all considered choices of block size.Nevertheless, the proposed noise level estimation algorithm attains the best MSE an average error results for the choice of block size 64 × 64.The only notable drawback of the proposed method is a negligible increase in computational time compared to the algorithm in [29].This increase in computational time is justified by the significant improvements in MSE and average error values at low noise levels; for example for block size 64 × 64 and AWGN level σ = 1, the estimation MSE is reduced by more than 65%, whilst the computational time is increased by less than 1.3%The reason why the added computational time is negligible despite requiring two noise level estimates to be produced for each image is attributed to fact that second stage of noise level estimation algorithm uses the same image patches and singular value sequences obtained in the first stage of the algorithm.Thus, singular value decomposition is not performed in the second stage of the algorithm.
The application of the proposed algorithm to the problem of image denoising will probably be the subject of future research work.In addition, improving the computational efficiency of the proposed algorithm based on identification of homogenous image areas and optimizing the number of blocks used in noise level estimation are also possible directions of future research work.The proposed block-based noise level estimation algorithm in the SVD domain can be applied to a variety of digital image processing fields, including image denoising, image segmentation and other problems where a prior knowledge of noise level is required.
(a) presents a test image, and Figure1(b) presents an example of a 64 × 64 image patch.In Figure1(c), the singular value curves at various levels of additive white Gaussian noise are presented.If an image is corrupted by an additive noise, the singular values of the resulting image correspond to the sum of singular values due to the signal and noise, () =   () +   ().In general, noise signal mostly affects the singular value sequence tail, whereas the underlying image signal strongly affects the first few singular values.With the decreasing noise levels, the effect of noise on the singular value curve is reduced to an increasingly smaller number of singular values.

Figure 1 .
Figure 1.(a) Test image "Pirate".An example image block of size 64 × 64 is outlined; (b) The example image block is magnified; (c) Singular value curves corresponding to the example image block at various noise levels.

Figure 1 .
Figure 1.(a) Test image "Pirate".An example image block of size 64 × 64 is outlined; (b) The example image block is magnified; (c) Singular value curves corresponding to the example image block at various noise levels.

Figure 2 .
Figure 2. Noise level estimation in the SVD domain.

Figure 2 .
Figure 2. Noise level estimation in the SVD domain.
are evaluated using the adjusted singular value tail length M and Equations (

Figure 3 .
Figure 3.The average P(M) values across a range of noise levels and the associated results of leastsquare fitting.

Figure 3 .
Figure 3.The average P(M) values across a range of noise levels and the associated results of least-square fitting.

Figure 4 .
Figure 4.The scatterplot of parameter α against the normalized singular value tail length k and the proposed linear model.

Figure 4 .
Figure 4.The scatterplot of parameter α against the normalized singular value tail length k and the proposed linear model.

Figure 5 .
Figure 5.The proposed functions for adjusting the singular value tail length according to the initial noise level estimates for three different choices of block size.

Figure 5 .
Figure 5.The proposed functions for adjusting the singular value tail length according to the initial noise level estimates for three different choices of block size.

Table 1 .
Average P(M) values across a range of noise levels for different choices of block size.

Table 1 .
Average P(M) values across a range of noise levels for different choices of block size.

Table 2 .
The coefficients of the proposed α model for different choices of image block size.

Table 2 .
The coefficients of the proposed α model for different choices of image block size.
3.3.Adjusting the Singular Value Tail Length Based on the Initial Noise Level Estimates

Table 3 .
The coefficients of the f (σ, b 0 , b 1 ) function for three different choices of image block size.

Table 4 .
Mean square error (MSE) levels for a range of noise levels and test images.

Table 4 .
Mean square error (MSE) levels for a range of noise levels and test images.

Table 5 .
Average computational time for the noise level estimation algorithms in the SVD domain.

Table A1 .
The author declares no conflicts of interest.For the block size of 128 × 128, MSE levels across a range of noise levels and normalized singular value tail length k values.