当前位置: 首页 > news >正文

一个网站建设需要多少人力烟台网站建设地址

一个网站建设需要多少人力,烟台网站建设地址,网站开发实用技术介绍,全媒体运营师数字图像处理学习笔记#xff08;三#xff09;#xff1a;ORB算法#xff08;尺度不变特征变换#xff09;Oriented FAST and Rotated BRIEF 一、概述 参考#xff1a;特征点匹配特征检测方法汇总 ORB的全称是Oriented FAST and Rotated BRIEF#xff0c;是目前来说…数字图像处理学习笔记三ORB算法尺度不变特征变换Oriented FAST and Rotated BRIEF 一、概述 参考特征点匹配特征检测方法汇总 ORB的全称是Oriented FAST and Rotated BRIEF是目前来说非常好的能够进行的实时的图像特征提取和描述的算法它改进了FAST特征提取算法并使用速度极快的二进制描述子BRIEF。 针对FAST特征提取的算法的一些确定ORB也做了相应的改进。 使用非最大值抑制在一定区域内仅仅保留响应极大值的角点避免FAST提取到的角点过于集中。FAST提取到的角点数量过多且不是很稳定ORB中可以指定需要提取到的角点的数量N然后对FAST提取到的角点分别计算Harris响应值选择前N个具有最大响应值的角点作为最终提取到的特征点集合。FAST提取到的角点不具有尺度信息在ORB中使用图像金字塔并且在每一层金字塔上检测角点以此来保持尺度的不变性。FAST提取到的角点不具有方向信息在ORB中使用灰度质心法(Intensity Centroid)来保持特征的旋转不变性。 FAST-12算法 添加预测试操作于每个像素直接检测在邻域圆上的第1,5,9,13个像素的亮度只有当这四个像素当中有三个同时大于IPT或者小于IP-T的时候当前像素才有可能是是角点。 问题1FAST特征点的数量很多并且不是确定而大多数情况下我们希望能够固定特征点的数量。 解决方法在ORB当中我们可以指定要提取的特征点数量。对原始的FAST角点分别计算Harris的响应值然后选取前N个点具有最大相应值的角点作为最终角点的集合。 问题2FAST角点不具有方向信息和尺度问题。 解决方法尺度不变性构建的图像的金字塔并且从每一层上面来检测角点。旋转性是由灰度质心法实现。 灰度质心法质心是指以图像块灰度值作为权重的中心。目标是为了找到方向 1在一个小的图像块B中定义图像块的矩为 2通过矩找到图像块的质心 3连接图像块的几何中心o与质心C得到一个oc的向量把这个向量的方向定义特征点的方向 OpenCV提供了两种Matching方式 • Brute-force matcher (cv::BFMatcher) 1暴力方法找到点集1中每个descriptor在点集2中距离最近的descriptor找寻到的距离最小就认为匹配 2浮点描述子-欧氏距离二进制描述符-汉明距离。 3详细描述在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行描述符距离测试最后返回距离最近的关键点 • Flann-based matcher (cv::FlannBasedMatcher) 1快速最近邻搜索算法寻找用快速的第三方库近似最近邻搜索算法 2是一个对大数据集和高维特征进行最近邻搜索的算法的集合在面对大数据集时它的效果要好于BFMatcher。 3使用FLANN匹配需要传入两个字典参数 一个参数是IndexParams对于SIFT和SURF可以传入参数index_paramsdict(algorithmFLANN_INDEX_KDTREE, trees5)。 对于ORB可以传入参数 index_paramsdict(algorithmFLANN_INDEX_LSH, table_number6, key_size12, multi_probe_level1)。 第二个参数是SearchParams可以传入参数search_paramsdict(checks100)它来指定递归遍历的次数值越高结果越准确但是消耗的时间也越多。 cv::BFMatcher(int normTypeNORM_L2, bool crossCheckfalse)如下所示 normType它是用来指定要使用的距离测试类型,默认值为cv2.Norm_L2,这很适合SIFT和SURF等c2.NORM_L1也可。对于使用二进制描述符的ORB、BRIEF和BRISK算法等要使用cv2.NORM_HAMMING 这样就会返回两个测试对象之间的汉明距离。如果ORB算法的参数设置为WTA_K3或4normType就应该设置成cv2.NORM_HAMMING2。 crossCheck默认值为False。如果设置为True匹配条件就会更加严格只有到A中的第i个特征点与B中的第j个特征点距离最近并且B中的第j个特征点到A中的第i个特征点也是最近时才会返回最佳匹配(i,j) 即这两个特征点要互相匹配才行。 BFMatcher对象有两个方法BFMatcher.match()和BFMatcher.knnMatch()。第一个方法会返回最佳匹配。第二个方法为每个关键点返回k个最佳匹配其中k是由用户设定的。 cv2.drawMatches()来绘制匹配的点它会将两幅图像先水平排列然后在最佳匹配的点之间绘制直线。 如果前面使用的是BFMatcher.knnMatch()现在可以使用函数cv2.drawMatchsKnn为每个关键点和它的个最佳匹配点绘制匹配线如果要选择性绘制就要给函数传入一个掩模。 特征点的匹配后的优化 特征的匹配是针对特征描述子进行的上面提到特征描述子通常是一个向量两个特征描述子的之间的距离可以反应出其相似的程度也就是这两个特征点是不是同一个。 根据描述子的不同可以选择不同的距离度量。如果是浮点类型的描述子可以使用其欧式距离对于二进制的描述子BRIEF可以使用其汉明距离两个不同二进制之间的汉明距离指的是两个二进制串不同位的个数。 有了计算描述子相似度的方法那么在特征点的集合中如何寻找和其最相似的特征点这就是特征点的匹配了。最简单直观的方法就是上面使用的暴力匹配方法(Brute-Froce Matcher)计算某一个特征点描述子与其他所有特征点描述子之间的距离然后将得到的距离进行排序取距离最近的一个作为匹配点。这种方法简单粗暴其结果也是显而易见的通过上面的匹配结果也可以看出有大量的错误匹配这就需要使用一些机制来过滤掉错误的匹配。 交叉匹配 针对暴力匹配可以使用交叉匹配的方法来过滤错误的匹配。交叉过滤的思想很简单再进行一次匹配反过来使用被匹配到的点进行匹配如果匹配到的仍然是第一次匹配的点的话就认为这是一个正确的匹配。举例来说就是假如第一次特征点A使用暴力匹配的方法匹配到的特征点是特征点B反过来使用特征点B进行匹配如果匹配到的仍然是特征点A则就认为这是一个正确的匹配否则就是一个错误的匹配。OpenCV中BFMatcher已经封装了该方法创建BFMatcher的实例时第二个参数传入true即可BFMatcher bfMatcher(NORM_HAMMING,true)。 KNN匹配 K近邻匹配在匹配的时候选择K个和特征点最相似的点如果这K个点之间的区别足够大则选择最相似的那个点作为匹配点通常选择K 2也就是最近邻匹配。对每个匹配返回两个最近邻的匹配如果第一匹配和第二匹配距离比率足够大向量距离足够远则认为这是一个正确的匹配比率的阈值通常在2左右。 RANSAC 随机采样一致性RANSAC可过滤掉错误的匹配该方法利用匹配点计算两个图像之间单应矩阵并分解得到位姿Rt通过三角测量来得到两个关联特征对应的3D点将3D点按照当前估计的位姿进行投影也就是重投影然后利用重投影误差观测到得投影位置像素坐标与3D点进行重投影的位置之差来判定某一个匹配是不是正确的匹配。 OpenCV中封装了求解单应矩阵的方法findHomography,可以为该方法设定一个重投影误差的阈值可以得到一个向量mask来指定那些是符合该重投影误差的匹配点对Inliers以此来剔除错误的匹配 二、示例 openCV处理流程 1读取图像 2获取检测器的实例 3在OpenCV3中重新的封装了特征提取的接口可统一的使用Ptr detector FeatureDetector::create()来得到特征提取器的一个实例所有的参数都提供了默认值也可以根据具体的需要传入相应的参数。 4在得到特征检测器的实例后可调用的detect方法检测图像中的特征点的具体位置检测的结果保存在vector向量中。 5有了特征点的位置后调用compute方法来计算特征点的描述子描述子通常是一个向量保存在Mat中。 6得到了描述子后可调用匹配算法进行特征点的匹配。上面代码中使用了opencv中封装后的暴力匹配算法BFMatcher该算法在向量空间中将特征点的描述子一一比较选择距离上面代码中使用的是Hamming距离较小的一对作为匹配点。 7绘制结果 汉明距离小于最小距离的两倍 选择已经匹配的点对的汉明距离不大于最小距离的两倍作为判断依据如果不大于该值则认为是一个正确的匹配过滤掉大于该值则认为是一个错误的匹配。 DMatch类存放匹配结果 struct DMatch { int queryIdx; //此匹配对应的查询图像的特征描述子索引int trainIdx; //此匹配对应的训练(模板)图像的特征描述子索引int imgIdx; //训练图像的索引(若有多个)float distance; //两个特征向量之间的欧氏距离越小表明匹配度越高。bool operator (const DMatch m) const; };#include opencv2/opencv.hppusing namespace cv; using namespace std;int main() {// 0 读取图像Mat img1 imread(F:/C/2. OPENCV 3.1.0/TEST/w.jpg,1);Mat img2 imread(F:/C/2. OPENCV 3.1.0/TEST/e.jpg,1);// 1 初始化特征点和描述子,ORBstd::vectorKeyPoint keypoints1, keypoints2; // 定义关键点特征点Mat descriptors1, descriptors2; // 定义描述子PtrORB orb ORB::create();// 2 、提取 Oriented FAST 特征点orb-detect(img1, keypoints1);orb-detect(img2, keypoints2);// 3 、根据角点位置计算 BRIEF 描述子orb-compute(img1, keypoints1, descriptors1);orb-compute(img2, keypoints2, descriptors2);// // 4、绘制特征关键点. // Mat img_keypoints_1; // Mat img_keypoints_2; // drawKeypoints( img1, keypoints1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT ); // drawKeypoints( img2, keypoints2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT ); // // 5、显示效果图 // imshow(特征点检测效果图1, img_keypoints_1 ); // imshow(特征点检测效果图2, img_keypoints_2 );// 6、对两幅图像中的BRIEF描述子进行匹配使用 Hamming 距离// DMatch类存放匹配结果matches中保存着匹配关系vectorDMatch matches;// 暴力匹配算法找到点集1中每个descriptor在点集2中距离hamming distance最近的descriptor找寻到的距离最小就认为匹配BFMatcher bfmatcher(NORM_HAMMING,true);// 匹配函数bfmatcher.match(descriptors1, descriptors2, matches);// 7、匹配对筛选选择 hamming距离小于最小距离的两倍的特征点double min_dist 1000, max_dist 0;// 找出所有匹配之间的最大值和最小值for (int i 0; i descriptors1.rows; i){double dist matches[i].distance;//汉明距离在matches中if (dist min_dist)min_dist dist;if (dist max_dist)max_dist dist;}// 当描述子之间的匹配大于2倍的最小距离时即认为该匹配是一个错误的匹配。// 但有时描述子之间的最小距离非常小可以设置一个经验值作为下限vectorDMatch good_matches;for (int i 0; i descriptors1.rows; i){if (matches[i].distance max(2 * min_dist, 30.0))good_matches.push_back(matches[i]);}// 8、绘制匹配结果Mat img_match;drawMatches(img1, keypoints1, img2, keypoints2, good_matches, img_match);imshow(所有匹配点对, img_match);结果
http://www.yutouwan.com/news/105716/

