乐闻世界logo
搜索文章和话题

How to remove shadow from scanned images using OpenCV?

1个答案

1

When using OpenCV to remove shadows from scanned images, the following steps can be employed to achieve this.

1. Preprocessing

First, preprocess the image to reduce noise and improve image quality. Typically, Gaussian blur can be used to smooth the image. For example:

python
import cv2 # Read the image image = cv2.imread('scan.jpg') # Apply Gaussian blur blurred = cv2.GaussianBlur(image, (5, 5), 0)

2. Color Space Conversion

Convert the image from the BGR color space to HSV or LAB color space, as in these color spaces, luminance and color components are separated, which facilitates better identification and processing of shadows.

python
# Convert to HSV color space hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)

3. Separating Luminance Channel

Extract the luminance channel from the HSV or LAB image (in HSV, it's the V channel; in LAB, it's the L channel), as shadows typically affect luminance.

python
# Extract luminance channel v_channel = hsv[:, :, 2]

4. Thresholding

Apply thresholding to the luminance channel using an appropriate threshold to distinguish shadow and non-shadow regions. Adaptive thresholding is recommended for uneven lighting conditions.

python
# Apply threshold thresholded = cv2.adaptiveThreshold(v_channel, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

5. Morphological Operations

Use morphological operations such as opening or closing to refine the mask, removing small shadow regions or disconnected shadows.

python
# Use morphological opening kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11, 11)) morphed = cv2.morphologyEx(thresholded, cv2.MORPH_OPEN, kernel)

6. Applying the Mask

Apply the mask generated in step 5 to extract the content of non-shadow regions.

python
# Apply mask shadow_free = cv2.bitwise_and(image, image, mask=morphed)

7. Post-processing

Perform further color correction or enhancement on the resulting image as needed.

This method effectively removes shadows from scanned images, improving visual quality. It is widely applied in document scanning, image restoration, and related fields.

2024年8月15日 11:47 回复

你的答案