What is the difference between `image normalization`, `contrast stretching` and `histogram equalization`?
I believe that they all do the same task of distributing the frequency of pixel intensities to a bigger range


They do.


  but can these terms be used interchangeably?


no, they can't. because the way they increase the dynamic range of the image diffears.

All this methods do a transformation of the pixel intensity $u$ of and image into a new pixel intensity $v$ $$v = f(u) $$ in order to improve the dynamic range of the image.

for constrast stretching (that as far as I know is a more general case of image normalization) the transformation is a piecewise linear function

$$ f(u) = \begin{cases} 
      \alpha u &amp; 0 \leq u &lt; a \\
      \beta(u - a) + v_a&amp; a \leq u &lt; b \\
      \gamma(u - b) + v_b &amp; b \leq u &lt; L 
   \end{cases}$$

Where L is the total number of gray levels.

On the other hand, Histogram equalization is a more powerful technique for image enhancement that aims to give the histogram of a given image the desired uniform shape. This is achieve by the transformation 
$$v_{aux} = F_u(u) = \sum_{i=0}^u p_u(i) $$ 

$$v = int\left( \frac{v_{aux} - v_{aux_{min}}}{1 - v_{aux_{min}}} (L-1) + 0.5 \right) $$

where $p_u(i) $ is the normalized value of the histogram at the  grey level $i$