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

大连网站制作网页网站搜索排名优化软件

大连网站制作网页,网站搜索排名优化软件,青创网站首页,微网站 服务器内容来源于《opencv4应用开发入门、进阶与工程化实践》 图像金字塔 略 拉普拉斯金字塔 对输入图像进行reduce操作会生成不同分辨率的图像#xff0c;对这些图像进行expand操作#xff0c;然后使用reduce减去expand之后的结果#xff0c;就会得到拉普拉斯金字塔图像。 …内容来源于《opencv4应用开发入门、进阶与工程化实践》   图像金字塔 略 拉普拉斯金字塔 对输入图像进行reduce操作会生成不同分辨率的图像对这些图像进行expand操作然后使用reduce减去expand之后的结果就会得到拉普拉斯金字塔图像。 详情可查看https://zhuanlan.zhihu.com/p/80362140 图像金字塔融合 拉普拉斯金字塔通过源图像减去先缩小再放大的图像构成保留的是残差为图像还原做准备。 根据拉普拉斯金字塔的定义可以知道拉普拉斯金字塔的每一层都是一个高斯差分图像。 原图 拉普拉斯金字塔图L0层 expand(高斯金字塔G1层)也就是说可以基于低分辨率的图像与它的高斯差分图像重建生成一个高分辨率的图像。 详情参考https://zhuanlan.zhihu.com/p/454085730的图像融合部分讲的很好。 步骤 生成苹果、橘子的高斯金字塔和 求苹果、橘子的的拉普拉斯金字塔和求mask的高斯金字塔在每个尺度分辨率下用拼接和最终得到拼接的拉普拉斯金字塔生成最低分辨率的起始图都选取最低分辨率下的和 根据同分辨率下 进行拼接得到最低分辨率下的拼接结果 从开始利用得到最高分辨率的拼接结果 示例代码 int level 3; Mat smallestLevel; Mat blend(Mat a, Mat b, Mat m) {int width a.cols;int height a.rows;Mat dst Mat::zeros(a.size(), a.type());Vec3b rgb1;Vec3b rgb2;int r1 0, g1 0, b1 0;int r2 0, g2 0, b2 0;int red 0, green 0, blue 0;int w 0;float w1 0, w2 0;for (int row 0; rowheight; row) {for (int col 0; colwidth; col) {rgb1 a.atVec3b(row, col);rgb2 b.atVec3b(row, col);w m.atuchar(row, col);w2 w / 255.0f;w1 1.0f - w2;b1 rgb1[0] 0xff;g1 rgb1[1] 0xff;r1 rgb1[2] 0xff;b2 rgb2[0] 0xff;g2 rgb2[1] 0xff;r2 rgb2[2] 0xff;red (int)(r1*w1 r2*w2);green (int)(g1*w1 g2*w2);blue (int)(b1*w1 b2*w2);// outputdst.atVec3b(row, col)[0] blue;dst.atVec3b(row, col)[1] green;dst.atVec3b(row, col)[2] red;}}return dst; }vectorMat buildGaussianPyramid(Mat image) {vectorMat pyramid;Mat copy image.clone();pyramid.push_back(image.clone());Mat dst;for (int i 0; ilevel; i) {pyrDown(copy, dst, Size(copy.cols / 2, copy.rows / 2));dst.copyTo(copy);pyramid.push_back(dst.clone());}smallestLevel dst;return pyramid; }vectorMat buildLapacianPyramid(Mat image) {vectorMat lp;Mat temp;Mat copy image.clone();Mat dst;for (int i 0; ilevel; i) {pyrDown(copy, dst, Size(copy.cols / 2, copy.rows / 2));pyrUp(dst, temp, copy.size());Mat lapaian;subtract(copy, temp, lapaian);lp.push_back(lapaian);copy dst.clone();}smallestLevel dst;return lp; } void FeatureVectorOps::pyramid_blend_demo(Mat apple, Mat orange) {Mat mc imread(D:/images/mask.png);if (apple.empty() || orange.empty()) {return;}imshow(苹果图像, apple);imshow(橘子图像, orange);vectorMat la buildLapacianPyramid(apple);Mat leftsmallestLevel;smallestLevel.copyTo(leftsmallestLevel);vectorMat lb buildLapacianPyramid(orange);Mat rightsmallestLevel;smallestLevel.copyTo(rightsmallestLevel);Mat mask;cvtColor(mc, mask, COLOR_BGR2GRAY);vectorMat maskPyramid buildGaussianPyramid(mask);Mat samllmask;smallestLevel.copyTo(samllmask);Mat currentImage blend(leftsmallestLevel, rightsmallestLevel, samllmask);imwrite(D:/samll.png, currentImage);// 重建拉普拉斯金字塔vectorMat ls;for (int i 0; ilevel; i) {Mat a la[i];Mat b lb[i];Mat m maskPyramid[i];ls.push_back(blend(a, b, m));}// 重建原图Mat temp;for (int i level - 1; i 0; i--) {pyrUp(currentImage, temp, ls[i].size());add(temp, ls[i], currentImage);}imshow(高斯金子图像融合重建-图像, currentImage); }Harris角点检测 角点是图像中亮度变化最强的地方反映了图像的本质特征。 图像的角点在各个方向上都有很强的梯度变化。 亚像素级别的角点检测 详细请参考https://www.cnblogs.com/qq21497936/p/13096048.html 大概理解是角点一般在边缘上边缘的梯度与沿边缘方向的的向量正交也就是内积为0根据内积为零角点周围能列出一个方程组方程组的解就是角点坐标。 opencv亚像素级别定位函数API void cv::cornerSubPix(InputArray imageInputOutputArray corners //输入整数角点坐标输出浮点数角点坐标Size winSize //搜索窗口Size zeroZone TermCriteria criteria //停止条件 ) 示例代码 void FeatureVectorOps::corners_sub_pixels_demo(Mat image) {Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);int maxCorners 400;double qualityLevel 0.01;std::vectorPoint2f corners;goodFeaturesToTrack(gray, corners, maxCorners, qualityLevel, 5, Mat(), 3, false, 0.04);Size winSize Size(5, 5);Size zeroZone Size(-1, -1);//opencv迭代终止条件类TermCriteria criteria TermCriteria(TermCriteria::EPS TermCriteria::COUNT, 10, 0.001);cornerSubPix(gray, corners, winSize, zeroZone, criteria);for (size_t t 0; t corners.size(); t) {printf(refined Corner: %d, x:%.2f, y:%.2f\n, t, corners[t].x, corners[t].y);} } HOG特征描述子 详细请参考https://baijiahao.baidu.com/s?id1646997581304332534wfrspiderforpcsearchwordHOG%E7%89%B9%E5%BE%81%E6%8F%8F%E8%BF%B0%E5%AD%90 讲的很好。 大概就是以一种特殊的直方图来表示图像特征直方图存储的是梯度的方向和幅值x轴是方向y轴是幅值且加权。 示例代码 virtual void cv::HOGDescriptor::compute(InputArray imgstd::vectorfloat descriptorsSize winStrideSize()Size paddingSize()const std::vectorPoint locations std::vectorPoint() )void FeatureVectorOps::hog_feature_demo(Mat image) {Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);HOGDescriptor hogDetector;std::vectorfloat hog_descriptors;hogDetector.compute(gray, hog_descriptors, Size(8, 8), Size(0, 0));std::cout hog_descriptors.size() std::endl;for (size_t t 0; t hog_descriptors.size(); t) {std::cout hog_descriptors[t] std::endl;} } HOG特征行人检测 opencv基于HOG行人特征描述子的检测函数 void HOGDescriptor::detectMultiScale(InputArray img,vectorRect foundLocations, double hitThreshold0, Size winStrideSize(), Size paddingSize(),double scale1.05,double finalThreshold2.0,bool useMeanshiftGroupingfalse ) //示例代码 void FeatureVectorOps::hog_detect_demo(Mat image) {HOGDescriptor *hog new HOGDescriptor();hog-setSVMDetector(hog-getDefaultPeopleDetector());vectorRect objects;hog-detectMultiScale(image, objects, 0.0, Size(4, 4), Size(8, 8), 1.25);for (int i 0; i objects.size(); i) {rectangle(image, objects[i], Scalar(0, 0, 255), 2, 8, 0);}imshow(HOG行人检测, image); } ORB特征描述子 没看懂。 描述子匹配 暴力匹配 再使用暴力匹配之前先创建暴力匹配器 static PtrBFMatcher cv::BFMatcher::create(int normTypeNORM_L2 //计算描述子暴力匹配时采用的计算方法bool crossCheckfalse //是否使用交叉验证 ) 调用暴力匹配的匹配方法有两种最佳匹配和KNN匹配 void cv::DescriptorMatch::match(InputArray queryDescriptorsInputArray trainDescriptorsstd::vectorDMatch matchesInputArray masknoArray )void cv::DescriptorMatch::knnMatch(InputArray queryDescriptorsInputArray trainDescriptorsstd::vectorDMatch matchesint kInputArray masknoArraybool compactResult false ) FLANN匹配 cv::FlannBasedMatcher::FlannBasedMatcher(const Ptrflann::IndexParams indexParamsmakePtrflann::KDTreeIndexParams()const Ptrflann::SearchParams searchParamsmakePtrflann::SearchParams() ) 示例代码 void FeatureVectorOps::orb_match_demo(Mat box, Mat box_in_scene) {// ORB特征提取auto orb_detector ORB::create();std::vectorKeyPoint box_kpts;std::vectorKeyPoint scene_kpts;Mat box_descriptors, scene_descriptors;orb_detector-detectAndCompute(box, Mat(), box_kpts, box_descriptors);orb_detector-detectAndCompute(box_in_scene, Mat(), scene_kpts, scene_descriptors);// 暴力匹配auto bfMatcher BFMatcher::create(NORM_HAMMING, false);std::vectorDMatch matches;bfMatcher-match(box_descriptors, scene_descriptors, matches);Mat img_orb_matches;drawMatches(box, box_kpts, box_in_scene, scene_kpts, matches, img_orb_matches);imshow(ORB暴力匹配演示, img_orb_matches);// FLANN匹配auto flannMatcher FlannBasedMatcher(new flann::LshIndexParams(6, 12, 2));flannMatcher.match(box_descriptors, scene_descriptors, matches);Mat img_flann_matches;drawMatches(box, box_kpts, box_in_scene, scene_kpts, matches, img_flann_matches);namedWindow(FLANN匹配演示, WINDOW_FREERATIO);cv::namedWindow(FLANN匹配演示, cv::WINDOW_NORMAL);imshow(FLANN匹配演示, img_flann_matches); } 基于特征的对象检测 特征描述子匹配之后可以根据返回的各个DMatch中的索引得到关键点对然后拟合生成从对象到场景的变换矩阵H。根据矩阵H可以求得对象在场景中的位置从而完成基于特征的对象检测。 opencv中求得单应性矩阵的API Mat cv::findHomograph(InputArray srcPointsOutputArray dstPointsint method0double ransacReprojThreshold3OutputArray masknoArray()const int maxIters2000;const double confidence0.995 ) 有了变换矩阵H 可以运用透视变换函数求得场景中对象的四个点坐标并绘制出来。 透视变换函数 void cv::perspectiveTransform(InputArray srcOutputArray dstInputArray m ) 示例代码 void FeatureVectorOps::find_known_object(Mat book, Mat book_on_desk) {// ORB特征提取auto orb_detector ORB::create();std::vectorKeyPoint box_kpts;std::vectorKeyPoint scene_kpts;Mat box_descriptors, scene_descriptors;orb_detector-detectAndCompute(book, Mat(), box_kpts, box_descriptors);orb_detector-detectAndCompute(book_on_desk, Mat(), scene_kpts, scene_descriptors);// 暴力匹配auto bfMatcher BFMatcher::create(NORM_HAMMING, false);std::vectorDMatch matches;bfMatcher-match(box_descriptors, scene_descriptors, matches);// 好的匹配std::sort(matches.begin(), matches.end());const int numGoodMatches matches.size() * 0.15;matches.erase(matches.begin() numGoodMatches, matches.end());Mat img_bf_matches;drawMatches(book, box_kpts, book_on_desk, scene_kpts, matches, img_bf_matches);imshow(ORB暴力匹配演示, img_bf_matches);// 单应性求Hstd::vectorPoint2f obj_pts;std::vectorPoint2f scene_pts;for (size_t i 0; i matches.size(); i){//-- Get the keypoints from the good matchesobj_pts.push_back(box_kpts[matches[i].queryIdx].pt);scene_pts.push_back(scene_kpts[matches[i].trainIdx].pt);}Mat H findHomography(obj_pts, scene_pts, RANSAC);std::cout RANSAC estimation parameters: \n H std::endl;std::cout std::endl;H findHomography(obj_pts, scene_pts, RHO);std::cout RHO estimation parameters: \n H std::endl;std::cout std::endl;H findHomography(obj_pts, scene_pts, LMEDS);std::cout LMEDS estimation parameters: \n H std::endl;// 变换矩阵得到目标点std::vectorPoint2f obj_corners(4);obj_corners[0] Point(0, 0); obj_corners[1] Point(book.cols, 0);obj_corners[2] Point(book.cols, book.rows); obj_corners[3] Point(0, book.rows);std::vectorPoint2f scene_corners(4);perspectiveTransform(obj_corners, scene_corners, H);// 绘制结果Mat dst;line(img_bf_matches, scene_corners[0] Point2f(book.cols, 0), scene_corners[1] Point2f(book.cols, 0), Scalar(0, 255, 0), 4);line(img_bf_matches, scene_corners[1] Point2f(book.cols, 0), scene_corners[2] Point2f(book.cols, 0), Scalar(0, 255, 0), 4);line(img_bf_matches, scene_corners[2] Point2f(book.cols, 0), scene_corners[3] Point2f(book.cols, 0), Scalar(0, 255, 0), 4);line(img_bf_matches, scene_corners[3] Point2f(book.cols, 0), scene_corners[0] Point2f(book.cols, 0), Scalar(0, 255, 0), 4);//-- Show detected matchesnamedWindow(基于特征的对象检测, cv::WINDOW_NORMAL);imshow(基于特征的对象检测, img_bf_matches); }
http://www.dnsts.com.cn/news/83010.html

