深入理解OpenCV:实用计算机视觉项目解析
目录
Android系统上的卡通化和皮肤变换
- 访问摄像机:略
- 双边滤波器:bilateralFilter(...
- 边缘滤波器:Scharr threshold medianBlur Lapacian(这里函数命名的风格怎么不统一?)
- floodFill:外部掩码图像
- 皮肤变色?
- RGB效果不好(?),HSV色度以红色开始红色结束。。。,YCrCb(YUV的变种):cvtColor(from, to, CV_BGR2YCrCb);
- Java到JNI传递图像数据:byte[] --> jbyte* --> Mat对象
iPhone或iPad上基于标记的增强现实
- 标记检测:adaptiveThreshold --> findContours --> approxPolyDP
- p49 用Otsu算法得到图像二值化处理时的阈值
- threshold(..., THRESH_BINARY|THRESH_OTSU);
- getPerspectiveTransform --> warpPerspective
- p49 用Otsu算法得到图像二值化处理时的阈值
- 标记编码的识别
- 可能有4种不同的表示:2位信息3位海明校验,正确的位置其海明码=0
- 细化角点:cornerSubPx?
- 摄像机标定(超出本书范围)
- 标记姿态估计:solvePnP(objectPoints, imagePoints, cameraMatrix, distCoeffs, rvec, tvec, useExtrinsGuess=false)
- p55 按最小化重投影误差来计算摄像机的变换
- 可用cv::Rodrigues将旋转向量转换为3X3的矩阵
- 渲染OpenGL虚拟物体
- p60 可通过正交投影,并将当前帧图像作为屏幕纹理来轻松绘制背景(嗯?CameraCapture视图不是已经显示了吗)
- 首先需要用摄像机的内(标定)矩阵来调整OpenGL投影矩阵(p61代码)
无标记的增强现实
- 特征描述符
- cv:;Ptr<cv::FeatureDetector> detector = new cv::SurfFeatureDetector(); //或SIFT(都是受商业保护的?)
- detector->dectect(image, keypoints); //每个关键点包括圆心、半径、角度和得分
- 免费的替代品:ORB或FREAK
- cv:;Ptr<cv::FeatureDetector> detector = new cv::SurfFeatureDetector(); //或SIFT(都是受商业保护的?)
- 特征点匹配
- 一组描述符与另一组的最近邻搜索:{BF,FlannBased}Matcher
- 删除离群值
- 估计单应性:findHomography
- 单应细化?:refineMatchesWithHomography
- 桌面版本:从2.4.2开始,OpenCV在窗口里支持OpenGL
使用OpenCV研究从运动中恢复结构(SfM)
- 从两幅图像估计摄像机运动(Hartley & Sturm?)
- 基础矩阵和本征矩阵?
- 通过光流进行点匹配:calcOpticalFlowPyrLK
- -> findFundamentalMatrix
- ...读者只须了解SVD将本征矩阵分为2部分:旋转和平移
- p102 为了重构场景,需要2台摄像机
- 重构场景
- 三角形法?在OpenCV里解方程?
- 从多视图中重构
- 透视N点法(PNP)?
- 迭代最近点(ICP)
- p107 solvePnPRansac对噪声有更好的鲁棒性
- 重构的细化(光束调整,BA)
- SSBA代码(略)
- 用PCL来可视化3D点云
- p112 “统计孤立点删除”(SOR)?
基于SVM和神经网络的车牌识别
- ?getStructureElement --> morphologyEx --> findContours --> ...?--> warpAffine --> equalizeHist?
- CvSVM分类器?(仅判断是不是?)
- 车牌号识别
- 特征提取:累积直方图?
- OCR:MLP
- CvANN_MLP:神经网络层数、神经元数、激励函数、alpha和beta
- 在train之后,调用predict进行classify
- p135 最低错误率在8%以下,神经元个数=20,10*10的图像块
非刚性人脸跟踪
- ‘数据驱动’
- 90s,Cootes和Taylor提出的主动形状模型(ASM)
- 训练数据类型:
- 图像
- 标注
- 对称性索引
- 连通性索引
- MUCT数据集
- 几何约束
- Procrustes分析
- 线性形状模型:PCA/SVD?
- 局部-全局相结合的表示
- p151 clamp子空间坐标(训练box约束)
- 训练与可视化
- 面部特征检测器
- ...最著名的基于Haar特征的级联检测器,用来实现Viola-Jones人脸检测器
- 相关性块模型(响应矩阵?)
- 人脸跟踪*
基于AAM和POSIT的三维头部姿态估计
- AAM
- 三角剖分:cvCreateSubdivDelaunay2D
- 搜索和拟合
- POSIT(含义是反复迭代由正交投影和尺寸变换提取姿态)
基于特征脸或Fisher脸的人脸识别
- 基于Haar的:检查所有情况下的相对位置的明暗信息?基于LBP的(更快):比较的是像素亮度直方图
- CascadeClassifier?
- detectMultiScale:参数:minFeatureSize、searchScaleFactor、minNeighbors、flags
- p197 睁眼闭眼戴眼镜的都要分开来处理???靠
- CascadeClassifier?
- v2.4.1提供了3种人脸识别算法:
- FaceRecognizer.Eigenfaces:特征脸,也称PCA
- .Fisherfaces:也称LDA
- .LBPH(局部二值模式直方图)