How to Enhance Images Using Python

Image enhancement is one of the important steps in number of applications, including computer vision and image processing. It will help you to improve the quality of an image by adjusting its brightness, contrast and sharpness. Python, a versatile programming language, that provides a number of libraries to perform image enhancement tasks. In this article, we will be implementing it using libraries like OpenCV and Pillow.

How to Enhance Images Using Python

1 – Getting Started

So, before we start implementing the code, make sure to have Python installed on your system. You can download the latest version of Python from the official website: https://www.python.org/downloads/

Next, install the required libraries using pip:

pip install opencv-python
pip install pillow

2 – Enhancing Images with OpenCV

OpenCV is a powerful library for computer vision and image processing. It provides various functions to manipulate and enhance images. Let’s implement few of these functions to improve image quality.

a – Adjusting Brightness and Contrast

To adjust the brightness and contrast of an image, we can use the cv2.addWeighted() function. This function takes the below parameters:

  • src1: The first source image.
  • alpha: The weight of the first source image.
  • src2: The second source image.
  • beta: The weight of the second source image.
  • gamma: A scalar added to each sum

Let’s see an example of how to use this function:

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

def adjust_brightness_contrast(image, alpha, beta):
    return cv2.addWeighted(image, alpha, image, 0, beta)

image = cv2.imread('dog.jpg')
enhanced_image = adjust_brightness_contrast(image, 1.2, 30)
original_and_enhanced_image = np.hstack((image, enhanced_image))

plt.figure(figsize = [30, 30])
plt.axis('off')
plt.imshow(original_and_enhanced_image [:,:,::-1])

After executing above code, you will get the following output:

In this example, we increase the brightness by 30 and the contrast by 1.2.

b. Sharpening Images

If we want to sharpen an image, we can use the cv2.filter2D() function, which applies a linear filter to the image. We will use a sharpening kernel to enhance the image details.

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

def sharpen_image(image):
    kernel = np.array([[-1, -1, -1],
                       [-1, 9, -1],
                       [-1, -1, -1]])
    return cv2.filter2D(image, -1, kernel)

image = cv2.imread('dog.jpg')
sharpened_image = sharpen_image(image)

original_and_sharpened_image = np.hstack((image, sharpened_image))

plt.figure(figsize = [30, 30])
plt.axis('off')
plt.imshow(original_and_sharpened_image[:,:,::-1])

After executing above code, you will get following output:

3 – Enhancing Image with Pillow

Pillow (Python Imaging Library) is another popular library for image processing in Python. It provides a user-friendly interface to work with images and offers various functions to enhance them.

a. Adjusting Brightness

If we want to adjust the brightness of our image, we can use the ImageEnhance.Brightness class from the PIL.ImageEnhance module. This class takes an image as input and provides an enhance() method to adjust the brightness.

from PIL import Image, ImageEnhance
import numpy as np
import matplotlib.pyplot as plt

def adjust_brightness(image, factor):
    enhancer = ImageEnhance.Brightness(image)
    return enhancer.enhance(factor)

image = Image.open('dog.jpg')
enhanced_image = adjust_brightness(image, 1.5)

original_and_enhanced_image = np.hstack((image, enhanced_image))

plt.figure(figsize = [30, 30])
plt.axis('off')
plt.imshow(original_and_enhanced_image, cmap = 'gray')

In this example, we increase the brightness by a factor of 1.5.

After executing above code, you will get following output:

b. Adjusting Contrast

To adjust the contrast of an image, we can use the ImageEnhance.Contrast class from the PIL.ImageEnhance module. This class takes an image as input and provides an enhance() method to adjust the contrast.

from PIL import Image, ImageEnhance
import numpy as np
import matplotlib.pyplot as plt

def adjust_contrast(image, factor):
    enhancer = ImageEnhance.Contrast(image)
    return enhancer.enhance(factor)

image = Image.open('dog.jpg')
enhanced_contrast = adjust_contrast(image, 1.5)

original_and_enhanced_contrast = np.hstack((image, enhanced_contrast))

plt.figure(figsize = [30, 30])
plt.axis('off')
plt.imshow(original_and_enhanced_contrast, cmap = 'gray')

In this example, we increase the contrast by a factor of 1.5.

After executing above code, you will get following output:

Conclusion

In this article, we discussed how to enhance images using Python with the help of OpenCV and Pillow libraries. We covered various techniques, including adjusting brightness, contrast, and sharpening images. These libraries offer a wide range of functions to manipulate and enhance images, making Python a powerful language for image processing tasks.

I hope you liked this article, if you have any question let me know.

Popular Posts

Author

  • Naveen Pandey Data Scientist Machine Learning Engineer

    Naveen Pandey has more than 2 years of experience in data science and machine learning. He is an experienced Machine Learning Engineer with a strong background in data analysis, natural language processing, and machine learning. Holding a Bachelor of Science in Information Technology from Sikkim Manipal University, he excels in leveraging cutting-edge technologies such as Large Language Models (LLMs), TensorFlow, PyTorch, and Hugging Face to develop innovative solutions.

    View all posts
Spread the knowledge
 
  

Leave a Reply

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