# Adjust Image Contrast Using Histogram Equalization

This example shows how to adjust the contrast of a grayscale image using histogram equalization.

Histogram equalization involves transforming the intensity values so that the histogram of the output image approximately matches a specified histogram. By default, the histogram equalization function, `histeq`, tries to match a flat histogram with 64 bins such that the output image has pixel values evenly distributed throughout the range. You can also specify a different target histogram to match a custom contrast.

### Original Image Histogram

Read a grayscale image into the workspace.

`I = imread("pout.tif");`

Display the image and its histogram. The original image has low contrast, with most pixel values in the middle of the intensity range.

```figure subplot(1,3,1) imshow(I) subplot(1,3,2:3) imhist(I)``` ### Adjust Contrast Using Default Equalization

Adjust the contrast using histogram equalization. Use the default behavior of the histogram equalization function, `histeq`. The default target histogram is a flat histogram with 64 bins.

`J = histeq(I);`

Display the contrast-adjusted image and its new histogram.

```figure subplot(1,3,1) imshow(J) subplot(1,3,2:3) imhist(J)``` ### Adjust Contrast, Specifying Number of Bins

Adjust the contrast, specifying a different number of bins. With a small number of bins, there are noticeably fewer gray levels in the contrast-adjusted image.

```nbins = 10; K = histeq(I,nbins);```

Display the contrast-adjusted image and its new histogram.

```figure subplot(1,3,1) imshow(K) subplot(1,3,2:3) imhist(K)``` ### Adjust Contrast, Specifying Target Distribution

Adjust the contrast, specifying a nonflat target distribution. This example demonstrates a linearly decreasing target histogram, which emphasizes small pixel values and causes shadows to appear darker. Display the target histogram.

```target = 256:-4:4; figure bar(4:4:256,target)``` Adjust the histogram of the image to approximately match the target histogram.

`L = histeq(I,target);`

Display the contrast-adjusted image and its new histogram.

```figure subplot(1,3,1) imshow(L) subplot(1,3,2:3) imhist(L)``` 