一、概述

1.计算机视觉的定义

计算机视觉(Computer Vision)是一个跨学科的研究领域,主要涉及如何使计算机能够通过处理和理解数字图像或视频来自动进行有意义的分析和决策。其目标是使计算机能够从视觉数据中获取高层次的理解,类似于人类的视觉处理能力。

具体来说,计算机视觉包括以下几个主要任务:

  1. 图像分类:识别图像中主要的物体或场景。例如,给定一张图片,确定它是猫还是狗。
  2. 目标检测:在图像中定位和识别多个目标。例如,在街景图像中识别并标注汽车、行人和交通标志的位置。
  3. 图像分割:将图像分割成不同的区域或对象。例如,将一张医疗影像分割成不同的器官和组织。
  4. 姿态估计:识别和分析人体或物体的姿态。例如,识别人类骨骼的关键点位置以估计其动作。
  5. 场景理解:从图像中理解更复杂的场景信息,包括物体之间的关系和背景环境。
  6. 三维重建:从二维图像中恢复三维结构信息。例如,从多张二维图片生成一个三维模型。
  7. 动作识别:从视频中识别和分类动作。例如,识别视频中人物是否在走路、跑步或跳舞。

计算机视觉技术在许多领域有广泛的应用,包括但不限于自动驾驶、医疗影像分析、人脸识别、监控系统、增强现实和虚拟现实、机器人技术以及智能制造。 

为了实现这些目标,计算机视觉结合了多种技术和方法,包括但不限于图像处理、模式识别、机器学习和深度学习等。近年来,随着深度学习尤其是卷积神经网络(CNN)的发展,计算机视觉技术取得了显著的进展,显著提高了在图像和视频分析任务中的性能。 

2.计算机视觉的应用/任务

计算机视觉在许多领域有广泛的应用,涵盖了从日常生活到高科技工业的各个方面。以下是一些主要的应用和任务:

1. 自动驾驶
  • 目标检测和识别:识别道路上的车辆、行人、交通标志和其他障碍物。
  • 车道检测:检测道路上的车道线,帮助车辆保持在正确的车道内。
  • 路径规划:根据周围环境的变化规划行驶路线。
2. 医疗影像分析
  • 图像分割:分割医学影像中的不同器官和病变区域,如肿瘤检测。
  • 诊断辅助:辅助医生对X光片、CT扫描、MRI影像等进行诊断。
  • 手术导航:在手术过程中提供实时的影像指导。
3. 安防监控
  • 人脸识别:用于身份验证和监控,识别人脸并匹配数据库中的身份信息。
  • 行为分析:检测和分析人群行为,识别潜在的异常或危险行为。
  • 入侵检测:检测并报警未授权的进入。
4. 零售和电子商务
  • 产品识别:识别商品并进行分类,用于库存管理和推荐系统。
  • 虚拟试穿:通过增强现实技术,顾客可以虚拟试穿衣服或配饰。
  • 客户分析:通过摄像头分析顾客的行为和购物模式,以优化店铺布局和营销策略。
5. 工业自动化
  • 质量检测:检测生产线上产品的缺陷,如裂缝、瑕疵和尺寸偏差。
  • 机器人引导:为工业机器人提供视觉导航,执行复杂的组装和操作任务。
  • 自动化监控:监控生产过程,检测异常情况并及时报警。
6. 智能家居
  • 人脸识别:用于智能门锁、安防系统和用户个性化服务。
  • 姿态识别:识别用户的姿态和动作,用于控制家电设备或提供健康监测。
  • 环境监测:通过摄像头监测家居环境,检测火灾、烟雾或水泄漏等情况。
7. 文档处理
  • 光学字符识别(OCR):将扫描的文档或图片中的文字转换为可编辑的文本。
  • 表单识别和处理:自动识别和提取表单中的信息,用于数据录入和管理。
  • 手写体识别:识别和转换手写文字为数字文本。