相关文章:

  • 百度不收录你的网站产品在线代理访问网页
  • 青海培训网站建设公司企业网站建设专业精准丨 鸣远科技
  • 服务器不稳定 如何让百度重新收录网站广州网站建设需要多少钱
  • 佛山网站设计怎么做品牌做网站公司
  • seo公司如何优化济南网站自然优化
  • 网站根目录多文件小米路由做网站
  • 网站建设专业介绍wordpress给幻灯片添加图片不显示
  • 网站建设公司接单郑州手机网站推广公司
  • 做课展网站商标设计网排行
  • wordpress同步发布优化好的网站
  • 如何看到网站做哪些关键字此博客由wordpress制作
  • codeigniter 手机网站开发2018年政务公开与网站建设总结
  • 网站开发进入腾信职位菏泽注册公司流程和费用
  • 建网站的公司湖南送变电建设公司 网站
  • 有哪些好的做h5的网站哪个网站可以做英文兼职
  • 现如今网站开发用什么框架什么软件可以在手机上做装修设计
  • eclips怎么做网站wordpress上传照片
  • 做资讯网站怎么挣钱力洋深圳做网站公司
  • 医疗机构网站模板购物网站有哪些?
  • 西安知名网站开发的公司平面设计作品图片大全
  • 网站性能需求品牌营销策划方案报价
  • 佛山网站建设 骏域网站西安seo网站排名优化公司
  • 网站建设技术支持方案东莞外贸网站
  • 网站建设费用明细制作app开发定制外包24
  • 个人网站开发人员免费psd模板素材
  • 宁波网站建设在线网站的数据库有什么用
  • 网站建设怎么添加评论谷歌浏览器 安卓下载2023版
  • 引流量的网站个人网站经营性备案查询
  • 给人做ppt的网站网上哪里有辅导高考生做难题的网站
  • orchid wordpress常州做网站优化