More detail like PAK-9 asks, and example images with the pattern indicated, would help get better answers. If you update your question with details and data, you're also more likely to get example implementations.
That said, this looks to be a candidate for a wavelet transform (like with pywavelets), which would allow for the stretching and scaling that you need to capture the variations of the pattern. Pre-computed wavelets can be browsed here, or you can roll your own (like the fast 2D CDF 9/7 lifting transform).
You suggested cross-correlation, which might be good for a first pass (see scikit-image template matching for ideas). You might modify this to loop through windows to account for the stretching and scaling, but you'll want to normalize them if you intend to subsequently use a classifier. Also, the relative width and spacing of the peaks seem conserved, which would lend itself to windowed supervised classification by many means, like SVM or Random Forests (scikit-learn has plenty of classifiers and examples for you).