8. 娱乐和媒体
  • 视频编辑:自动标记和剪辑视频中的精彩片段,生成视频摘要。
  • 特效制作:在电影和电视制作中添加视觉特效和动画。
  • 增强现实(AR)和虚拟现实(VR):为游戏和娱乐应用提供沉浸式体验。
9. 农业和环境监测
  • 作物监测:通过无人机和卫星图像监测农作物的生长情况和健康状态。
  • 害虫检测:识别农作物上的病害和害虫,提供早期预警和防治措施。
  • 环境保护:监测森林、河流和海洋的生态环境,检测污染和自然灾害。

 这些应用展示了计算机视觉在不同领域的广泛潜力和实际价值。随着技术的不断进步,计算机视觉的应用范围和深度将会进一步扩展。

 

二、图像处理基本操作

1.图像存储在矩阵中,其中每个元素代表像素值

 

2.图像的表示:二值图像,灰度图,RGB图

 

灰度图如何量化

灰度图像的量化是指将连续的灰度值(从黑到白的所有中间灰度级别)离散化为有限的灰度级别。这一过程通常涉及以下几个步骤:

1. 原始灰度图像的灰度范围

原始灰度图像的每个像素值通常在一个特定的范围内。例如,对于8位灰度图像,灰度值在0到255之间,其中0表示黑色,255表示白色,介于0和255之间的值表示不同的灰度级别。

2. 确定量化级别

量化级别决定了将灰度值离散化为多少个灰度级。例如,可以选择将灰度值量化为4个、8个、16个等不同数量的级别。假设我们选择将灰度值量化为 ( L ) 个级别。

3. 计算量化间隔

量化间隔(bin size)是将灰度值范围划分为 ( L ) 个级别的间隔。对于一个8位灰度图像,量化间隔计算公式为:
[\Delta = \frac{256}{L}]
其中 (\Delta) 是每个量化级别的宽度。

4. 应用量化
5.例子

6.总结

灰度图像量化是将连续的灰度值离散化为有限的灰度级别的过程。通过选择适当的量化级别,可以在减少数据量的同时保留图像的主要视觉信息。量化后的图像在存储、传输和处理上更为高效。

6bit 量化 量化值是多少

将灰度图像量化为6位(6-bit)意味着我们将灰度值分成 ( 2^6 = 64 ) 个量化级别。这意味着原始的8位灰度值(范围从0到255)将被离散化为64个级别。下面是具体的量化过程:

1. 确定量化间隔

对于6位量化,量化级别为64:

[ \Delta = \frac{256}{64} = 4 ]

2. 计算量化值

每个原始灰度值将被映射到一个新的量化值。量化值可以通过以下公式计算:

[ Q = \left\lfloor \frac{I}{\Delta} \right\rfloor ]
其中 ( I ) 是原始灰度值, (\Delta ) 是量化间隔。

量化后的灰度值可以通过以下公式确定:

[ Q_{\text{mapped}} = Q \cdot \Delta + \frac{\Delta}{2} ]

例子

为了更好地理解这个过程,让我们通过一些具体的灰度值示例来说明:

总结

6位量化将灰度图像分为64个级别,每个级别对应的量化间隔为4。通过将原始灰度值除以量化间隔并取整,然后映射回具体的灰度值,可以得到量化后的灰度图像。这个过程减少了灰度级别,从而简化了图像数据。

3.常见颜色空间

HSV

HSV(Hue, Saturation, Value)是色彩空间的一种,它将颜色表示为色调(Hue)、饱和度(Saturation)和明度(Value)。这种表示方法与人类对颜色的感知更接近,因此在图像处理和计算机视觉中被广泛使用。下面是对HSV色彩空间的详细解释:

1. 色调 (Hue)
  • 色调表示颜色的类型,范围通常在0到360度。
  • 每个角度对应一种颜色:0度为红色,120度为绿色,240度为蓝色。
  • 色调环绕一圈形成一个色环。
2. 饱和度 (Saturation)
  • 饱和度表示颜色的纯度或灰度成分的多少。
  • 范围从0到1(或0%到100%)。
  • 0表示完全没有颜色(灰色),1表示完全纯色。
