# 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, but can these terms be used interchangeably?

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 & 0 \leq u < a \\ \beta(u - a) + v_a& a \leq u < b \\ \gamma(u - b) + v_b & b \leq u < 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$