1. A computer-implemented method for an optimal stacking procedure to remove noise and enhance signals in 2D or 3D seismic images, comprising: (a) obtaining two or more migrated seismic shot images to be stacked to generate a subsurface image; (b) calculating dip information of seismic events at each image point in each seismic shot image, said dip information comprising dip for a 2-D image or dip and azimuth for a 3-D image; (c) estimating dominant dips of seismic events at each image point, using the calculated dip information; (d) extracting a dominant event at each image point from each seismic shot image; and (e) stacking the extracted event from (d) at each image point from each seismic shot image; wherein at least (b), (d) and (e) are performed using a computer.