3. 明度 (Value)
  • 明度表示颜色的亮度或强度。
  • 范围从0到1(或0%到100%)。
  • 0表示最暗(黑色),1表示最亮(白色或最亮的颜色)。
4.优势
  • 直观:HSV色彩空间更符合人类对颜色的感知方式。
  • 灵活:在进行颜色筛选和调整时,HSV比RGB更方便。
5.应用场景
  • 图像分割:通过色调筛选特定颜色。
  • 颜色校正:调整饱和度和明度以改善图像质量。
  • 增强现实:在实时视频处理中使用色调分割对象。

HSV色彩空间在图像处理和计算机视觉中具有广泛的应用和实用性,尤其适合需要处理和分析颜色的任务。

YUV

YUV是一种颜色表示方法,广泛应用于视频压缩、图像处理和传输中。它将颜色信息分解为亮度(Y)和色度(U和V)分量。与RGB色彩空间不同,YUV分离了图像的亮度和色度信息,便于在图像处理和视频压缩中进行高效处理。

1. 分量介绍
  • Y(Luminance):亮度分量,表示图像的明暗程度。这个分量包含了图像的灰度信息。
  • U(Chrominance - Blue Projection):色度分量之一,表示蓝色的投影。
  • V(Chrominance - Red Projection):色度分量之一,表示红色的投影。
2. 优势
  • 分离亮度和色度:YUV分离了亮度和色度信息,使得在视频压缩和传输中可以优先保留更多的亮度信息,而降低色度信息的精度,从而减少数据量。
  • 兼容性:YUV色彩空间与黑白电视信号兼容,确保在彩色电视上播放时可以兼容黑白电视。
3. 应用场景
  • 视频压缩:许多视频压缩标准(如MPEG、H.264)都使用YUV色彩空间,因为它能更好地压缩视频数据。
  • 图像处理:在图像处理中,可以独立处理亮度和色度分量,提高处理效率和效果。
  • 电视广播:YUV色彩空间在模拟和数字电视广播中被广泛使用。
4.总结

YUV色彩空间通过将颜色分解为亮度和色度分量,提供了一种高效的颜色表示方法。它在视频压缩、图像处理和传输中具有广泛的应用,尤其适用于需要处理和优化亮度和色度信息的场景。

4.图像平滑:均值滤波、中值滤波、低通滤波(允许低频分量通过,高平分量滤除)

图像平滑是一种区域增强的算法,主要目的是通过减少图像中的高频噪声来改善图像的质量。能够减少甚至消除噪声并保持高频边缘信息是图像平滑算法追求的目标。

 均值滤波(Mean Filtering) 

均值滤波(Mean Filtering),也称为平均滤波,是一种简单且常用的图像平滑技术,用于减少图像中的噪声。其基本思想是通过用局部邻域内像素的平均值替换中心像素值来达到平滑效果。这种方法在平滑图像的同时,可以有效地保留图像的主要特征。 

1. 基本原理

2.数学表示

3. Python 示例

使用Python和OpenCV实现均值滤波:

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
# 读取灰度图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
 
# 应用均值滤波
kernel_size = 5
filtered_image = cv2.blur(image, (kernel_size, kernel_size))
 
# 显示原始图像和均值滤波后的图像
plt.figure(figsize=(10, 5))
 
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(image, cmap='gray')
plt.axis('off')
 
plt.subplot(1, 2, 2)
plt.title(f'Mean Filtered Image (Kernel Size: {kernel_size}x{kernel_size})')
plt.imshow(filtered_image, cmap='gray')
plt.axis('off')
 
plt.show()
4. 优点和缺点

优点:

  • 简单易实现:均值滤波算法简单,计算开销低。
  • 平滑效果好:能够有效地去除图像中的高频噪声。

缺点:

  • 模糊边缘:由于计算均值时考虑了周围所有像素,图像的边缘和细节部分可能会被模糊。
  • 不适用于脉冲噪声:对于含有脉冲噪声的图像,均值滤波可能无法有效去噪,反而可能扩散噪声。
