AI 大模型之 opencv 图像预处理 降噪 / 增强 / 几何变换 实践指南

AI人工智能阿木 发布于 3 天前 3 次阅读


OpenCV:图像预处理实践指南——降噪、增强与几何变换

在计算机视觉领域,图像预处理是图像分析和处理的基础步骤。它旨在提高图像质量,去除噪声,增强图像特征,为后续的图像识别、目标检测等任务提供更好的数据。OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉库,提供了丰富的图像处理函数。本文将围绕OpenCV,详细介绍图像预处理中的降噪、增强和几何变换技术。

1. 降噪

图像噪声是图像采集过程中不可避免的问题,它会影响图像的质量和后续处理的效果。OpenCV提供了多种降噪算法,包括均值滤波、高斯滤波、中值滤波等。

1.1 均值滤波

均值滤波是一种简单的降噪方法,它将图像中每个像素的值替换为其邻域像素的平均值。

python

import cv2


import numpy as np

读取图像


image = cv2.imread('image.jpg')

应用均值滤波


blurred_image = cv2.blur(image, (5, 5))

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Blurred Image', blurred_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


1.2 高斯滤波

高斯滤波是一种基于高斯分布的加权平均滤波,它对图像中的噪声有较好的抑制效果。

python

应用高斯滤波


blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Gaussian Blurred Image', blurred_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


1.3 中值滤波

中值滤波是一种非线性的滤波方法,它将图像中每个像素的值替换为其邻域像素的中值。

python

应用中值滤波


blurred_image = cv2.medianBlur(image, 5)

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Median Blurred Image', blurred_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


2. 图像增强

图像增强是指通过调整图像的亮度、对比度、饱和度等参数,提高图像的可视性和质量。

2.1 直方图均衡化

直方图均衡化是一种全局的图像增强方法,它通过调整图像的直方图,使图像的像素分布更加均匀。

python

应用直方图均衡化


equalized_image = cv2.equalizeHist(image)

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Equalized Image', equalized_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


2.2 对比度增强

对比度增强是一种局部增强方法,它通过调整图像的局部对比度,使图像的细节更加突出。

python

应用对比度增强


enhanced_image = cv2.addWeighted(image, 1.5, np.zeros(image.shape, image.dtype), 0, 0)

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Enhanced Image', enhanced_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


3. 几何变换

几何变换是指对图像进行平移、旋转、缩放、翻转等操作,以改变图像的几何形状。

3.1 平移

平移是指将图像沿x轴和y轴方向移动。

python

计算平移向量


trans_vector = (50, 50)

应用平移


translated_image = cv2.translate(image, trans_vector)

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Translated Image', translated_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


3.2 旋转

旋转是指将图像绕一个点旋转一定角度。

python

计算旋转矩阵


rotation_matrix = cv2.getRotationMatrix2D((image.shape[1] // 2, image.shape[0] // 2), 45, 1.0)

应用旋转


rotated_image = cv2.warpAffine(image, rotation_matrix, (image.shape[1], image.shape[0]))

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Rotated Image', rotated_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


3.3 缩放

缩放是指将图像按比例放大或缩小。

python

计算缩放比例


scale_factor = 0.5

应用缩放


scaled_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_LINEAR)

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Scaled Image', scaled_image)


cv2.waitKey(0)


cv2.destroyAllWindows()


3.4 翻转

翻转是指将图像沿x轴或y轴翻转。

python

应用水平翻转


flipped_image = cv2.flip(image, 1)

应用垂直翻转


flipped_image_v = cv2.flip(image, 0)

显示结果


cv2.imshow('Original Image', image)


cv2.imshow('Flipped Image (Horizontal)', flipped_image)


cv2.imshow('Flipped Image (Vertical)', flipped_image_v)


cv2.waitKey(0)


cv2.destroyAllWindows()


总结

本文介绍了OpenCV在图像预处理中的应用,包括降噪、增强和几何变换。通过这些技术,我们可以提高图像质量,为后续的图像处理任务提供更好的数据。在实际应用中,可以根据具体需求选择合适的预处理方法,以达到最佳效果。