License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
Version: | 2.3 |
Description: | A collection of functions that perform jump regression and image analysis such as denoising, deblurring and jump detection. The implemented methods are based on the following research: Qiu, P. (1998) <doi:10.1214/aos/1024691468>, Qiu, P. and Yandell, B. (1997) <doi:10.1080/10618600.1997.10474746>, Qiu, P. (2009) <doi:10.1007/s10463-007-0166-9>, Kang, Y. and Qiu, P. (2014) <doi:10.1080/00401706.2013.844732>, Qiu, P. and Kang, Y. (2015) <doi:10.5705/ss.2014.054>, Kang, Y., Mukherjee, P.S. and Qiu, P. (2018) <doi:10.1080/00401706.2017.1415975>, Kang, Y. (2020) <doi:10.1080/10618600.2019.1665536>. |
Title: | Discontinuous Regression and Image Processing |
Author: | Yicheng Kang [aut, cre], Peihua Qiu [aut, ctb] |
Maintainer: | Yicheng Kang <kangyicheng0527@gmail.com> |
Depends: | R (≥ 3.5.0) |
Imports: | parallel, graphics, stats |
Encoding: | UTF-8 |
LazyData: | true |
NeedsCompilation: | yes |
URL: | https://miamioh.edu/fsb/directory/?up=/directory/kangy10, https://github.com/kangy10/DRIP |
BugReports: | https://github.com/kangy10/DRIP/issues |
Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0) |
Config/testthat/edition: | 3 |
VignetteBuilder: | knitr |
Packaged: | 2024-11-20 17:06:20 UTC; yicheng |
Repository: | CRAN |
Date/Publication: | 2024-11-21 21:20:06 UTC |
Jump-Preserving Local Linear Kernel Smoothing
Description
Estimate surface using piecewise local linear kernel smoothing. The bandwidth is chosen by leave-one-out cross validation.
Usage
JPLLK_surface(image, bandwidth, plot = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A numeric vector of positive integers, which specifies the number of pixels used in the local smoothing. The final fitted surface uses the optimal bandwidth chosen from those provided by users. |
plot |
If plot = TRUE, the image of the fitted surface is plotted. |
Details
At each pixel, the gradient is estimated by a local linear
kernel smoothing procedure. Next, the local neighborhood is
divided into two halves along the direction perpendicular to
(\widehat{f}'_{x}
, \widehat{f}'_{y}
). Then the one-
sided local linear kernel (LLK) estimates are obtained in the
two half neighborhoods respectively. Among these two one-sided
estimates, the one with smaller weighted mean square error is
chosen to be the final estimate of the regression surface at the
pixel.
Value
A list of fitted values, residuals, chosen bandwidth and estimated sigma.
Author(s)
Yicheng Kang
References
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61(3), 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
Examples
fit <- JPLLK_surface(image = sar, bandwidth = c(3, 4))
Brain Image
Description
This file contains data of a brain image. It has 217x217 pixels. Gray levels are in the range [0, 255]. In the data file, observations are listed as a 217 x217 matrix. This image has blur involved.
Usage
brain
Format
A matrix containing 217x217 pixels.
Author(s)
Yicheng Kang
References
Kang, Y., Mukherjee, P.S. and Qiu, P. (2018) “Efficient Blind Image Deblurring Using Nonparametric Regression and Local Pixel Clustering”, Technometrics, 60(4), 522 – 531, doi:10.1080/00401706.2017.1415975.
Image of Circles
Description
This file contains the circles image. It has 256x256 pixels. Gray levels are in the range [0, 255]. In the data file, observations are listed as a 256x256 matrix.
Usage
circles
Format
A matrix of 256x256 pixels.
Author(s)
Yicheng Kang
References
Qiu, P. (2005) Image Processing and Jump Regression Analysis. New Jersey: Wiley.
Bandwidth Selection and Noise Level Estimation
Description
Select the leave-one-out cross validation bandwidth for local
linear kernel smoothing and estimates the noise level in the
input image. Both the bandwidth parameter and the noise level
are required inputs for the blind image deblurring procedure
jpex
.
Usage
cv.jpex(image, bandwidths, ncpus = 1)
Arguments
image |
A blurry input image. |
bandwidths |
A vector of positive integers that specify the size of the neighborhood for local smoothing. |
ncpus |
The number of CPUs allocated for parallel computing. |
Value
LLK |
The estimated surface by local linear kernel (LLK) smoothing, using the CV selected bandwidth. |
sigma |
The estimated noise level, defined as the square root of the mean squared error (MSE) between LLK and the input image. |
cv_scores |
A vector of the same length as that of the input bandwidths. Each element in the vector is the leave-one-out CV score associated with the corresponding bandwidth value. |
input |
The bandwidth parameters input by user. |
bandwidth |
The bandwidth parameter that results in the smallest CV score. |
Author(s)
Yicheng Kang
References
Kang, Y. (2020) “Consistent Blind Image Deblurring Using Jump-Preserving Extrapolation”, Journal of Computational and Graphical Statistics, 29(2), 372 – 382, doi:10.1080/10618600.2019.1665536.
See Also
Examples
out <- cv.jpex(stopsign, c(2,3))
Performance Measure of Edge Detector
Description
Compute the dissimilarity measure between two sets of edge pixels. It is used as a performance measure for step or roof edge detectors.
Usage
dKQ(edge1, edge2)
Arguments
edge1 |
One set of pixels. |
edge2 |
The other set of pixels. |
Details
The mathematical definition of d_{KQ}
is as follows.
d_{KQ}(S_1, S_2) = \frac{0.5}{|S_1|}\sum_{p_1\in S_1} d_E(p_1, S_2) +
\frac{0.5}{|S_2|}\sum_{p_2\in S_2} d_E(p_2, S_1)
, where S_1
and S_2
are two point sets, and d_E
denotes the Euclidean distance.
Value
Value of the d_{KQ}
Author(s)
Yicheng Kang
References
Kang, Y. and Qiu, P., "Jump Detection in Blurred Regression Surfaces," Technometrics, 56, 2014, 539-550, doi:10.1080/00401706.2013.844732.
Examples
mat1 <- matrix(c(1, rep(0, 3)), ncol = 2)
mat2 <- matrix(c(rep(0, 3), 1), ncol = 2)
dKQ(mat1, mat2)
Blind Image Deblurring
Description
Take in any square matrix (noisy blurry image) and deblur it.
Usage
jpex(image, bandwidth, alpha, sigma)
Arguments
image |
A square matrix representing a blurry image. |
bandwidth |
A positive integer that specifies the size of the neighborhood for local smoothing. |
alpha |
A numeric between 0 and 1. This is the significance level for the Chi-square hypothesis test. The null hypothesis is that a given pixel is in a continuity region and not affected by the blur. |
sigma |
A positive numeric value for the noise level in the blurred image. It is used in the Chi-square test. |
Value
deblurred |
A square matrix representing the deblurred image. |
edge |
A square matrix, the element of which is the value
of the Chi-square test statistic at a pixel location. One can
classify a given pixel as a blurry pixel if
|
Author(s)
Yicheng Kang
References
Kang, Y. (2020) “Consistent Blind Image Deblurring Using Jump-Preserving Extrapolation”, Journal of Computational and Graphical Statistics, 29(2), 372 – 382, doi:10.1080/10618600.2019.1665536.
See Also
Examples
out <- jpex(image = stopsign, bandwidth = as.integer(2), sigma =
0.00623, alpha = 0.001)
Image of a Kid
Description
This file contains the kid image. The image has 387x387 pixels. Gray levels are in the range [0, 255]. In the data file, observations are listed as a 387x387 matrix. This image has spatially variant blur involved.
Usage
kid
Format
A matrix of 387x387 pixels.
Author(s)
Yicheng Kang
References
Kang, Y. and Qiu, P. (2014) "Jump Detection in Blurred Regression Surfaces," Technometrics, 56(4), 539 – 550, doi:10.1080/00401706.2013.844732.
Lena Image
Description
This file contains the Lena image. It has 512x512 pixels. Gray levels are in the range [0, 255]. In the data file, observations are listed as a 512x512 matrix.
Usage
lena
Format
A 512x512 matrix.
Author(s)
Yicheng Kang
Source
November 1972 issue of Playboy magazine.
Type-1 Modification Procedure
Description
Modify detected edges to make them thin.
Usage
modify1(bandwidth, image, edge, plot)
Arguments
image |
A matrix that represents the image. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
edge |
A matrix of 0 and 1 represents detected edge pixels. |
plot |
If plot = TRUE, images of detected edges before and after the modification are plotted. |
Details
A local-smoothing based edge detection algorithm may flag deceptive edge
pixel candidates. One kind of such candidates consists of those close
to the real edges. They occur due to the nature of local
smoothing. That is, if the point (x_i, y_j)
is flagged,
then its neighboring pixels will be flagged with high probability.
This kind of deceptive candidates can make the detected edges
thick. This modification procedure makes the detected edges
thin.
Value
A matrix of zeros and ones of the same size as the input image.
Author(s)
Yicheng Kang
References
Qiu, P. and Yandell, B. (1997) "Jump Detection in Regression Surfaces," Journal of Computational and Graphical Statistics 6(3), 332-354, doi:10.1080/10618600.1997.10474746.
See Also
Examples
edge <- stepEdge(sar, bandwidth = 4, thresh = 20, degree = 0)
out <- modify1(4, sar, edge)
Type-2 Modification Procedure
Description
Delete deceptive edge pixels that are scattered in the design space.
Usage
modify2(bandwidth, edge, plot)
Arguments
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
edge |
A matrix of 0 and 1 representing the detected edge pixels. |
plot |
If plot = TRUE, images of the detected edges before and after the modification are plotted. |
Details
A local-smoothing based edge detection algorithm may flag deceptive edge
pixel candidates. One kind of such candidates existis due to the nature of hypothesis
testing, on which the threshold value of the edge detection criterion is
based. That is, a point (x_i, y_j)
could be flagged as a edge
pixel with certain probability, even if it is actually not a edge pixel.
Deceptive candidates of this kind are scattered in the whole design
space. This modification procedure deletes scattered edge pixel candidates.
Value
A matrix of zeros and ones of the same size as the input image.
Author(s)
Yicheng Kang
References
Qiu, P. and Yandell, B. (1997) "Jump Detection in Regression Surfaces," Journal of Computational and Graphical Statistics 6(3), 332-354, doi:10.1080/10618600.1997.10474746.
See Also
Examples
edge <- stepEdge(sar, bandwidth = 4, thresh = 20, degree = 0)
out <- modify2(4, edge)
Image of Peppers
Description
This file contains the peppers image. It has 512x512 pixels. Gray levels are in the range [0, 255]. In the data file, observations are listed as a 512x512 matrix.
Usage
peppers
Format
A matrix of 512x512 pixels.
Author(s)
Yicheng Kang
References
Kang, Y. (2020) “Consistent Blind Image Deblurring Using Jump-Preserving Extrapolation”, Journal of Computational and Graphical Statistics, 29(2), 372 – 382, doi:10.1080/10618600.2019.1665536.
Plot Parameter Selection Results in JPEX Deblurring
Description
Plot the results of a JPEX parameter selection procedure.
Usage
## S3 method for class 'JPEX_Parameters'
plot(x, ...)
Arguments
x |
A JPEX parameter selection object. |
... |
Further arguments passed to or from other methods. |
Details
Plot the cross-validation scores against the bandwidth values.
Value
A plot of cross-validation scores is produced.
Author(s)
Yicheng Kang
References
Kang, Y. (2020) “Consistent Blind Image Deblurring Using Jump-Preserving Extrapolation”, Journal of Computational and Graphical Statistics, 29(2), 372 – 382, doi:10.1080/10618600.2019.1665536.
See Also
cv.jpex
, print.JPEX_Parameters
,
summary.JPEX_Parameters
Examples
parSel <- cv.jpex(stopsign, c(2,3))
plot(parSel)
Plot the Residual Image from a JPLLK Estimation
Description
Plot the residual image from a JPLLK parameter selection object where the bandwidth is chosen by cross validation.
Usage
## S3 method for class 'JPLLK_Parameters'
plot(x, ...)
Arguments
x |
A JPLLK parameter selection object. |
... |
Further arguments passed to or from other methods. |
Details
Plot the residual image from a JPLLK parameter selection object. The bandwidth used in producing the residual image is chosen by cross validation.
Value
A residual image is produced.
Author(s)
Yicheng Kang
References
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61(3), 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
JPLLK_surface
, print.JPLLK_Parameters
,
summary.JPLLK_Parameters
Examples
fit <- JPLLK_surface(image=sar, bandwidth=c(3, 4))
plot(fit)
Plot Parameter Selection Results in Surface Estimation
Description
Plot information about a clustering-based surface estimation parameter selection object.
Usage
## S3 method for class 'Surface_Cluster_Parameters'
plot(x, ...)
Arguments
x |
A clustering-based surface estimation parameter selection object. |
... |
Further arguments passed to or from other methods. |
Details
Plot some information about a clustering-based surface estimation parameter selection object. In particular, it plots the cross-validation (no blur) or modified cross-validation (there is blur involved) scores against the specified bandwidth values.
Value
A plot of (modified) cross-validation scores is produced.
Author(s)
Yicheng Kang
References
Kang, Y., Mukherjee, P.S. and Qiu, P. (2018) "Efficient Blind Image Deblurring Using Nonparametric Regression and Local Pixel Clustering", Technometrics, 60(4), 522 – 531, doi:10.1080/00401706.2017.1415975.
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61, 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
surfaceCluster_bandwidth
, print.Surface_Cluster_Parameters
,
summary.Surface_Cluster_Parameters
Examples
data(brain)
bandwidth_select <- surfaceCluster_bandwidth(image = brain,
bandwidths = c(3:4), sig.level = .9995, blur = FALSE)
plot(bandwidth_select)
Plot Parameter Selection Results in 3-Stage Estimation
Description
Plot information about a 3-stage estimation bandwidth selection object.
Usage
## S3 method for class 'Three_Stage_Parameters'
plot(x, ...)
Arguments
x |
A three-stage estimation bandwidth selection object. |
... |
Further arguments passed to or from other methods. |
Details
It plots the cross-validation (no blur involved) or modified cross-validation (there is blur involved) scores against the specified bandwidth values.
Value
A plot of the (modified) cross-validation scores is produced.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) “Blind Image Deblurring Using Jump Regression Analysis”, Statistica Sinica, 25, 879 – 899, doi:10.5705/ss.2014.054.
See Also
threeStageParSel
, print.Three_Stage_Parameters
,
summary.Three_Stage_Parameters
Examples
## Not run:
step.edges <- stepEdge(peppers, bandwidth = 9, thresh = 17)
roof.edges <- roofEdge(peppers, bandwidth = 6, thresh = 3000,
edge1 = step.edges)
set.seed(24)
# Time consuming
parSel <- threeStageParSel(image = peppers, edge1 = step.edges,
edge2 = roof.edges, bandwidth = 3:4, nboot = 1, blur = TRUE)
plot(parSel)
## End(Not run)
Print Parameter Selection Results in Edge Detection
Description
Display information about an edge detection parameter selection object.
Usage
## S3 method for class 'Edge_Parameters'
print(x, type = "all", ...)
Arguments
x |
An edge detection parameter selection object. |
type |
The type of information to display. The "matrix"
option prints the bootstrap version of |
... |
Further arguments passed to or from other methods. |
Details
Prints some information about an edge detection parameter
selection object. In particular, this method prints the d_{KQ}
values based on bootstrap samples, the selected bandwidth and
threshold.
Value
A display of parameter selection results in edge detection.
Author(s)
Yicheng Kang
References
Kang, Y. and Qiu, P. (2014) "Jump Detection in Blurred Regression Surfaces," Technometrics, 56(4), 539 – 550, doi:10.1080/00401706.2013.844732.
See Also
stepEdgeParSel
, roofEdgeParSel
Examples
set.seed(24)
parSel <- stepEdgeParSel(image = sar, bandwidth = 5,
thresh = c(17, 21), nboot = 1)
print(parSel, type = "all")
Print Parameter Selection Results in JPEX Deblurring
Description
Display information about a JPEX parameter selection object.
Usage
## S3 method for class 'JPEX_Parameters'
print(x, type = "all", ...)
Arguments
x |
A JPEX parameter selection object. |
type |
The type of information to display. The "cv_scores" option prints the cross-validation scores for each bandwidth. The "bandwidth" option prints the selected bandwidth. The "sigma" option prints the estimated noise level. The "all" option prints all the information. |
... |
Further arguments passed to or from other methods. |
Details
Prints some information about a JPEX parameter selection object. In particular, this method prints the cross-validation scores, the selected bandwidth and estimated noise level.
Value
A display of parameter selection results in JPEX estimation.
Author(s)
Yicheng Kang
References
Kang, Y. (2020) “Consistent Blind Image Deblurring Using Jump-Preserving Extrapolation”, Journal of Computational and Graphical Statistics, 29(2), 372 – 382, doi:10.1080/10618600.2019.1665536.
See Also
Examples
parSel <- cv.jpex(stopsign, c(2,3))
print(parSel, type = "all")
Print Parameter Selection Results in JPLLK Estimation
Description
Display information about a JPLLK parameter selection object.
Usage
## S3 method for class 'JPLLK_Parameters'
print(x, type = "all", ...)
Arguments
x |
A JPLLK parameter selection object. |
type |
The type of information to display. The "bandwidth" option prints the selected bandwidth. The "sigma" option prints the estimated noise level. The "all" option prints all the information. |
... |
Further arguments passed to or from other methods. |
Details
Prints some information about a JPLLK parameter selection object. In particular, this method prints the selected bandwidth and estimated noise level.
Value
A display of parameter selection results in JPLLK estimation.
Author(s)
Yicheng Kang
References
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61(3), 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
Examples
fit <- JPLLK_surface(image = sar, bandwidth = c(3, 4))
print(fit, type = "bandwidth")
Print Parameter Selection Results in Surface Estimation
Description
Display information about a clustering-based surface estimation parameter selection object.
Usage
## S3 method for class 'Surface_Cluster_Parameters'
print(x, type = "all", ...)
Arguments
x |
A clustering-based surface estimation parameter selection object. |
type |
The type of information to display. The "cv_scores" option prints the cross-validation or modified cross-validation scores for each bandwidth. The "sigma" option prints the estimated noise level. The "phi0" option prints the estimated value of the error density at 0. The "mean_std_abs" option prints the estimated mean of absolute error. The "all" option prints all the information. |
... |
Further arguments passed to or from other methods. |
Details
Prints some information about a clustering-based surface estimation parameter selection object. In particular, this method prints the cross- validation or modified cross-validation scores, the selected bandwidth, the estimated noise level, the estimated value of the error density at 0 and the estimated mean of absolute error.
Value
A display of parameter selection results in clustering-based surface estimation.
Author(s)
Yicheng Kang
References
Kang, Y., Mukherjee, P.S. and Qiu, P. (2018) "Efficient Blind Image Deblurring Using Nonparametric Regression and Local Pixel Clustering", Technometrics, 60(4), 522 – 531, doi:10.1080/00401706.2017.1415975.
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61, 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
surfaceCluster_bandwidth
,
summary.Surface_Cluster_Parameters
,
plot.Surface_Cluster_Parameters
Examples
data(brain)
bandwidth_select <- surfaceCluster_bandwidth(image = brain,
bandwidths = c(3:4), sig.level = .9995, blur = FALSE)
print(bandwidth_select, type = "cv_scores")
Print Parameter Selection Results in 3-Stage Estimation
Description
Display information about a three-stage estimation bandwidth selection object.
Usage
## S3 method for class 'Three_Stage_Parameters'
print(x, type = "all", ...)
Arguments
x |
A three-stage estimation bandwidth selection object. |
type |
The type of information to display. The "cv_scores" option prints the cross-validation or modified cross-validation scores for each bandwidth. The "bandwidth" option prints the selected the bandwidth. The "all" option prints all the information. |
... |
Further arguments passed to or from other methods. |
Details
Prints some information about a three-stage estimation bandwidth selection object. In particular, this method prints the cross-validation or modified cross-validation scores and the selected bandwidth.
Value
Display (modified) cross-validation scores and the selected bandwidth.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) “Blind Image Deblurring Using Jump Regression Analysis”, Statistica Sinica, 25, 879 – 899, doi:10.5705/ss.2014.054.
See Also
threeStageParSel
, summary.Three_Stage_Parameters
,
plot.Three_Stage_Parameters
Examples
## Not run:
step.edges <- stepEdge(peppers, bandwidth = 9, thresh = 17)
roof.edges <- roofEdge(peppers, bandwidth = 6, thresh = 3000,
edge1 = step.edges)
set.seed(24)
# Time consuming
parSel <- threeStageParSel(image = peppers, edge1 = step.edges,
edge2 = roof.edges, bandwidth = 3:4, nboot = 1, blur = TRUE)
print(parSel, type = "all")
## End(Not run)
Roof Edge Detection Statistics
Description
Compute the difference between two one-sided gradient estimates.
Usage
roofDiff(image, bandwidth, blur)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
blur |
If blur = TRUE, besides the conventional 2-D kernel function, a univariate kernel function is used to address the issue of blur. |
Details
At each pixel, the second-order derivarives (i.e., f''_{xx}
,
f''_{xy}
and f''_{yy}
) are estimated by
a local quadratic kernel smoothing procedure. Next, the local
neighborhood is first divided into two halves along the direction
perpendicular to (\widehat{f}''_{xx}
, \widehat{f}''_{xy}
).
Then the one-sided estimates of f'_{x+}
and f'_{x-}
are obtained respectively by local linear kernel smoothing. The
estimates of f'_{y+}
and f'_{y-}
are obtained by the
same procedure except that the neighborhood is divided along the
direction perpendicular to (\widehat{f}''_{xy}
,
\widehat{f}''_{yy}
).
Value
A matrix where each entry is the maximum of the differences:
|\widehat{f}_{x+} - \widehat{f}_{x-}|
and
|\widehat{f}_{y+} - \widehat{f}_{y-}|
at each pixel location.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) "Blind Image Deblurring Using Jump Regression Analysis", Statistica Sinica, 25, 879 – 899, doi:10.5705/ss.2014.054.
See Also
Examples
diff <- roofDiff(image = peppers, bandwidth = 8)
Roof Edge Detector
Description
Detect roof/valley edges in an image using piecewise local quadratic kernel smoothing.
Usage
roofEdge(image, bandwidth, thresh, edge1, blur, plot)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
thresh |
Threshold value to use in the edge detection criterion. |
edge1 |
A square matrix representing the image's step edges. The function excludes step edges when detects roof edges. |
blur |
If blur = TRUE, besides the conventional 2-D kernel function, a univariate kernel function is used in the local smoothing to address the issue of blur. |
plot |
If plot = TRUE, an image of detected edges is plotted. |
Details
At each pixel, the second-order derivarives (i.e., f''_{xx}
,
f''_{xy}
, and f''_{yy}
) are estimated by a local
quadratic kernel smoothing procedure. Next, the local neighborhood
is first divided into two halves along the direction perpendicular
to (\widehat{f}''_{xx}
, \widehat{f}''_{xy}
). Then the
one-sided estimates of f'_{x+}
and f'_{x-}
are obtained
respectively by local linear kernel smoothing. The estimates of
f'_{y+}
and f'_{y-}
are obtained by the same procedure
except that the neighborhood is divided along the direction perpendicular
to (\widehat{f}''_{xy}
, \widehat{f}''_{yy}
). The pixel is
flagged as a roof/valley edge pixel if max(|\widehat{f}_{x+} -
\widehat{f}_{x-}|, |\widehat{f}_{y+} - \widehat{f}_{y-}|)>
the
specified threshold and there is no step edge pixels in the neighborhood.
Value
A matrix of zeros and ones of the same size as the input image.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) “Blind Image Deblurring Using Jump Regression Analysis”, Statistica Sinica, 25, 879 – 899, doi:10.5705/ss.2014.054.
See Also
Examples
## Not run:
step.edges <- stepEdge(peppers, bandwidth = 6, thresh = 25, degree = 1)
roof.edges <- roofEdge(image = peppers, bandwidth = 9, thresh = 3000,
edge1 = step.edges, blur = FALSE, plot = FALSE) # Time consuming
edges <- step.edges + roof.edges
par(mfrow = c(2, 2))
image(1 - step.edges, col = gray(0:1))
image(1 - roof.edges, col = gray(0:1))
image(1 - edges, col = gray(0:1))
image(peppers, col = gray(c(0:255)/255))
## End(Not run)
Parameter Selection in Roof Edge Detection
Description
Select bandwidth and threshold value for the roof/valley edge detector using bootstrap.
Usage
roofEdgeParSel(image, bandwidth, thresh, nboot, edge1, blur = FALSE)
Arguments
image |
A square matrix object of size n by n, no missing value allowed. |
bandwidth |
Positive integers to specify the number of pixels used in the local smoothing. These are the bandwidth parameters to be chosen from. |
thresh |
Threshold values to be chosen from. |
nboot |
Number of bootstrap samples. |
edge1 |
Step edges. The function excludes step edges when detect roof/valley edges. |
blur |
TRUE if the image contains blur, FALSE otherwise. |
Details
If blur=TRUE, then a conventional local linear kernel smoothing is
applied to estimate the blurred surface; Bootstrap samples are obtained by
drawing with replacement from the residuals and the d_{KQ}
is computed
for the detected edges of the original sample and those of the bootstrap
samples. If blur=FALSE, the procedure is the same as when blur=TRUE
except that a jump-preserving kernel smoothing procedure is used to obtain
residuals.
Value
Returns a list of the selected bandwdith, the selected threshold value,
and a matrix of d_{KQ}
values with each entry corresponding to each combination
of bandwdith and threshold.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) “Blind Image Deblurring Using Jump Regression Analysis”, Statistica Sinica, 25, 879-899, doi:10.5705/ss.2014.054
See Also
Examples
## Not run:
step.edges <- stepEdge(peppers, bandwidth = 9, thresh = 17)
set.seed(24)
parSel <- roofEdgeParSel(image = peppers, bandwidth = 5, thresh = 5000,
nboot = 1, edge1 = step.edges, blur = TRUE) # Time Consuming
## End(Not run)
Synthetic Aperture Radar Image
Description
This file contains the synthetic aperture radar (SAR) image of an area near Thetford forest, England. The image has 250x250 pixels. Gray levels are in the range [0, 255]. In the data file, observations are listed as a 250x250 matrix. This image is noisy.
Usage
sar
Format
A matrix of 250x250 pixels.
Author(s)
Yicheng Kang
Source
https://users.phhp.ufl.edu/pqiu/research/book/data/index.html
References
Qiu, P. (2005) Image Processing and Jump Regression Analysis. New Jersey: Wiley.
Step Edge Detection Statistics
Description
Compute difference between two one-sided local kernel estimates along the gradient direction.
Usage
stepDiff(image, bandwidth, degree = 1, blur = FALSE, plot = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
degree |
An integer equal to 0 for local constant kernel smoothing or 1 for local linear kernel smoothing. The default value is 1. |
blur |
If blur = TRUE, in addition to a conventional 2-D kernel function, a 1-D kernel is used in local smoothing to address the issue of blur. The default value is FALSE. |
plot |
If plot = TRUE, an image of the detection statistics at each pixel is plotted. |
Details
At each pixel, the gradient is estimated by a local linear
kernel smoothing procedure. Next, the local neighborhood is
divided into two halves along the direction perpendicular to
(\widehat{f}'_{x}
, \widehat{f}'_{y}
). Then the one-
sided local kernel estimates are obtained in the two half
neighborhoods respectively.
Value
A matrix of the estimated difference, |\widehat{f}_+ - \widehat{f}_-|
,
at each pixel.
Author(s)
Yicheng Kang
References
Kang, Y. and Qiu, P. (2014) "Jump Detection in Blurred Regression Surfaces," Technometrics, 56(4), 539 – 550, doi:10.1080/00401706.2013.844732.
See Also
Examples
diff <- stepDiff(image = sar, bandwidth = 4, degree = 0)
Step Edge Detector
Description
Detect step edges in an image.
Usage
stepEdge(image, bandwidth, thresh, degree = 1, blur = FALSE,
plot = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
thresh |
The threshold value to use in the edge detection criterion. Must be a positive value. |
degree |
An integer equal to 0 for local constant kernel smoothing or 1 for local linear kernel smoothing. The default value is 1. |
blur |
If blur = TRUE, in addition to a conventional 2-D kernel function, a 1-D kernel is used in local smoothing to address the issue of blur. The default value is FALSE. |
plot |
If plot = TRUE, an image of the detected edges is plotted. |
Details
At each pixel, the gradient is estimated by a local kernel
smoothing procedure. Next, the local neighborhood is divided
into two halves along the direction perpendicular to
(\widehat{f}'_{x}
, \widehat{f}'_{y}
). Then the
one-sided local kernel estimates are obtained in the two half
neighborhoods respectively. The pixel is flagged as a step
edge pixel if |\widehat{f}_+ - \widehat{f}_-|>u
, where
u
is the specified threshold value.
Value
A matrix of zeros and ones. Ones represent the detected edge pixels and zeros represent the non-edge pixels.
Author(s)
Yicheng Kang
References
Kang, Y. and Qiu, P. (2014) "Jump Detection in Blurred Regression Surfaces," Technometrics, 56(4), 539 – 550, doi:10.1080/00401706.2013.844732.
See Also
Examples
data(sar)
edges <- stepEdge(image = sar, bandwidth = 4, degree = 0,
thresh = 16)
Parameter Selection in Step Edge Detection
Description
Select the bandwidth and threshold parameters for step edge detection.
Usage
stepEdgeParSel(image, bandwidth, thresh, nboot, degree = 1,
blur = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
thresh |
The threshold value to use in the edge detection criterion. Must be a positive value. |
nboot |
Number of bootstrap samples to use in estimating
|
degree |
An integer equal to 0 for local constant kernel smoothing or 1 for local linear kernel smoothing. The default value is 1. |
blur |
If blur = TRUE, in addition to a conventional 2-D kernel function, a 1-D kernel is used in local smoothing to address the issue of blur. The default value is FALSE. |
Details
A jump-preserving local linear kernel smoothing is applied to
estimate the discontinuous regression surface; Bootstrap
samples are obtained by drawing with replacement from the
residuals and the d_{KQ}
is computed for the detected
edges of the original sample and those of the bootstrap samples.
Value
A list of the selected bandwidth, the selected threshold value
and a matrix of d_{KQ}
values with each entry
corresponding to each combination of bandwidth and threshold.
Author(s)
Yicheng Kang
References
Kang, Y. and Qiu, P. (2014) "Jump Detection in Blurred Regression Surfaces," Technometrics, 56(4), 539 – 550, doi:10.1080/00401706.2013.844732.
See Also
Examples
set.seed(24)
parSel <- stepEdgeParSel(image = sar, bandwidth = 5,
thresh = c(17, 21), nboot = 1)
Stop Sign Image
Description
This file contains the stop sign image. The image has 160x160 pixels. Gray levels are in the range [0, 255]. In the data file, observations are listed as a 160x160 matrix. This image has much blurring involved.
Usage
stopsign
Format
A matrix of 160x160 pixels.
Author(s)
Yicheng Kang
References
Kang, Y. (2020) “Consistent Blind Image Deblurring Using Jump-Preserving Extrapolation”, Journal of Computational and Graphical Statistics, 29(2), 372 – 382, doi:10.1080/10618600.2019.1665536.
Summarize Parameter Selection Results in Edge Detection
Description
Summarize and display some key information about an edge detection parameter selection object.
Usage
## S3 method for class 'Edge_Parameters'
summary(object, ...)
Arguments
object |
An edge detection parameter selection object. |
... |
Further arguments passed to or from other methods. |
Details
Summarize results about an edge detection parameter
selection object. In particular, it shows the d_{KQ}
values based on bootstrap samples for combinations of bandwidth and
threshold values.
Value
A brief display of parameter selection results in edge detection.
Author(s)
Yicheng Kang
References
Kang, Y. and Qiu, P. (2014) "Jump Detection in Blurred Regression Surfaces," Technometrics, 56(4), 539 – 550, doi:10.1080/00401706.2013.844732.
See Also
stepEdgeParSel
, roofEdgeParSel
,
print.Edge_Parameters
Examples
set.seed(24)
parSel <- stepEdgeParSel(image = sar, bandwidth = 5,
thresh = c(17, 21), nboot = 1)
summary(parSel)
Summarize Parameter Selection Results in JPEX Deblurring
Description
Summarize and display key information about a JPEX parameter selection object.
Usage
## S3 method for class 'JPEX_Parameters'
summary(object, ...)
Arguments
object |
A JPEX parameter selection object. |
... |
Further arguments passed to or from other methods. |
Details
Summarize some key information about a JPEX parameter selection object. In particular, it displays the chosen bandwidth and estimated noise level.
Value
A brief display of parameter selection results in JPEX estimation.
Author(s)
Yicheng Kang
References
Kang, Y. (2020) “Consistent Blind Image Deblurring Using Jump-Preserving Extrapolation”, Journal of Computational and Graphical Statistics, 29(2), 372 – 382, doi:10.1080/10618600.2019.1665536.
See Also
cv.jpex
, print.JPEX_Parameters
,
plot.JPEX_Parameters
Examples
parSel <- cv.jpex(stopsign, c(2,3))
summary(parSel)
Summarize Parameter Selection Results in JPLLK Estimation
Description
Summarize and display some key information about a JPLLK parameter selection object.
Usage
## S3 method for class 'JPLLK_Parameters'
summary(object, ...)
Arguments
object |
A JPLLK parameter selection object. |
... |
Further arguments passed to or from other methods. |
Details
Summarize some information about a JPLLK parameter selection object. In particular, it displays the selected bandwidth and estimated noise level.
Value
A brief summary of parameter selection results in JPLLK estimation.
Author(s)
Yicheng Kang
References
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61(3), 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
JPLLK_surface
, print.JPLLK_Parameters
,
plot.JPLLK_Parameters
Examples
fit <- JPLLK_surface(image=sar, bandwidth=c(3, 4))
summary(fit)
Summarize Parameter Selection Results in Surface Estimation
Description
Summarize and display some key information about a clustering-based surface estimation parameter selection object.
Usage
## S3 method for class 'Surface_Cluster_Parameters'
summary(object, ...)
Arguments
object |
A clustering-based surface estimation parameter selection object. |
... |
Further arguments passed to or from other methods. |
Details
Summarize some information about a clustering-based surface estimation parameter selection object. In particular, it displays the selected bandwidth, the estimated noise level, the estimated value of the error density at 0 and the estimated mean of absolute error.
Value
A brief display of parameter selection results in clustering-based estimation.
Author(s)
Yicheng Kang
References
Kang, Y., Mukherjee, P.S. and Qiu, P. (2018) "Efficient Blind Image Deblurring Using Nonparametric Regression and Local Pixel Clustering", Technometrics, 60(4), 522 – 531, doi:10.1080/00401706.2017.1415975.
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61, 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
surfaceCluster_bandwidth
, print.Surface_Cluster_Parameters
,
plot.Surface_Cluster_Parameters
Examples
data(brain)
bandwidth_select <- surfaceCluster_bandwidth(image = brain,
bandwidths = c(3:4), sig.level = .9995, blur = FALSE)
summary(bandwidth_select)
Summarize Parameter Selection Results in 3-Stage Estimation
Description
Summarize and display key information about a 3-stage estimation bandwidth selection object.
Usage
## S3 method for class 'Three_Stage_Parameters'
summary(object, ...)
Arguments
object |
A three-stage estimation bandwidth selection object. |
... |
Further arguments passed to or from other methods. |
Details
Summarize some information about a three-stage estimation bandwidth selection object. In particular, this method prints the cross-validation or modified cross-validation scores and the selected bandwidth.
Value
A brief display of bandwidth selection results in three-stage estimation.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) “Blind Image Deblurring Using Jump Regression Analysis”, Statistica Sinica, 25, 879 – 899, doi:10.5705/ss.2014.054.
See Also
threeStageParSel
, print.Three_Stage_Parameters
,
plot.Three_Stage_Parameters
Examples
## Not run:
step.edges <- stepEdge(peppers, bandwidth = 9, thresh = 17)
roof.edges <- roofEdge(peppers, bandwidth = 6, thresh = 3000,
edge1 = step.edges)
set.seed(24)
# Time consuming
parSel <- threeStageParSel(image = peppers, edge1 = step.edges,
edge2 = roof.edges, bandwidth = 3:4, nboot = 1, blur = TRUE)
summary(parSel)
## End(Not run)
Jump-Preserving Surface Estimation Using Pixel Clustering
Description
Estimate surface using local pixel clustering and kernel smoothing. The bandwidth parameter is specified by the user.
Usage
surfaceCluster(image, bandwidth, sig.level, sigma, phi0,
mean_std_abs, cw=3, blur = FALSE, plot = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
sig.level |
The significance level for the hypothesis test deciding whether to cluster pixels or not. |
sigma |
The noise level (i.e., standard deviation of the error distribution). It is used for computing the asymptotic threshold for residuals, which are defined to be the difference between the local linear kernel smoothing output and the center weighted median filter output. If not specified by the user, a jump-preserving local linear kernel smoothing surface estimation (Qiu 2009) is used to obtain an estimated sigma. |
phi0 |
The density of the standardized error distribution at 0. It is used for computing the asymptotic threshold for residuals, whose definition is given above. If not specified by the user, a jump-preserving local linear kernel smoothing surface estimation (Qiu 2009) is used to obtain an estimated value. |
mean_std_abs |
The mean of absolute value of the standardized error. It is used for computing the asymptotic threshold for residuals, whose definition is given above. If not specified by the user, a jump-preserving local linear kernel smoothing surface estimation (Qiu 2009) is used to obtain an estimated value. |
cw |
The center weight for the center weighted median filter. It must be a positive integer. |
blur |
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. |
plot |
If plot = TRUE, the image of the fitted surface is plotted |
Value
A list of 'estImg', the restored image, 'sigma', the estimated standard deviation of the random error, 'phi0', the estimated density of the error distribution at 0, and 'mean_std_abs', the estimated absolute mean of the error distribution.
Author(s)
Yicheng Kang
References
Kang, Y., Mukherjee, P.S. and Qiu, P. (2018) "Efficient Blind Image Deblurring Using Nonparametric Regression and Local Pixel Clustering", Technometrics, 60(4), 522 – 531, doi:10.1080/00401706.2017.1415975.
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61, 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
Examples
fit <- surfaceCluster(image = brain, bandwidth = 4,
sig.level = .9995, cw = 3, blur = FALSE)
Bandwidth Selection for Clustering-Based Surface Estimation
Description
Select the bandwidth parameter for the function
surfaceCluster
using cross validation. In the
cases when there is no blur involved (i.e., denoising only),
leave-one-out cross validation is used. In the cases when there
is blur involved, a modified cross validation is used.
Usage
surfaceCluster_bandwidth(image, bandwidths, sig.level, sigma,
phi0, mean_std_abs, relwt = 0.5, cw = 3, blur = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidths |
An array of positive integers that specifies the candidate bandwidth parameters. All the array elements must be positive integers because the bandwidth is specified in terms of number of pixels. |
sig.level |
The significance level for the hypothesis test deciding whether to cluster pixels or not. |
sigma |
The noise level (i.e., standard deviation of the error distribution). It is used for computing the asymptotic threshold for residuals, which are defined to be the difference between the local linear kernel smoothing output and the center weighted median filter output. If not specified by the user, a jump-preserving local linear kernel smoothing surface estimation (Qiu 2009) is used to obtain an estimated sigma. |
phi0 |
The density of the standardized error distribution at 0. It is used for computing the asymptotic threshold for residuals, whose definition is given above. If not specified by the user, a jump-preserving local linear kernel smoothing surface estimation (Qiu 2009) is used to obtain an estimated value. |
mean_std_abs |
The mean of absolute value of the standardized error. It is used for computing the asymptotic threshold for residuals, whose definition is given above. If not specified by the user, a jump-preserving local linear kernel smoothing surface estimation (Qiu 2009) is used to obtain an estimated value. |
relwt |
The relative weight assigned to the cross validation score in the continuity region. That is, 1 - relwt is assigned to the cross validation score around the step edges. It is used only when there is blur involved. |
cw |
The center weight for the center weighted median filter. It must be a positive integer. |
blur |
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. |
Value
A list: 'cv_dataframe', a data frame containing the cross validation scores corresponding to each candidate bandwidth, 'bandwidth_hat', the selected bandwidth, 'sigma', the estimated standard deviation of the random error, 'phi0', the estimated density of the error distribution at 0, and 'mean_std_abs', the estimated absolute mean of the error distribution.
Author(s)
Yicheng Kang
References
Kang, Y., Mukherjee, P.S. and Qiu, P. (2018) "Efficient Blind Image Deblurring Using Nonparametric Regression and Local Pixel Clustering", Technometrics, 60(4), 522 – 531, doi:10.1080/00401706.2017.1415975.
Qiu, P. (2009) "Jump-Preserving Surface Reconstruction from Noisy Data", Annals of the Institute of Statistical Mathematics, 61, 715 – 751, doi:10.1007/s10463-007-0166-9.
See Also
Examples
data(brain)
bandwidth_select <- surfaceCluster_bandwidth(image = brain,
bandwidths = c(3:4), sig.level = .9995, blur = FALSE)
Three-Stage Denoising and Deblurring
Description
Estimate jump location curves using local principal component lines. One-sided kernel smoothing is then used for surface estimation. Bandwidth is specified by the user.
Usage
threeStage(image, bandwidth, edge1, edge2,
blur = FALSE, plot = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
A positive integer that specifies the number of pixels to use in the local smoothing. |
edge1 |
A matrix of 0 and 1 representing the detected step edge pixels |
edge2 |
A matrix of 0 and 1 representing the detected roof/valley edge pixels |
blur |
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. |
plot |
If plot = TRUE, the image of the fitted surface is plotted |
Details
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.
Value
The restored image, which is represented by a matrix.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) “Blind Image Deblurring Using Jump Regression Analysis”, Statistica Sinica, 25, 879 – 899, doi:10.5705/ss.2014.054.
See Also
Examples
step.edges <- stepEdge(sar, bandwidth = 4, thresh = 20, degree = 0)
stepEdge1 <- modify2(bandwidth = 4, step.edges)
fit <- threeStage(image = sar, bandwidth = 4, edge1 = stepEdge1,
edge2 = array(0, rep(ncol(sar), 2)))
Parameter Selection in Three-Stage Image Restoration
Description
Select the bandwidth value for the image restoration method
implemented in the function threeStage
Usage
threeStageParSel(image, bandwidth, edge1, edge2, nboot,
blur = FALSE)
Arguments
image |
A square matrix, no missing value allowed. |
bandwidth |
Bandwidth values to be chosen from. Each of these values need to be an positive integer specifying the number of pixels to use in the local smoothing. |
edge1 |
A matrix of 0 and 1 representing the detected step edge pixels. |
edge2 |
A matrix of 0 and 1 representing the detected roof/valley edge pixels. |
nboot |
Required when |
blur |
TRUE if the image contains blur, FALSE otherwise. If TRUE, the hybrid selection method proposed in Qiu and Kang (2015) is used. If FALSE, the leave-one-out cross validation is used. |
Value
A list of the selected bandwidth, and a matrix of cross-validation scores with each entry corresponding to a choice of bandwidth.
Author(s)
Yicheng Kang
References
Qiu, P. and Kang, Y. (2015) “Blind Image Deblurring Using Jump Regression Analysis”, Statistica Sinica, 25, 879 – 899, doi:10.5705/ss.2014.054.
Examples
## Not run:
step.edges <- stepEdge(peppers, bandwidth = 9, thresh = 17)
roof.edges <- roofEdge(peppers, bandwidth = 6, thresh = 3000,
edge1 = step.edges)
set.seed(24)
# Time consuming
parSel <- threeStageParSel(image = peppers, edge1 = step.edges,
edge2 = roof.edges, bandwidth = 3:4, nboot = 1, blur = TRUE)
## End(Not run)