Yeah, it can mess you up pretty badly if you don't get the fundamentals right off the get-go.  This is how I interpret correlation, and it has worked for me for what I do for a living.

Let's start off with a relatively simple example.  Take a look at the following figure (pulled from [dspguide](http://www.dspguide.com/graphics/F_7_13.gif)... this is actually a great online book for knowing the basics of DSP).

![blah][1]

[1]:http://www.dspguide.com/graphics/F_7_13.gif

We have an antenna that transmits a short burst of radio wave energy in some direction. If the propagating wave strikes an object.... like a helicopter in this figure, a small fraction of the energy is reflected back toward a radio receiver.  This receiver is close to the transmitting antenna.

This short burst of radio energy, for the sake of this example, is a small triangular shape.  When the signal is reflected off of the helicopter, and then echoed back to the receiver, this signal will consist of two parts: 

1. A shifted and scaled version of the transmitted pulse, and
2. Random noise, resulting from interfering radio waves, thermal noise in the electronics and other factors.

Loosely speaking, we can actually figure out **how far** the object is by using this concept.   Since radio signals travel roughly at the speed of light, the shift between the transmitted and received pulse is a rough measure of the distance to the object being detected. 

As such, this is our general problem:

> Given a signal of some known shape, what is the best way to determine where (or if) the signal occurs in another signal?

The best way to answer this is **correlation**.

There are two different paradigms for computing correlation.  The first one is called **auto-correlation**, which is what this system is doing.  We essentially are comparing the signal we have received with shifted versions of itself.  Take a look at what we have received and what was transmitted.  We take what was received, and time shift this over by different time values.  We then do a comparison with each of these signals and the received result.  Whichever gives us the **highest** value will denote how far away the helicopter is.

The second one is called **cross-correlation**, where instead of using shifted versions of the transmitted signal, you have another signal that you want to compare to.

The amplitude of each sample in the cross-correlation signal is a measure of how much the received signal **resembles** the target signal, at that location. This means that a peak will occur in the cross-correlation signal for every target signal that is present in the received signal. In other words, the value of the cross-correlation is maximized when the target signal is aligned with the same features in the received signal.

If there is noise on the received signal, there will also be noise on the cross-correlation signal. It is an unavoidable fact that random noise looks a certain amount like any target signal you can choose. The noise on the cross-correlation signal is simply measuring this similarity. Except for this noise, the peak generated in the cross-correlation signal is symmetrical between its left and right. This is true even if the target signal isn't symmetrical.

A good thing to remember is that the cross-correlation is trying to detect the target signal, not recreate it. There is no reason to expect that the peak will even look like the target signal.  Correlation is the **optimal** technique for detecting a known waveform in random noise. To be perfectly correct, it is only optimal for random white noise. Using correlation to detect a known waveform is frequently called **matched filtering**.

---

`tl;dr` - Correlation is a measure of how much one signal **resembles** another.  The signal can be images, features, edges, etc.  It is simply a measure of resemblance between one signal and another.