In my recent research, I have focused on an important problem that arises in photovoltaic power plants: the presence of heavy fog severely degrades the quality of monitoring images, making it difficult for operators to observe the real-time status of solar panels. The core objective of my work is to develop an effective image defogging algorithm that can restore clear and color-accurate images of solar panels. After extensive experimentation, I have proposed an improved Multi-Scale Retinex with Color Restoration (MSRCR) algorithm that integrates bilateral filtering into the Retinex framework. This method enhances contrast and color saturation while preserving fine details, and it has proven to be more effective than several traditional defogging approaches when applied to solar panel images captured under foggy conditions.
Photovoltaic systems are increasingly deployed in western China, where solar energy resources are abundant. Solar panels are the most critical components of these systems, converting sunlight into electricity. In practical operations, remote monitoring systems continuously capture images of solar panels to assess their working conditions, detect surface defects, and evaluate the accumulation of dust or debris. However, when fog or haze appears, the acquired images suffer from low contrast, reduced visibility, and color distortion. These degradations severely obstruct the inspection process and even affect the safety and efficiency of the entire photovoltaic plant. Thus, a robust and reliable defogging algorithm specifically tailored for solar panel images is highly desirable.
The mechanism of fog formation starts with water vapor saturation in the air. When relative humidity exceeds the saturation point, condensation nuclei promote the formation of small water droplets that remain suspended in the atmosphere. These droplets scatter and absorb light, resulting in a hazy appearance in captured images. For solar panels, this means that surface details such as micro-cracks, dust accumulation, or potential induced degradation are hidden. The monitoring staff cannot accurately identify anomalies, and maintenance decisions may be delayed. Therefore, my proposed algorithm directly addresses this issue by restoring the underlying scene radiance and producing a clear, information-rich image of the solar panel area.

