A method of decoding an optical code (210, 220), comprising: acquiring an image of an optical code; delineating the acquired image into multiple data samples, each of different ones of the multiple data samples corresponding to a sub-region (404, 406, 408, 410, 412, 414, 416, 418) of the acquired image of the optical code (210, 220); detecting a first set of edge transition locations in the multiple data samples using a first set of edge detection parameters; based on the first set of edge transition locations, determining whether the multiple data samples contain promising data, wherein the promising data comprises data that is promising to be decodable; and in response to determining that at least one of the multiple data samples contain promising data: selecting from the multiple data samples, those containing the promising data to obtain a set of promising data; detecting a second set of edge transition locations in the set of promising data using a second set of edge detection parameters, wherein the second set of edge detection parameters are different than the first set of edge detection parameters and the second set of edge transition locations in the set of promising data are determined from the multiple data samples independent of acquiring another image of the optical code (210, 220); and decoding the set of promising data based on the second set of edge transition locations. acquiring an image of an optical code; delineating the acquired image into multiple data samples, each of different ones of the multiple data samples corresponding to a sub-region (404, 406, 408, 410, 412, 414, 416, 418) of the acquired image of the optical code (210, 220); detecting a first set of edge transition locations in the multiple data samples using a first set of edge detection parameters; based on the first set of edge transition locations, determining whether the multiple data samples contain promising data, wherein the promising data comprises data that is promising to be decodable; and in response to determining that at least one of the multiple data samples contain promising data: selecting from the multiple data samples, those containing the promising data to obtain a set of promising data; detecting a second set of edge transition locations in the set of promising data using a second set of edge detection parameters, wherein the second set of edge detection parameters are different than the first set of edge detection parameters and the second set of edge transition locations in the set of promising data are determined from the multiple data samples independent of acquiring another image of the optical code (210, 220); and decoding the set of promising data based on the second set of edge transition locations. selecting from the multiple data samples, those containing the promising data to obtain a set of promising data; detecting a second set of edge transition locations in the set of promising data using a second set of edge detection parameters, wherein the second set of edge detection parameters are different than the first set of edge detection parameters and the second set of edge transition locations in the set of promising data are determined from the multiple data samples independent of acquiring another image of the optical code (210, 220); and decoding the set of promising data based on the second set of edge transition locations.