# Fuzzy Frankot-Chellappa Algorithm for Surface Normal Integration
## 5 Experimental Results
### Adaptive Fuzzification and Defuzzification Strategy  
Modified fuzzification strategy: Here, we use a multiplicative fuzzification scheme in which the width of the fuzzy support is proportional to the magnitude of the value itself. The gradient data were perturbed to form three sets:  
\[p_{1}=p\cdot(1-\lambda),\quad p_{2}=p,\quad p_{3}=p\cdot(1+\lambda),\]  
representing a symmetric triangular fuzzy number \(\tilde{p}\) characterized by the triplet \((p_{1},p_{2},p_{3})\). The same formulation applies to \(\tilde{q}\). The fuzzification parameters \(\lambda\) control the spread of uncertainty around each gradient value. Larger values of \(\lambda\) introduce more fuzziness, improving robustness against noise but potentially oversmoothing the surface. In our experiments, we empirically found that \(\lambda\in[0.05,0.15]\) yields a good trade-off between accuracy and stability. An adaptive selection of \(\lambda\) based on local gradient magnitude could be an interesting future direction. This approach enables adaptive uncertainty modeling: smaller values yield narrower fuzzy intervals, while larger values admit proportionally larger uncertainty ranges. This proportional fuzzification better reflects relative uncertainty in signals such as gradients and normals. The adaptive defuzzification approach: To enhance robustness against noise, we adopt an adaptive approach in which the final reconstruction is calculated using Equation (13). The defuzzified value is determined by weighting the fuzzy bounds, with weights \(w_{l},w_{m},w_{u}\) selected based on the local uncertainty (i.e., the spread of the fuzzy estimate). To dynamically adjust these weights in response to noise, we define two adaptive thresholds \(T_{1}\) and \(T_{2}\) as functions of the noise standard deviation \(\sigma_{n}\):  
\[T_{1}=a_{1}+\beta_{1}\cdot\sigma_{n},\ \ \ T_{2}=a_{2}+\beta_{2}\cdot\sigma_{n},\]  
The constants \(a_{1},a_{2},\beta_{1},\beta_{2}\) are empirically set to control how sensitive the threshold values are to increasing noise. This formulation ensures that as the noise level rises, the thresholds increase accordingly, allowing the algorithm to adapt to greater uncertainty in the input data. In this study, the variable noise level reflects the standard deviation of the Gaussian noise added to the gradient measurements. This noise level directly informs how the weights are computed in the defuzzification phase, ensuring a more reliable reconstruction. The adaptive defuzzification is applied in three different regimes based on the magnitude of the local fuzzy spread:  
* Low uncertainty (\(\text{spread}<T_{1}\)): The fuzzy number center is considered as the defuzzified values of the surface points: \[d_{\text{new}}(\tilde{z}_{i,j})=z_{i,j}\]
* Moderate uncertainty (\(T_{1}\leq\text{spread}<T_{2}\)): A weighted sum of the lower, center, and upper fuzzy bounds is considered as the defuzzified values of the surface points: \[d_{\text{new}}(\tilde{z}_{i,j})=w_{l}z_{i,j}^{-}+w_{m}z_{i,j}+w_{u}z_{i,j}^{+}\]
* High uncertainty (\(\text{spread}\geq T_{2}\)): The weights of the two edges are halved because they are no longer trusted. The system prefers to rely more on the central z value, because that point is likely to be the closest representative of reality: \[d_{\text{new}}(\tilde{z}_{i,j})=\frac{w_{l}}{2}z_{i,j}^{-}+\left(w_{m}+\frac{ w_{m}}{2}\right)z_{i,j}+\frac{w_{u}}{2}z_{i,j}^{+}\]  
This adaptive scheme ensures that the combination of fuzzy outputs is guided by the level of local uncertainty. In areas with high noise or data gaps, the method compensates by adjusting weights to incorporate a broader contribution from the fuzzy bounds, thus maintaining a more stable and realistic reconstruction. Table 2 presents a comparison of the exact function, the discrete sine transform approximation, and the fuzzy discrete sine transform approximation for several surfaces using the following new strategy: \(s_{1}=\text{{Vase}}\), \(s_{2}=\text{{Sombrero}}\), \(s_{3}=\text{{Pyramid}}\).