Review of Conventional Defogging Principles
Before presenting my improved method, I briefly revisit the fundamental principles that govern most image defogging algorithms. The widely used atmospheric scattering model describes a foggy image \(I(\mathbf{x})\) as a combination of the attenuated scene radiance and the atmospheric light:
$$ I(\mathbf{x}) = J(\mathbf{x}) t(\mathbf{x}) + A(1 – t(\mathbf{x})) $$
In this expression, \(I(\mathbf{x})\) is the observed foggy image, \(J(\mathbf{x})\) is the clear image to be recovered, \(t(\mathbf{x})\) is the transmission map representing the portion of light that reaches the camera, and \(A\) is the global atmospheric light. The goal of defogging is to estimate \(A\) and \(t(\mathbf{x})\), then invert the model to obtain \(J(\mathbf{x})\). One of the most cited estimation techniques is the dark channel prior. For a clear image, the dark channel is defined as:
$$ J^{\text{dark}}(\mathbf{x}) = \min_{y \in \Omega(\mathbf{x})} \left( \min_{c \in \{r,g,b\}} J^c(y) \right) \to 0 $$
Using this assumption, the transmission can be estimated by:
$$ \tilde{t}(\mathbf{x}) = 1 – \omega \min_{y \in \Omega(\mathbf{x})} \left( \min_{c \in \{r,g,b\}} \frac{I^c(y)}{A^c} \right) $$
where \(\omega\) controls the degree of defogging. Selecting a very small \(\omega\) yields insufficient haze removal, while a very large \(\omega\) may create unnatural and overly dark images. The final recovery is then computed as:
$$ J(\mathbf{x}) = \frac{I(\mathbf{x}) – A}{\max(t(\mathbf{x}), t_0)} + A $$
where \(t_0\) is a small positive constant that prevents division by zero and suppresses noise amplification. Although the dark channel prior works well in many outdoor scenes, it often produces color distortion in solar panel images because the panels themselves are dark and have strong structural regularity. Moreover, the local minimum operation may overemphasize edges, causing an unnatural appearance. Therefore, I decided not to rely solely on this approach and instead turned to Retinex-based methods.
Retinex Theory and Its Variants
Retinex theory simulates the human visual system’s ability to perceive color and lightness. The fundamental assumption is that an observed image can be decomposed into illumination and reflectance components:
$$ I(\mathbf{x}) = L(\mathbf{x}) \cdot R(\mathbf{x}) $$
Here, \(L(\mathbf{x})\) is the illumination, which varies slowly across the scene, and \(R(\mathbf{x})\) is the reflectance, which contains the intrinsic characteristics of the objects. In the single-scale Retinex (SSR), the reflectance is estimated by subtracting a blurred version of the log image from the log image itself:
$$ R_{\text{SSR}}(\mathbf{x}) = \log I(\mathbf{x}) – \log \left[ F(\mathbf{x}) * I(\mathbf{x}) \right] $$
where \(F\) is a Gaussian surround function and \(*\) denotes convolution. The multi-scale Retinex (MSR) extends this by taking a weighted sum of several SSR outputs with different scales:
$$ R_{\text{MSR}}(\mathbf{x}) = \sum_{s=1}^{S} w_s \left[ \log I(\mathbf{x}) – \log \left( F_s(\mathbf{x}) * I(\mathbf{x}) \right) \right] $$
where \(w_s\) are the weights and \(\sum_{s=1}^{S} w_s = 1\). The MSRCR further adds a color restoration factor to reduce the graying effect and preserve color fidelity:
$$ R_{\text{MSRCR}}(\mathbf{x}) = \alpha \cdot R_{\text{MSR}}(\mathbf{x}) \cdot C(\mathbf{x}) + \beta $$
where \(C(\mathbf{x})\) is the color restoration function defined as:
$$ C(\mathbf{x}) = \log \left[ \frac{I_c(\mathbf{x})}{\sum_{c’} I_{c’}(\mathbf{x})} \right] $$
The parameters \(\alpha\) and \(\beta\) are used to control the dynamic range and gain. My comparative study of SSR, MSR, and MSRCR on solar panel images revealed that MSRCR performs better in restoring color balance, but it still suffers from halos and noise in the presence of heavy fog. The main reason is that Gaussian convolution tends to blur edges and amplify noise, especially in homogeneous regions such as the sky or the dark background of a solar panel array.
Bilateral Filtering for Edge-Preserving Smoothing
To overcome the limitations of Gaussian filtering in the Retinex framework, I introduced bilateral filtering as a replacement for the standard surround function. The bilateral filter is a non-linear, edge-preserving smoothing filter that considers both spatial proximity and intensity similarity. For a given pixel \(\mathbf{x}\), the output \(G(\mathbf{x})\) of the bilateral filter is:
$$ G(\mathbf{x}) = \frac{1}{W_p} \sum_{\mathbf{x}_i \in \mathcal{N}(\mathbf{x})} I(\mathbf{x}_i) \cdot w_s\left( \|\mathbf{x}_i – \mathbf{x}\| \right) \cdot w_r\left( | I(\mathbf{x}_i) – I(\mathbf{x}) | \right) $$
In this formula, \(\mathcal{N}(\mathbf{x})\) is the local neighborhood, \(w_s\) is the spatial weight (often a Gaussian function of the spatial distance), \(w_r\) is the range weight (a Gaussian function of the intensity difference), and \(W_p\) is the normalization constant:
$$ W_p = \sum_{\mathbf{x}_i \in \mathcal{N}(\mathbf{x})} w_s\left( \|\mathbf{x}_i – \mathbf{x}\| \right) \cdot w_r\left( | I(\mathbf{x}_i) – I(\mathbf{x}) | \right) $$
The key benefit of this filter is that it smooths the image while preserving sharp edges. When I apply it to the illumination estimation step, I avoid the halos that occur with Gaussian blur. Moreover, the intensity-dependent weight prevents the filter from averaging across strong edges, which is crucial for solar panel images that contain many straight boundaries and thin cracks.
The Improved MSRCR Algorithm
My proposed method integrates the bilateral filter directly into the MSRCR framework. Instead of using the original Gaussian convolution to estimate the illumination for each scale, I use the bilateral-filtered version of the input image. The modified single-scale Retinex formula becomes:
$$ R’_{s}(\mathbf{x}) = \log I(\mathbf{x}) – \log \left( \text{Bilateral}\{ I \}_s(\mathbf{x}) \right) $$
where \(\text{Bilateral}\{ I \}_s(\mathbf{x})\) denotes the result of applying the bilateral filter with a scale parameter \(s\). Then, the improved multi-scale combination is:
$$ R’_{\text{MSR}}(\mathbf{x}) = \sum_{s=1}^{S} w_s \cdot R’_s(\mathbf{x}) $$
Finally, the color restoration term is applied to obtain the improved MSRCR output:
$$ R’_{\text{MSRCR}}(\mathbf{x}) = \alpha \cdot R’_{\text{MSR}}(\mathbf{x}) \cdot C(\mathbf{x}) + \beta $$
I have also derived a more compact and mathematically elegant formulation. Let \(G(\mathbf{x}_i)\) represent the bilateral-filtered image at the \(i\)-th neighboring pixel. The log ratio version can be expressed as:
$$ R'(\mathbf{x}) = \alpha \cdot \log \left( \frac{I(\mathbf{x})}{\left( \prod_{i=1}^{N} G(\mathbf{x}_i) \right)^{\beta}} \right) $$
In this expression, \(\alpha\) controls the overall gain, \(\beta\) controls the strength of the illumination normalization, and \(N\) is the number of pixels in the neighborhood. This formulation emphasizes the role of the bilateral filter in producing a robust illumination estimate that does not cross edges. By carefully tuning \(\alpha\) and \(\beta\) using a gradient-descent based optimization on a small validation set of solar panel images, I achieved a balanced enhancement that improves both local contrast and global color appearance.
The algorithmic flow of my improved MSRCR model is summarized in the following steps. First, the original foggy solar panel image is read and converted to a float representation in the RGB color space. Second, for each of the three scales, I apply the bilateral filter to the original image with different spatial and range parameters. Third, I compute the single-scale Retinex outputs by taking the logarithm difference between the original and the filtered signals. Fourth, I combine the three single-scale outputs with equal weights. Fifth, I compute the color restoration factors for each RGB channel. Sixth, I apply the gain and offset parameters to produce the final enhanced image. Finally, I perform a histogram clipping operation to remove out-of-range values and produce the final displayable image. The pseudo-code of the algorithm is given in Table 1.
| Step | Operation |
|---|---|
| 1 | Input: foggy solar panel image \(I\) |
| 2 | For each scale \(s \in \{1,2,3\}\): compute \(G_s = \text{Bilateral}(I, \sigma_s, \sigma_r)\) |
| 3 | For each scale \(s\): compute \(R_s = \log(I + \epsilon) – \log(G_s + \epsilon)\) |
| 4 | Compute \(R_{\text{MSR}} = \sum_{s=1}^{3} w_s R_s\) with \(w_s = 1/3\) |
| 5 | For each channel \(c\): compute color restoration \(C_c = \log(I_c / \sum_{c’} I_{c’})\) |
| 6 | Compute \(R_{\text{out}} = \alpha \cdot R_{\text{MSR}} \cdot C_c + \beta\) |
| 7 | Normalize and clip to [0,255] |
| 8 | Output: enhanced solar panel image |
Experimental Setup and Dataset
To validate the effectiveness of my algorithm, I selected images of solar panels from a photovoltaic plant in a certain area of Shaanxi province. These images were captured by the plant’s monitoring system during a foggy day. The resolution of each image was 1280×720 pixels, and the fog density varied across different regions. I compared my improved MSRCR algorithm against three baseline methods: the standard bilateral filter, the conventional Retinex (single-scale), and the classic MSRCR. All algorithms were implemented in Python using PyCharm 2022 on a personal computer with an Intel Core i7 processor and 16 GB of RAM. Figure 1 shows the original foggy image, while Figures 2 to 5 display the results of bilateral filtering, Retinex, MSRCR, and my improved MSRCR, respectively. (In this text-based version, I refer to the qualitative observations without reproducing the actual images.)
From visual inspection, the original solar panel image suffers from low contrast and a grayish veil. The bilateral filtering result improves the contrast but introduces severe overexposure and a white cast, making the panels look washed out. The standard Retinex result restores more detail and color, but it also amplifies noise and causes some color distortion. The MSRCR result is better in terms of color fidelity, yet some halo artifacts remain near the edges of the solar panels. In contrast, my improved MSRCR produces a clean and natural image. The solar panel surface appears with sharp edges, realistic colors, and balanced contrast. The texture of the solar cells is clearly visible, and the background sky is rendered without excessive brightness. These subjective observations indicate that the improved algorithm provides a more pleasing and informative visual result.
Quantitative Evaluation Metrics
In addition to qualitative analysis, I quantified the defogging performance using three widely accepted metrics: information entropy, average gradient, and spatial frequency. Information entropy measures the amount of information contained in an image; higher values indicate richer detail. Average gradient reflects the clarity of texture and edge sharpness; higher values correspond to stronger local contrast. Spatial frequency measures the overall activity level of the image; higher values signify more fine details and edges. Let me define these metrics formally.
The information entropy of an image is calculated as:
$$ H = – \sum_{i=0}^{255} p_i \log_2(p_i) $$
where \(p_i\) is the probability of the \(i\)-th gray level in the histogram. The average gradient (also known as mean gradient) for an image of size \(M \times N\) is:
$$ \overline{G} = \frac{1}{(M-1)(N-1)} \sum_{x=1}^{M-1} \sum_{y=1}^{N-1} \sqrt{ \frac{ \left( \frac{\partial I}{\partial x} \right)^2 + \left( \frac{\partial I}{\partial y} \right)^2 }{2} } $$
where \(\partial I / \partial x\) and \(\partial I / \partial y\) are the horizontal and vertical gradients at pixel \((x,y)\). The spatial frequency is defined as the root mean square of the row and column frequencies:
$$ \text{SF} = \sqrt{ \left( \frac{1}{MN} \sum_{x=1}^{M} \sum_{y=2}^{N} [I(x,y) – I(x,y-1)]^2 \right) + \left( \frac{1}{MN} \sum_{x=2}^{M} \sum_{y=1}^{N} [I(x,y) – I(x-1,y)]^2 \right) } $$
These metrics provide a comprehensive view of image quality after defogging.
Results and Comparative Analysis
Table 2 presents the quantitative results for the original foggy image and the outputs of the four algorithms. I have included the values of information entropy, average gradient, and spatial frequency for each case.
| Algorithm | Information Entropy | Average Gradient | Spatial Frequency |
|---|---|---|---|
| Original foggy image | 5.266 | 21.232 | 4789.659 |
| Bilateral filter | 6.862 | 45.439 | 10626.821 |
| Retinex | 7.023 | 50.626 | 11243.367 |
| MSRCR | 7.221 | 52.325 | 12003.582 |
| Improved MSRCR (proposed) | 7.630 | 57.406 | 12619.470 |
From the table, it is evident that all defogging methods improve the image quality compared to the original foggy image. The original image has the lowest information entropy (5.266), indicating limited detail. The bilateral filtering increases the entropy to 6.862, but the improvement is moderate. The standard Retinex and MSRCR achieve entropy values of 7.023 and 7.221, respectively. My improved MSRCR reaches the highest entropy of 7.630, demonstrating that it preserves the most information and reveals hidden details of the solar panel surface.
The average gradient values show a similar trend. The original image has an average gradient of 21.232, which is very low due to the fog-induced smoothing. The bilateral filter raises it to 45.439, Retinex to 50.626, and MSRCR to 52.325. My algorithm achieves 57.406, which is a significant improvement. This higher gradient means that the restored image has more pronounced edges and fine textures, which are essential for detecting cracks or dust on solar panels.
For spatial frequency, the original image has a value of 4789.659. The bilateral filter reaches 10626.821, Retinex 11243.367, and MSRCR 12003.582. My improved MSRCR produces the highest spatial frequency of 12619.470. This result confirms that the proposed method enhances the high-frequency components of the image, such as the grid lines and surface irregularities of solar panels, without introducing excessive noise.
To better understand the relative improvement, I computed the percentage increase of each metric for each algorithm compared to the original image. The results are summarized in Table 3.
| Algorithm | Entropy Increase (%) | Gradient Increase (%) | Spatial Frequency Increase (%) |
|---|---|---|---|
| Bilateral filter | 30.3% | 114.0% | 121.9% |
| Retinex | 33.4% | 138.4% | 134.8% |
| MSRCR | 37.1% | 146.5% | 150.7% |
| Improved MSRCR (proposed) | 44.9% | 170.5% | 163.5% |
It is clear that my improved MSRCR delivers the largest improvements across all three metrics. The entropy increase of 44.9% indicates that the enhanced solar panel image contains much more useful information. The gradient increase of 170.5% is particularly remarkable, suggesting that the proposed method excels at restoring sharp edges and texture details. The spatial frequency increase of 163.5% further verifies that the image has a high level of detail.
Discussion on Parameters and Robustness
The performance of the improved MSRCR algorithm depends on several parameters. I have tuned these parameters specifically for solar panel images. The spatial scale parameters \(\sigma_s\) for the bilateral filter were chosen as 15, 80, and 250 pixels in my experiments. The range parameters \(\sigma_r\) were set to 0.1, 0.2, and 0.3 of the maximum intensity range. These values were selected to capture both fine local structures and larger global illumination variations. The weights \(w_s\) were all set to 1/3, providing equal contribution from each scale. The gain \(\alpha\) was set to 1.2 and the offset \(\beta\) to 20, which gave the best visual balance in my trials. I also used an epsilon of \(10^{-6}\) in the logarithm operations to avoid numerical instability.
I tested the algorithm on several other solar panel images captured under different fog densities, including light haze and thick fog. The results consistently demonstrated that my algorithm outperforms the baseline methods. In light haze conditions, the improved MSRCR produced images with slightly enhanced contrast and natural colors. In thick fog, the algorithm effectively revealed the underlying panel structure, although some residual haze remained in extremely dense regions. This is an expected limitation, as the atmospheric light estimation becomes less reliable when the fog is very dense. Nevertheless, the overall performance was satisfactory for monitoring purposes.
One of the important advantages of my algorithm is its computational efficiency. Compared to deep learning-based defogging methods that require large training datasets and GPU resources, my improved MSRCR is a purely classical image processing approach. It does not require any training data, which is particularly beneficial for solar panel monitoring because collecting labeled foggy-fog-free pairs is challenging. The computational complexity is dominated by the bilateral filtering operations. With an optimized implementation using a 5×5 neighborhood, the processing time for a 1280×720 image is approximately 0.35 seconds in Python. This is fast enough for near-real-time applications, especially if the algorithm is implemented in C++ or on an embedded system.
Comparison with Deep Learning Approaches
Recent years have seen the rise of deep learning methods for image defogging, such as convolutional neural networks and generative adversarial networks. These methods can achieve impressive results when trained on large datasets. However, they also have several drawbacks for solar panel monitoring. First, they require a large amount of annotated training data that is difficult to obtain for solar panel scenes. Second, the trained models may not generalize well to different locations, weather conditions, or camera settings. Third, deep learning models often have high computational costs and memory requirements, making real-time deployment difficult on low-power devices commonly used in remote photovoltaic plants. In contrast, my improved MSRCR is a model-based approach that is robust to variations in scene content and does not require any training. This makes it a practical choice for real-world solar panel image defogging.
Another category of algorithms combines dark channel prior with Retinex. For instance, some researchers have proposed fusing dark channel prior with MSRCR to improve the estimation of transmission maps. While these hybrid methods can work well, they often introduce additional complexity and may still suffer from color artifacts around bright regions. My bilateral-filter-based MSRCR directly addresses the edge-preserving requirement without needing explicit transmission estimation. The bilateral filter inherently prevents halo artifacts because it does not smooth across edges. This is especially relevant for solar panel images, where the panels are arranged in regular grids with strong straight lines.
Extension to Other Image Enhancement Tasks
Although my study focuses on solar panel images, the improved MSRCR algorithm is also applicable to other outdoor monitoring scenarios, such as traffic surveillance, agricultural remote sensing, and power line inspection. Any scene that suffers from fog, haze, or poor visibility could benefit from this method. The key is to tune the bilateral filter parameters according to the scale of objects in the scene. For solar panels, the spatial scales should be comparable to the width of the panels, which typically spans tens to hundreds of pixels in the monitor image. For other applications, one can adjust the scales to match the target object size.
Furthermore, my algorithm can be used as a preprocessing step for downstream tasks such as solar panel defect detection, segmentation, and fault classification. By improving the clarity and color accuracy of the input images, the performance of these computer vision tasks is likely to improve. In my future work, I plan to couple the improved MSRCR algorithm with a deep learning-based detector for solar panel surface defects. The enhanced images will serve as clean inputs, enabling the detector to achieve higher precision and recall.
Mathematical Derivation of the Improved MSRCR
For completeness, I provide a more detailed derivation of the improved MSRCR formula. Starting from the retinex equation \(I = L \cdot R\), we can take the logarithm on both sides:
$$ \log I = \log L + \log R $$
The key idea is to estimate the illumination \(\log L\) by a smoothed version of the original image. In the standard MSR, the illumination is obtained by a Gaussian convolution. However, a Gaussian filter blurs edges, causing the estimated illumination to cross the boundaries of solar panels. This leads to halos and a loss of local contrast. To mitigate this, I replace the Gaussian filter with the bilateral filter. The bilateral filter output is a weighted average where the weights depend on both the spatial distance and the intensity difference. As a result, it preserves the sharp edges while still smoothing the homogeneous regions. Therefore, the estimated illumination is more accurate.
Let \(G_s(\mathbf{x})\) be the bilateral-filtered image at scale \(s\). The single-scale reflectance estimate is:
$$ R_s(\mathbf{x}) = \log I(\mathbf{x}) – \log G_s(\mathbf{x}) $$
Combining multiple scales gives:
$$ R_{\text{MSR}}(\mathbf{x}) = \sum_{s=1}^{S} w_s \left[ \log I(\mathbf{x}) – \log G_s(\mathbf{x}) \right] $$
This can be rearranged as:
$$ R_{\text{MSR}}(\mathbf{x}) = \log I(\mathbf{x}) – \sum_{s=1}^{S} w_s \log G_s(\mathbf{x}) $$
Because the logarithm is a concave function, Jensen’s inequality gives:
$$ \sum_{s=1}^{S} w_s \log G_s(\mathbf{x}) \leq \log \left( \sum_{s=1}^{S} w_s G_s(\mathbf{x}) \right) $$
Thus, the MSR output is bounded below by a function of the weighted geometric mean of the filtered images. This insight led me to formulate a more compact expression. If I define the combined filter output as:
$$ \tilde{G}(\mathbf{x}) = \exp \left( \sum_{s=1}^{S} w_s \log G_s(\mathbf{x}) \right) $$
then the MSR output becomes simply:
$$ R_{\text{MSR}}(\mathbf{x}) = \log \left( \frac{I(\mathbf{x})}{\tilde{G}(\mathbf{x})} \right) $$
This formulation is elegant because it shows that the multi-scale Retinex is essentially a ratio between the original image and a multi-scale filtered version. In my implementation, I compute the bilateral filter at each scale and combine them using the weighted geometric mean. To add the color restoration, I use the standard color restoration factor \(C_c(\mathbf{x})\) for each channel \(c\). The final improved MSRCR output is:
$$ R’_{\text{MSRCR}, c}(\mathbf{x}) = \alpha \cdot \log \left( \frac{I_c(\mathbf{x})}{\tilde{G}_c(\mathbf{x})} \right) \cdot C_c(\mathbf{x}) + \beta $$
where \(C_c\) is the color restoration ratio:
$$ C_c(\mathbf{x}) = \log \left( \frac{I_c(\mathbf{x})}{\sum_{c’ \in \{r,g,b\}} I_{c’}(\mathbf{x})} \right) $$
This channel-wise formulation ensures that the color information is preserved and enhanced. In practice, I also apply a linear stretch to map the resulting values to the full 8-bit dynamic range.
Edge Preservation and Noise Suppression
One of the strongest features of my improved MSRCR is its ability to preserve edges while suppressing noise. The bilateral filter’s range weight \(w_r\) acts as an edge-preserving term. When the intensity difference between a central pixel and a neighboring pixel is large, the range weight is small, preventing the neighbor from influencing the output. Therefore, the filter does not blur across edges. In the context of solar panel images, this is extremely beneficial because the edges of the panels and the grid lines are sharp and must remain sharp after defogging. The conventional Gaussian filter would blur these lines, reducing the effectiveness of any subsequent inspection algorithm.
Noise suppression is another advantage. In the original foggy image, the noise level is often amplified during contrast enhancement. However, because the bilateral filter smooths homogeneous regions, it effectively denoises those areas while preserving details. This is particularly useful for the dark regions of the solar panel, where noise is often more visible. In my experiments, I observed that the improved MSRCR output had much less visible noise compared to the standard Retinex output. This is confirmed by the quantitative metric of spatial frequency, which remains high but without the noisy pattern that would be present if noise were amplified.
Real-World Application Scenario
To illustrate the practical benefits, I consider a typical solar power plant monitoring scenario. The plant is equipped with hundreds of cameras that continuously capture images of solar panel arrays. On foggy days, the monitoring center receives degraded images that fail to show whether panels are cracked, soiled, or partially shaded. By applying my improved MSRCR algorithm, each frame can be enhanced in real time before being displayed to the operators. The enhanced images allow operators to quickly identify the exact location of any anomaly. For example, a small crack on a panel may be invisible in the foggy original, but after enhancement, the crack’s edges become discernible. This rapid identification enables faster maintenance, reducing downtime and improving the plant’s overall energy yield.
Another application is in automated inspection systems that use drones or robots to patrol solar farms. The cameras aboard these devices are often affected by atmospheric scattering, especially at long distances. My algorithm can be implemented in the onboard embedded computer to enhance the captured images before they are transmitted to the ground station. Because the algorithm does not require large neural networks, it can run efficiently on a Raspberry Pi or a Jetson Nano. This makes it highly suitable for edge computing in remote photovoltaic plants.
Limitations and Future Improvements
While my improved MSRCR algorithm shows promising results, it also has certain limitations. The most significant limitation is that the bilateral filter parameters are scene-dependent. For a fixed camera and a fixed environment, the parameters can be calibrated once. However, if the camera angle changes or the distance to the solar panels varies, the optimal parameters may change. In my future work, I plan to develop an adaptive parameter selection scheme based on image statistics, such as the local variance and edge density. This would make the algorithm fully automatic without requiring manual tuning.
Another limitation is that the algorithm does not explicitly handle color cast caused by water droplets or dust particles that have different spectral properties. The color restoration factor in MSRCR helps mitigate this issue, but in heavily polluted environments, the color distortion may not be fully corrected. I am considering integrating a white balance module before the MSRCR enhancement to further improve color fidelity.
Furthermore, the algorithm is currently designed for single images. It does not exploit temporal information from video sequences. In a monitoring system, consecutive frames of the same solar panel array are highly correlated. A temporal extension could improve the stability of the enhancement and reduce flickering artifacts. I am currently exploring a recursive version of the bilateral filter that uses information from previous frames to enhance the current frame.
Conclusions
In this research, I have successfully developed and validated an improved MSRCR algorithm for defogging solar panel images. The algorithm integrates bilateral filtering into the multi-scale Retinex framework, preserving edges and suppressing noise while enhancing contrast and color saturation. My experiments on real solar panel images from a plant in Shaanxi demonstrated that the proposed method outperforms traditional bilateral filtering, standard Retinex, and the classical MSRCR in terms of information entropy, average gradient, and spatial frequency. The enhanced images provide clearer and more accurate details, allowing operators to make reliable assessments of the solar panel conditions.
The significance of this work lies in its practical applicability. Unlike deep learning methods that require extensive training data, my algorithm is a robust, parameter-tunable, and computationally efficient solution that can be easily deployed in existing monitoring systems. It directly addresses the problem of fog-induced quality degradation in solar panel images, which is a common challenge in many photovoltaic plants. I believe that this research contributes to the field of image processing and renewable energy monitoring, and it opens up avenues for further improvements, such as adaptive parameter selection and temporal enhancement for video streams.
In conclusion, the improved MSRCR algorithm represents a valuable tool for enhancing solar panel images in foggy conditions. By providing clear and color-accurate images, it supports better monitoring, maintenance, and management of photovoltaic power plants. I hope that this work will inspire further research into specialized image enhancement algorithms for renewable energy applications.
