Mastering Image Contrast: A Step-by-Step Guide to Enhancing Image

In the previous article, we discussed Histogram Equalization and also implemented it in Python. You can read that article on Histogram Equalization here.

In this part, we are going to look at how to enhance Image contrast, as well as implement it step-by-step using Python and the OpenCV library.

Improving the contrast of an image can improve the visibility of details, which makes it easier to analyze and interpret images.

1 – Understanding Image Contrast

Image contrast refers to the difference between the darkest and lightest areas of the image. High-contrast images have a wide range of intensity values, which makes it easier to distinguish between the different elements of the image. Whereas, low-contrast images have a narrow range of intensity values, which makes it difficult to differentiate between various elements.

2 – Techniques for Enhancing Image Contrast

When it comes to enhancing image contrast, there are several effective techniques available. Let’s explore two commonly used methods:

a. Contrast Enhancement

b. Adaptive Histogram Equalization (CLAHE)

a. Contrast Stretching

Contrast Stretching is a technique that rescales the intensity values of an image to cover the entire area. This technique improves contrast by expanding the strength value to cover the entire range.

Let’s see contrast stretching in Python using the OpenCV library.

Make sure to install the OpenCV library, you can install this using the below command:

pip install opencv-python
import cv2
import numpy as np
import matplotlib.pyplot as plt

# Load an image and convert it into grayscale
image = cv2.imread('dog.jpg', cv2.IMREAD_GRAYSCALE)

# Enhance the contrast using histogram equalization
equalized_image = cv2.equalizeHist(image)

# Display the original and enhanced images
plt.figure(figsize=(12, 8))
plt.subplot(121), plt.imshow(image, cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(equalized_image, cmap = 'gray')
plt.title('Enhanced Contrast'), plt.xticks([]), plt.yticks([])
plt.show()

b. Adaptive Histogram Equalization (CLAHE)

Adaptive histogram equalization (CLAHE) is an advanced technique that improves image contrast by applying histogram equalization to small, overlapping regions of the image. This method can give better results than general histogram equalization, especially in images with varying illumination.

To implement CLAHE using Python and the OpenCV library, you can use the following code:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# Load an image and convert it into grayscale
image = cv2.imread('dog.jpg', cv2.IMREAD_GRAYSCALE)

# Create a CLAHE object
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))

# Apply CLAHE
clahe_image = clahe.apply(image)

# Display the original and CLAHE images
plt.figure(figsize=(15, 8))
plt.subplot(121), plt.imshow(image, cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(clahe_image, cmap = 'gray')
plt.title('CLAHE Image'), plt.xticks([]), plt.yticks([])
plt.show()

Conclusion

Enhancing image contrast is an important step in digital image processing because it can greatly improve the visual quality and appearance of an image. In this blog post, we explored various techniques to increase image contrast, including contrast stretching, and histogram adaptive equalization (CLAHE).

After reading this article and following the steps and code mentioned above you will be able to increase image contrast using Python and the OpenCV library.

in the next article, we’ll also explore how we can perform the same operations using different libraries.

Most Popular

Spread the knowledge
 
  

Leave a Reply

Your email address will not be published. Required fields are marked *