threeStage: Denoising, deblurring and edge-preserving

View source: R/threeStage.r

threeStageR Documentation

Denoising, deblurring and edge-preserving


Estimate surface using local smoothing and fitting principal component line. Bandwidth is specified by user.


threeStage(image, bandwidth, edge1, edge2, 
blur = FALSE, plot = FALSE)



A square matrix object of size n by n, no missing value allowed.


A positive integer that specifies the number of pixels used in the local smoothing.


A matrix of 0 and 1 of the same size as image represents detected step edge pixels


A matrix of 0 and 1 of the same size as image represents detected roof/valley edge pixels


If blur = TRUE, besides a conventional 2-D kernel function, a univariate increasing kernel function is used in the local kernel smoothing to address the issue with blur.


If plot = TRUE, the image of the fitted surface is plotted


At each pixel, if there are step edges detected in the local neighborhood, a principal component line is fitted through the detected edge pixels to approximate the step edge locally and then the regression surface is estimated by a local constant kernel smoothing procedure using only the pixels on one side of the principal component line. If there are no step edges but roof/valley edges detected in the local neighborhood, the same procedure is followed except that the principal component line to fitted through the detected roof/valley edge pixels. In cases when there is either no step edges or roof/valley edges detected in the neighborhood, the regression surface at the pixel is estimated by the conventional local linear kernel smoothing procedure.


Returns the restored image, which is represented by a matrix


Qiu, P., and Kang, Y. "Blind Image Deblurring Using Jump Regression Analysis," Statistica Sinica, 25, 2015, 879-899.

See Also

JPLLK_surface, surfaceCluster


stepEdge <- stepEdgeLCK(sar, bandwidth=4, thresh=20)
stepEdge1 <- modify2(bandwidth=4, stepEdge)
fit <- threeStage(image=sar, bandwidth=4, edge1=stepEdge1, edge2=array(0, rep(ncol(sar), 2)))

DRIP documentation built on Sept. 1, 2023, 5:08 p.m.

Related to threeStage in DRIP...