Повышение четкости изображения в Python: различные методы повышения резкости изображений с помощью OpenCV (cv2)

В этой статье блога мы рассмотрим различные методы повышения резкости изображений с помощью популярной библиотеки Python OpenCV (cv2). Повышение резкости изображения повышает его четкость и делает его визуально более привлекательным. Мы рассмотрим несколько методов и предоставим примеры кода для каждого метода. Итак, давайте углубимся и научимся повышать резкость изображений с помощью Python и OpenCV!

Метод 1: использование техники нерезкой маскировки.
Техника нерезкой маскировки — широко используемый метод повышения резкости изображений. Он предполагает создание более резкой версии изображения путем вычитания размытой версии из исходного изображения. Вот как это можно реализовать:

import cv2
import numpy as np
def unsharp_masking(image, sigma=1.0, strength=1.5):
    blurred = cv2.GaussianBlur(image, (0, 0), sigma)
    sharpened = cv2.addWeighted(image, 1 + strength, blurred, -strength, 0)
    return sharpened
# Load the image
image = cv2.imread('image.jpg')
# Apply unsharp masking
sharpened_image = unsharp_masking(image, sigma=3.0, strength=1.5)
# Display the original and sharpened images
cv2.imshow('Original Image', image)
cv2.imshow('Sharpened Image', sharpened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Метод 2: использование фильтра Лапласа
Фильтр Лапласа — еще один эффективный метод повышения резкости изображения. Он вычисляет вторую производную изображения и усиливает высокочастотные компоненты. Вот пример использования фильтра Лапласа:

import cv2
def laplacian_sharpening(image):
    blurred = cv2.GaussianBlur(image, (3, 3), 0)
    sharpened = cv2.addWeighted(image, 1.5, blurred, -0.5, 0)
    return sharpened
# Load the image
image = cv2.imread('image.jpg')
# Apply Laplacian sharpening
sharpened_image = laplacian_sharpening(image)
# Display the original and sharpened images
cv2.imshow('Original Image', image)
cv2.imshow('Sharpened Image', sharpened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Метод 3. Фильтрация верхних частот
Фильтр верхних частот повышает резкость изображения за счет усиления высокочастотных компонентов, которые отвечают за мелкие детали. Вот пример применения высокочастотной фильтрации:

import cv2
import numpy as np
def high_pass_filter(image, kernel_size=3):
    blurred = cv2.GaussianBlur(image, (kernel_size, kernel_size), 0)
    sharpened = cv2.subtract(image, blurred)
    return sharpened
# Load the image
image = cv2.imread('image.jpg')
# Apply high pass filtering
sharpened_image = high_pass_filter(image, kernel_size=5)
# Display the original and sharpened images
cv2.imshow('Original Image', image)
cv2.imshow('Sharpened Image', sharpened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

В этой статье мы рассмотрели три различных метода повышения резкости изображений с помощью OpenCV в Python. Мы узнали о технике нерезкой маскировки, фильтре Лапласа и фильтрации верхних частот. Каждый метод имеет свои сильные стороны и может использоваться в зависимости от конкретных требований к изображению. Применяя эти методы, вы можете повысить четкость и четкость изображений, сделав их визуально более привлекательными.