A parallel algorithm is described for computing optical flow from short-range motion. Regularizing optical flow computation leads to a formulation which minimizes matching error and, at the same time, maximizes smoothness of the optical flow. An approximation to the full regularization computation is developed in which corresponding points are found by comparing local patches of the images. Selection among competing matches is performed using a winner-take-all scheme. The algorithm accommodates many different image transformations uniformly, with similar results, from brightness to edges. The optical flow computed from different image transformations, such as edge detection and direct brightness computation, can be simply combined. The algorithm is easily implemented using local operations on a fine-grained computer, and has been implemented on a Connection Machine. Experiments with natural images show that the scheme is effective and robust against noise. The algorithm leads to dense optical flow fields; in addition, information from matching facilitates segmentation.