Mastering Image Contrast: A Step-by-Step Guide to Enhancing Image
Naveen
- 0
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.
![](https://www.nomidl.com/wp-content/uploads/2023/06/enn.png)
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()
![](https://www.nomidl.com/wp-content/uploads/2023/06/enhann.png)
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()
![](https://www.nomidl.com/wp-content/uploads/2023/06/clahe-1024x471.png)
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.