图像灰度化
灰度化是将彩色图像转换为灰度图像的过程,通常通过加权平均法或最大值法实现。OpenCV提供了cvtColor函数实现这一转换。
import cv2
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
加权平均法公式: $Gray = 0.299 \times R + 0.587 \times G + 0.114 \times B$
图像二值化
二值化将灰度图像转换为黑白图像,通过设定阈值将像素分为两类。OpenCV提供多种二值化方法,最常用的是全局阈值法。
_, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
自适应阈值二值化:
binary_img = cv2.adaptiveThreshold(gray_img, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
仿射变换
仿射变换是线性变换加平移变换,保持图像中直线的平行性。需要定义变换矩阵,通常通过三个点的映射关系确定。
rows, cols = img.shape[:2]
pts1 = np.float32([[50,50], [200,50], [50,200]])
pts2 = np.float32([[10,100], [200,50], [100,250]])
M = cv2.getAffineTransform(pts1, pts2)
dst = cv2.warpAffine(img, M, (cols,rows))
旋转加缩放的仿射变换:
M = cv2.getRotationMatrix2D((cols/2,rows/2), 45, 0.5)
dst = cv2.warpAffine(img, M, (cols,rows))
颜色空间转换
除了灰度化,OpenCV支持多种颜色空间转换,如HSV、LAB等。HSV空间对光照变化更鲁棒。
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lab_img = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
提取特定颜色范围(HSV示例):
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
mask = cv2.inRange(hsv_img, lower_blue, upper_blue)
直方图均衡化
提高图像对比度的方法,特别适用于灰度图像。OpenCV提供equalizeHist函数实现。
equ = cv2.equalizeHist(gray_img)
CLAHE(限制对比度自适应直方图均衡化):
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(gray_img)
2626

被折叠的 条评论
为什么被折叠?



