Python计算机视觉编程 笔记

Python计算机视觉编程

目录

  • 1 基本的图像操作和处理
  • 2 局部图像描述子
  • 3 图像到图像的映射
  • 4 照相机模型与增强现实
  • 5 多视图几何
  • 6 图像聚类
  • 7 图像搜索
  • 8 图像内容分类
  • 9 图像分割
  • 10 OpenCV
  • 11 附录A 安装软件包
  • 12 附录B 图像集

基本的图像操作和处理

  1. PIL
    1. 转化成灰度:g = Image.open('a.jpg').convert('L');
    2. 转换格式:直接save(),指定不同的文件后缀即可
  2. Matplotlib
    1. plot(x,y,'go-'); title(...); ... show();
      1. 3字符的style编码:颜色-标记-线型
  3. 直方图均衡化
    1. imhist, bins = histogram(im.flatten(), nbr_bins=256, normed=True);
    2. cdf = imhist.cumsum();
    3. cdf = 255*cdf/cdf[-1] #归一化
    4. im2 = interp(im.flatten(), bins[:-1], cdf)
    5. return im2.reshape(im.shape), cdf
  4. PCA
    M = dot(X, X.T)
    e, EV = linalg.eigh(M)
    tmp = dot(X.T, EV)
    V = tmp[::-1]
    S = sqrt(e)[::-1]
    for i in range(V.shape[1]): V[:,1] /= S
  5. 使用pickle模块
    1. f = open('f.pkl', 'wb')
    2. pickle.dump(obj, f)
  6. SciPy
    • im2 = filters.gaussian_filter(im)
    • for in [0,1,2]: im2[:,:,i] = filters.gaussian_filter(im[:,:,i],5)
    1. 形态学
      1. from scipy.ndimage import measurements, morphology
      2. labels, n_objects = measurements.label(im)
      3. 使用开操作分开对象:im2 = morphology.binary_opening(im, ones((9,5)), iterations=2)
    2. 读写Matlab .mat文件:scipy.io.loadmat
    3. ROF模型去噪(看上去效果不错嘛)
      1. min_U ||I-U||^2 + 2λJ(U)

局部图像描述子

  1. Harris角点检测
    1. 寻找图像间的对应点
      1. 兴趣点描述子
  2. SIFT
    1. VLFeat工具包?(k,作者甚至没有提供SIFT的Python实现代码!)
  3. 匹配地理标记图像
    1. p52 Pydot使用Pyparsing和GraphViz

图像到图像的映射

  1. 单应性变换
    1. 直接线性变换 DLT
    2. 仿射变换
  2. 图像扭曲
    1. homography.Haffine_from_points:返回给定点对的最优仿射变换
    2. 分段仿射扭曲
      1. 三角化:matplotlib.delaunay.delaunay(x,y)
    3. 图像配准(图像对眼睛和嘴的坐标进行了标记!)
      1. a,b,tx,ty = linalg.lstsq(A,y)[0] #计算最小化||Ax-y||的最小二乘解
  3. 创建全景图
    1. RANSAC(随机一致性采样)
    2. 稳健的单应性矩阵估计
    3. 拼接图像(哦~!)

照相机模型与增强现实

  1. 针孔照相机模型
    1. 照相机矩阵:P=K[R|t]
      1. 其中,R是旋转矩阵,t是中心位置的平移向量,内标定K描述投影性质
      2. K = [af, s, cx; 0, f, cy; 0, 0, 1], f焦距,s倾斜参数
      3. 简化为 K = [f, 0, cx; 0, f, cy; 0, 0, 1], “唯一的未知变量是焦距f”
    2. 恢复K,R,t;RQ因子分解
    3. 计算照相机中心
      1. 给定P,可以计算中心C,满足:PC=0, C=-R^T t
    4. 照相机标定(求K)
      1. 标准方法:拍摄多幅棋盘图像... => 和图像分辨率有关?
  2. 以平面和标记物进行姿态估计*
  3. 增强现实
    1. PyGame和PyOpenGL
    2. 从照相机矩阵到OpenGL格式*
    3. 放置虚拟物体
    4. 载入模型(ObjFileLoader)

多视图几何

  1. ?外极几何
    1. 计算F:8点法
    2. 外极点和外极线
  2. 照相机和三维结构的计算
    1. ?三角剖分
      1. 给定照相机的参数模型,可恢复出点的三维位置
    2. 由三维点计算照相机矩阵
    3. 由基础矩阵计算照相机矩阵(双视图的情况)
  3. 多视图重建
    1. SfM
      1. 检测特征点,在2幅图像间匹配
      2. 计算基础矩阵 <-- 稳健估计!
      3. 计算照相机矩阵
      4. 三角剖分这些三维点
    2. 扩展示例
      1. 光束法平差 ?
      2. 自标定
    3. 立体图像
      1. 利用2台只有水平偏移的照相机观测同一场景
      2. 计算视差图 <-- 归一化互相关?

图像聚类

  1. K-Means聚类
  2. 层次聚类
    1. hcluster.draw_dendrogram
  3. 谱聚类

图像搜索

  1. CBIR
  2. 视觉单词
  3. 图像索引
  4. 在数据库中搜索图像(词袋模型)
  5. 利用几何特性对结果排序
  6. 建立演示程序和Web应用
    1. CherryPy

图像内容分类

  1. KNN
    1. *用稠密SIFT作为图像特征
    2. 手势识别
  2. Bayes分类器
  3. SVM
  4. OCR
    1. sudoku

图像分割

  1. 图割
  2. 利用聚类进行分割
  3. 变分法

OpenCV

  1. import cv2

附录A 安装软件包

附录B 图像集

你可能感兴趣的:(程序员心得体会,读书笔记)