基于 Peter Corke《Robotics, Vision & Control》(原第 11–12 章合并)上一篇:光、颜色与色彩空间下一篇:相机几何与立体视觉配套代码:chap11.ipynb + chap12.ipynb本文示例环境:Python 3.12 + opencv-python + numpy + matplotlib + scipy阅读对象:零基础新手
摘要: 本文将介绍数字图像的表示、基本运算与结构化特征提取,主要涵盖:
- • 图像 = NumPy 数组;直方图、Monadic/Dyadic 运算、滤波与阈值
- • 区域特征:Lab k-means、连通域 Blob
- • 直线(Hough)、点特征(Harris/ORB)、模板匹配
一、图像就是数组
import cv2rgb = cv2.imread("street.png") # BGR, (H,W,3)gray = cv2.cvtColor(rgb, cv2.COLOR_BGR2GRAY)print(rgb[400, 200]) # [row,col]=[y,x]
图1 RGB 与 R/G/B 通道OpenCV 默认 BGR;matplotlib 显示需转 RGB。uint8 运算易溢出,先转 float32。
二、直方图与 Monadic 运算
图3 提亮、Gamma、阈值
三、空间滤波与分割
blur = cv2.GaussianBlur(gray, (15, 15), 3)canny = cv2.Canny(gray, 80, 160)_, otsu = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
图7 绿幕合成
四、区域特征:分割与 Blob
Lab 空间 k-means 比 RGB 更符合感知;连通域给出 面积、包围盒、质心。
图9 连通域与包围盒用途: 按颜色+面积筛选番茄、零件计数、质心抓取。
五、直线与点特征
图13 NCC 模板匹配热力图ZNCC 对线性亮度变化更鲁棒。书中 12.1.4 另介绍 Faster R-CNN / FCN 深度学习检测(需 GPU)。
七、小结
下一篇 回答:3D 点如何投影到像素?两幅图如何求深度?
下一篇:相机几何与立体视觉