5. 应用场景
  • 噪声去除:均值滤波广泛用于图像预处理,去除随机噪声。
  • 图像平滑:在图像处理中,均值滤波常用于平滑图像,以减少图像中的细节或进行图像分割前的预处理。

均值滤波作为一种基础的图像处理技术,在图像预处理和噪声去除中具有广泛的应用。然而,对于某些应用场景,如边缘保留和去除脉冲噪声,可能需要使用更高级的滤波技术,如中值滤波或双边滤波。

中值滤波(Median Filtering)

中值滤波(Median Filtering)是一种常用的非线性滤波技术,用于去除图像中的噪声,同时保留图像的边缘信息。它在处理椒盐噪声(salt-and-pepper noise)方面特别有效。中值滤波的基本思想是用邻域内像素值的中值替换中心像素值,从而减少噪声的影响。

1. 基本原理

3. Python 示例

使用Python和OpenCV实现中值滤波:

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
# 读取灰度图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
 
# 应用中值滤波
kernel_size = 5
filtered_image = cv2.medianBlur(image, kernel_size)
 
# 显示原始图像和中值滤波后的图像
plt.figure(figsize=(10, 5))
 
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(image, cmap='gray')
plt.axis('off')
 
plt.subplot(1, 2, 2)
plt.title(f'Median Filtered Image (Kernel Size: {kernel_size}x{kernel_size})')
plt.imshow(filtered_image, cmap='gray')
plt.axis('off')
 
plt.show()
4. 优点和缺点

优点:

  • 保留边缘:中值滤波在去噪的同时,能够很好地保留图像的边缘信息。
  • 有效去除脉冲噪声:特别适用于去除椒盐噪声和其他类似的脉冲噪声。

缺点:

  • 计算复杂度较高:由于需要对窗口内的像素进行排序,中值滤波的计算复杂度高于均值滤波。
  • 不适用于高斯噪声:对于高斯噪声,中值滤波的效果可能不如高斯滤波
5. 应用场景
  • 噪声去除:中值滤波广泛用于去除图像中的椒盐噪声和其他类似的脉冲噪声。
  • 图像预处理:在图像分割、边缘检测等图像处理任务中,中值滤波常用于平滑图像,同时保留重要的边缘信息。

中值滤波作为一种非线性滤波技术,在去除脉冲噪声和保留边缘信息方面具有显著优势。虽然计算复杂度较高,但在许多实际应用中,中值滤波仍然是非常有效的选择。

低通滤波器(Low-Pass Filter)

低通滤波器(Low-Pass Filter)是一种允许低频信号通过并阻止高频信号的滤波器。它在图像处理中的主要作用是平滑图像,减少图像中的高频噪声,同时保留图像中的低频信息。低通滤波器在边缘检测、图像降噪和图像重采样等领域中有广泛的应用。

1. 低通滤波的基本原理

在图像处理中,低通滤波的基本思想是将图像的高频成分(如噪声、细节等)进行衰减,而保留图像的低频成分(如整体的光滑区域)。这可以通过空间域或频域来实现。

空间域中的低通滤波

在空间域中,低通滤波通常通过卷积操作实现,常用的低通滤波器包括均值滤波器和高斯滤波器。

  • 均值滤波器(Mean Filter):使用邻域内像素的平均值替代中心像素值。
  • 高斯滤波器(Gaussian Filter):使用加权平均值替代中心像素值,其中权重由高斯分布决定。

频域中的低通滤波

2. 数学表示

3. Python 示例

以下是使用Python和OpenCV实现低通滤波的示例:

使用均值滤波器(空间域)
import cv2
import numpy as np
import matplotlib.pyplot as plt
 
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
 
# 应用均值滤波
kernel_size = 5
mean_filtered_image = cv2.blur(image, (kernel_size, kernel_size))
 
