1. A method for touch detection performed by a touch processor in an optical touch detection system, the method comprising: receiving an image of an illuminated surface comprised in the optical touch detection system, wherein the image is captured by a camera comprised in the optical touch detection system; identifying a set of candidate touch locations in the image, wherein identifying a set of candidate touch locations comprises subtracting a background model from the image to generate a mean-subtracted image, filtering the mean-subtracted image with a filter having zero mean with coefficients of a same sign in a center of the filter surrounded by coefficients of an opposite sign such that a size of a central region corresponds to an expected size of a finger touch, and identifying local extrema in the filtered mean-subtracted image; classifying the candidate touch locations in the set of candidate touch locations to generate a set of validated candidate touch locations, wherein classifying the candidate touch locations comprises using a machine learning classifier to classify each candidate touch location as valid or invalid, wherein the machine learning classifier is trained to classify a candidate touch location based on a combination of features of the candidate touch location; and outputting a set of final touch locations.