Package boofcv.alg.flow
Class HornSchunck<T extends ImageBase<T>,D extends ImageBase<D>>
java.lang.Object
boofcv.alg.flow.HornSchunck<T,D>
- Direct Known Subclasses:
HornSchunck_F32
,HornSchunck_U8
This is Horn-Schunck's well known work [1] for dense optical flow estimation. It is based off the following equation Ex*u + Ey*v + Et = 0, where (u,v) is the estimated flow for a single pixel, and (Ex,Ey) is the pixel's gradient and Et is the grave in intensity value. It is assumed that each pixel maintains a constant intensity and that changes in flow are smooth. This implementation is faithful to the original work and does not make any effort to improve its performance using more modern techniques.
[1] Horn, Berthold K., and Brian G. Schunck. "Determining optical flow." 1981 Technical Symposium East. International Society for Optics and Photonics, 1981.
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
HornSchunck
(float alpha, int numIterations, ImageType<D> derivType) Constructor -
Method Summary
Modifier and TypeMethodDescriptionprotected static void
borderAverageFlow
(ImageFlow flow, ImageFlow averageFlow) Computes average flow using an 8-connect neighborhood for the image borderprotected static void
computeBorder
(ImageFlow flow, ImageFlow averageFlow, int x, int y) protected abstract void
computeDerivT
(T image1, T image2, D derivT) protected abstract void
computeDerivX
(T image1, T image2, D derivX) protected abstract void
computeDerivY
(T image1, T image2, D derivY) protected abstract void
Inner function for computing optical flowprotected static ImageFlow.D
protected static void
innerAverageFlow
(ImageFlow flow, ImageFlow averageFlow) Computes average flow using an 8-connect neighborhood for the inner imagevoid
Computes dense optical flow from the first image's gradient and the difference between the second and the first image.void
setNumIterations
(int numIterations) changes the maximum number of iterations
-
Field Details
-
alpha2
protected float alpha2 -
numIterations
protected int numIterations -
averageFlow
-
resetOutput
protected boolean resetOutput -
derivX
-
derivY
-
derivT
-
-
Constructor Details
-
HornSchunck
Constructor- Parameters:
alpha
- Larger values place more importance on flow smoothness consistency over brightness consistency. Try 20numIterations
- Number of iterations. Try 1000
-
-
Method Details
-
setNumIterations
public void setNumIterations(int numIterations) changes the maximum number of iterations- Parameters:
numIterations
- maximum number of iterations
-
process
Computes dense optical flow from the first image's gradient and the difference between the second and the first image.- Parameters:
image1
- First imageimage2
- Second imageoutput
- Found dense optical flow
-
computeDerivX
-
computeDerivY
-
computeDerivT
-
findFlow
Inner function for computing optical flow -
innerAverageFlow
Computes average flow using an 8-connect neighborhood for the inner image -
borderAverageFlow
Computes average flow using an 8-connect neighborhood for the image border -
computeBorder
-
getExtend
-