# 显示原始图像和均值滤波后的图像
plt.figure(figsize=(10, 5))
 
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(image, cmap='gray')
plt.axis('off')
 
plt.subplot(1, 2, 2)
plt.title(f'Mean Filtered Image (Kernel Size: {kernel_size}x{kernel_size})')
plt.imshow(mean_filtered_image, cmap='gray')
plt.axis('off')
 
plt.show()

使用高斯滤波器(空间域) 

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
 
# 应用高斯滤波
kernel_size = 5
sigma = 1.0
gaussian_filtered_image = cv2.GaussianBlur(image, (kernel_size, kernel_size), sigma)
 
# 显示原始图像和高斯滤波后的图像
plt.figure(figsize=(10, 5))
 
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(image, cmap='gray')
plt.axis('off')
 
plt.subplot(1, 2, 2)
plt.title(f'Gaussian Filtered Image (Kernel Size: {kernel_size}x{kernel_size}, Sigma: {sigma})')
plt.imshow(gaussian_filtered_image, cmap='gray')
plt.axis('off')
 
plt.show()

使用低通滤波器(频域) 

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
 
# 进行傅里叶变换
dft = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
 
# 创建低通滤波器
rows, cols = image.shape
crow, ccol = rows // 2 , cols // 2
mask = np.zeros((rows, cols, 2), np.uint8)
r = 30  # 低通滤波器的半径
center = [crow, ccol]
x, y = np.ogrid[:rows, :cols]
mask_area = (x - center[0])**2 + (y - center[1])**2 <= r*r
mask[mask_area] = 1
 
# 应用滤波器并进行逆傅里叶变换
fshift = dft_shift * mask
f_ishift = np.fft.ifftshift(fshift)
img_back = cv2.idft(f_ishift)
img_back = cv2.magnitude(img_back[:, :, 0], img_back[:, :, 1])
 
# 显示原始图像和低通滤波后的图像
plt.figure(figsize=(10, 5))
 
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(image, cmap='gray')
plt.axis('off')
 
plt.subplot(1, 2, 2)
plt.title('Low-Pass Filtered Image (Frequency Domain)')
plt.imshow(img_back, cmap='gray')
plt.axis('off')
 
plt.show()
4. 优点和缺点

优点:

  • 减少噪声:有效去除图像中的高频噪声。
  • 平滑图像:使图像变得更加平滑,适合在图像分割和特征提取之前使用

缺点:

  • 模糊细节:会模糊图像中的细节和边缘。
  • 不适用于所有噪声类型:对于某些类型的噪声(如低频噪声),效果不佳。
5. 应用场景
  • 图像降噪:在去除图像中的随机噪声时使用。
  • 图像平滑:在图像分割、边缘检测等处理之前对图像进行平滑处理。
  • 信号处理:在音频和通信信号处理中,用于滤除高频干扰信号。

低通滤波器作为一种基本的图像处理工具,在去除噪声和平滑图像方面具有广泛的应用。然而,在使用时需要注意它可能带来的图像模糊问题,并根据具体应用选择合适的滤波器和参数。 

5.图像锐化:高通滤波(加强图像的边缘)

高通是图像锐化 低通图像平滑

• 在图像的判读或识别中常需要突出边缘和轮廓信息,而图像锐化处理的目的是加

强图像中景物的边缘和轮廓,使模糊图像变得更清晰。

• 图像模糊的可能是因为图像受到平均或积分运算,因此对图像采用逆运算。例

如对连续图像微分或对离散图像差分运算,即可使模糊图像的质量得到改善。

• 从频率域角度看,图像的模糊是因为高频分量受到衰减,所以采用合适的高通

滤波器也可以使图像的清晰度增加

未完待续 ...

如果你真的想学习人工智能,请不要去网上找那些零零碎碎的教程,真的很难学懂!你可以根据我这个学习路线和系统资料,制定一套学习计划,只要你肯花时间沉下心去学习,它们一定能帮到你!

这里也给大家准备了人工智能各个方向的资料,大家可以VX扫码找我领取哈~

更多推荐