相关文章:

  • 做网站和app多少费用企业官网维护
  • 鄞州区网站建设保险网站推荐
  • 招聘做微信公众号网站维护注册集团公司需要什么条件?
  • 外贸网站建设推广公司价格企业形象设计的意义
  • 安徽干部学校建设网站单机游戏大全网站开发
  • 相亲网站上做it的骗术为知笔记写wordpress
  • 备案网站能打开吗莱芜都市论坛
  • 房地产公司如何做网站如何做企业第一管理人
  • 做网站的心得电商平台下载
  • 上海平台网站制作公司怎么给公司网站上放视频
  • 青岛谷歌网站建设什么软件可以做网站动图
  • 东莞网站没计删除多余wordpress前端
  • 建设银行网站储蓄账户查询密码成都 网站建设公司哪家好
  • 国内做网上旅游业务的网站wordpress商业站
  • 河南网站推广那家好广西建设监理协会官网站
  • seo网站买网站建设ppt模板
  • 北京平台网站建设价位做面包的网站
  • 如何设置的iis后台服务网站地址网站集群系统 如何做域名解析
  • 建网站定制wordpress登录验证
  • 百度网站适配代码做平台网站外包多少钱啊
  • 电子商城网站开发需求分析模板网站建设公司如何转型
  • 网站外链购买酒店网络营销推广案例
  • 网站改了关键词百度网页版登录首页
  • 网站建设 宜宾wordpress更新缓存
  • 郑州外贸网站建设公司wordpress图片自适应主题
  • 购物网站促销方案网站备案相关手续费
  • 网站建设酷万网络建一个网站要多久
  • 深度网网站建设除了wordpress还有什么非php
  • 云浮网站建设公司外贸营销词
  • 电脑买编程代码做网站衡阳做网站ss0734