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

义乌网站建设优化案例平面设计年终总结

义乌网站建设优化案例,平面设计年终总结,网站建设与管理自考题,图片二维码制作网站目录 一、环境 二、akaze特征点算法 2.1、基本原理 2.2、实现过程 2.3、实际应用 2.4、优点与不足 三、代码 3.1、数据准备 3.2、完整代码 一、环境 本文使用环境为#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、akaze特征点算法 特征点检测算法…目录 一、环境 二、akaze特征点算法 2.1、基本原理 2.2、实现过程 2.3、实际应用 2.4、优点与不足 三、代码 3.1、数据准备 3.2、完整代码 一、环境 本文使用环境为 Windows10Python 3.9.17opencv-python 4.8.0.74 二、akaze特征点算法 特征点检测算法AKAZE是一种广泛应用于图像处理领域的算法它可以在不同尺度下提取图像的特征点并具有尺度不变性和旋转不变性等优点。本文将概括介绍AKAZE算法的基本原理、实现过程以及其在实际应用中的表现。 2.1、基本原理 AKAZE算法是基于尺度空间理论和图像金字塔的它通过非线性扩散滤波来构建尺度空间并在尺度空间中检测关键点。在AKAZE中关键点的检测是通过一个称为“加速非线性扩散”的过程来实现的该过程可以快速地生成尺度空间。此外AKAZE还采用了M-LDB描述子来描述特征点的周围区域。 2.2、实现过程 图像预处理首先对输入图像进行预处理包括灰度化和降噪等操作以提高算法的准确性。构建尺度空间然后通过非线性扩散滤波来构建尺度空间并在尺度空间中检测关键点。在这个过程中采用了一种称为“加速非线性扩散”的方法该方法可以快速地生成尺度空间。关键点检测在尺度空间中采用基于区域的方法来检测关键点。这些关键点对应于图像中的局部极值点即在周围区域内具有最大或最小的灰度值。描述子生成在检测到关键点后AKAZE采用M-LDB描述子来描述特征点的周围区域。M-LDB描述子是一种改进的LDB描述子它可以更好地描述图像的特征。特征匹配最后通过比较不同图像之间的M-LDB描述子来进行特征匹配从而识别出图像中的相似区域。 2.3、实际应用 AKAZE算法在实际应用中表现出了良好的性能可以应用于许多领域如目标识别、图像配准、拼接等。例如在目标识别中AKAZE可以用于检测图像中的目标特征点并通过特征匹配来识别出目标物体。此外AKAZE还可以用于图像拼接中通过对齐不同图像中的特征点来实现无缝拼接。 2.4、优点与不足 AKAZE算法具有以下优点 尺度不变性AKAZE算法能够在不同尺度下提取图像的特征点从而适应了不同尺度的图像。旋转不变性AKAZE算法具有旋转不变性可以在不同角度下提取图像的特征点。加速性能与SIFT算法相比AKAZE算法采用了加速非线性扩散方法来构建尺度空间具有更快的运行速度。稳健性AKAZE算法对噪声和干扰具有较强的鲁棒性能够提取出较为稳健的特征点。 然而AKAZE算法也存在一些不足之处 对光照变化敏感AKAZE算法对光照变化较为敏感可能会受到光照变化的影响。对局部变化敏感AKAZE算法对局部变化较为敏感可能会导致误检或漏检。需要手动设置参数AKAZE算法需要手动设置一些参数如尺度空间级数、加速非线性扩散的迭代次数等。这些参数的设置会影响到算法的性能和准确性。 总之特征点检测算法AKAZE是一种有效的图像特征提取方法具有尺度不变性和旋转不变性等优点。在实际应用中表现出了良好的性能可以应用于许多领域。然而它也存在一些不足之处如对光照变化敏感、对局部变化敏感以及需要手动设置参数等。未来可以进一步改进和完善AKAZE算法的性能和准确性。 三、代码 3.1、数据准备 代码需要的两张图一个xml格式的文件即H1to3p.xml如下 ?xml version1.0? opencv_storage H13 type_idopencv-matrixrows3/rowscols3/colsdtd/dtdata7.6285898e-01 -2.9922929e-01 2.2567123e023.3443473e-01 1.0143901e00 -7.6999973e013.4663091e-04 -1.4364524e-05 1.0000000e00 /data/H13 /opencv_storage3.2、完整代码 代码 from __future__ import print_function import cv2 as cv import numpy as np import argparse from math import sqrt# 读取两张图片 parser argparse.ArgumentParser(descriptionCode for AKAZE local features matching tutorial.) parser.add_argument(--input1, helpPath to input image 1., defaultgraf1.png) # 在这里设置图像1 parser.add_argument(--input2, helpPath to input image 2., defaultgraf3.png) # 在这里设置图像2 parser.add_argument(--homography, helpPath to the homography matrix., defaultH1to3p.xml) # 在这里设置H矩阵 args parser.parse_args()img1 cv.imread(cv.samples.findFile(args.input1), cv.IMREAD_GRAYSCALE) img2 cv.imread(cv.samples.findFile(args.input2), cv.IMREAD_GRAYSCALE) if img1 is None or img2 is None:print(Could not open or find the images!)exit(0) fs cv.FileStorage(cv.samples.findFile(args.homography), cv.FILE_STORAGE_READ) homography fs.getFirstTopLevelNode().mat()## 初始化算法[AKAZE] akaze cv.AKAZE_create() # 检测图像1和图像2的特征点和特征向量 kpts1, desc1 akaze.detectAndCompute(img1, None) kpts2, desc2 akaze.detectAndCompute(img2, None)## 基于汉明距离使用暴力匹配来匹配特征点 matcher cv.DescriptorMatcher_create(cv.DescriptorMatcher_BRUTEFORCE_HAMMING) nn_matches matcher.knnMatch(desc1, desc2, 2)## 下面0.8默认参数可以手动修改、调试 matched1 [] matched2 [] nn_match_ratio 0.8 # 最近邻匹配参数 for m, n in nn_matches:if m.distance nn_match_ratio * n.distance:matched1.append(kpts1[m.queryIdx])matched2.append(kpts2[m.trainIdx])## 使用单应矩阵进行精匹配进一步剔除误匹配点 inliers1 [] inliers2 [] good_matches [] inlier_threshold 2.5 # 如果两个点距离小于这个值表明足够近也就是一对匹配对 for i, m in enumerate(matched1):col np.ones((3,1), dtypenp.float64)col[0:2,0] m.ptcol np.dot(homography, col)col / col[2,0]dist sqrt(pow(col[0,0] - matched2[i].pt[0], 2) \pow(col[1,0] - matched2[i].pt[1], 2))if dist inlier_threshold:good_matches.append(cv.DMatch(len(inliers1), len(inliers2), 0))inliers1.append(matched1[i])inliers2.append(matched2[i])## 可视化 res np.empty((max(img1.shape[0], img2.shape[0]), img1.shape[1]img2.shape[1], 3), dtypenp.uint8) cv.drawMatches(img1, inliers1, img2, inliers2, good_matches, res) cv.imwrite(akaze_result.png, res)inlier_ratio len(inliers1) / float(len(matched1)) print(A-KAZE Matching Results) print(*******************************) print(# Keypoints 1: \t, len(kpts1)) print(# Keypoints 2: \t, len(kpts2)) print(# Matches: \t, len(matched1)) print(# Inliers: \t, len(inliers1)) print(# Inliers Ratio: \t, inlier_ratio)cv.imshow(result, res) cv.waitKey()
http://wiki.neutronadmin.com/news/108679/

相关文章:

  • 金融网站开发wordpress怎样建立多站点
  • 建设厅安全证考试报名在哪个网站莆田制作网站企业
  • 做网站要多少网易邮箱163 com登录
  • 不是做有网站都叫狠狠wordpress会议
  • 网站页面不更新静海网站建设公司
  • 固镇网站建设哪家好网站seo优化方案策划书
  • 网站漂浮常州网站备案
  • 泰州营销型网站建设兰州网站建设q.479185700強
  • 网站建设zrhskj企业域名注册流程
  • 网站应该如何进行优化北京所有做招聘类网站建站公司
  • 自贡企业网站建设公司如何写网站开发的分析
  • 南山住房和建设局网站wordpress ajax登录
  • 萍乡建网站3d建模教程人物
  • 网站开发 运行及维护自己做的网页怎么发布
  • 建立网站需要多少钱 纠正错误湖南岚鸿wordpress上传小视频
  • 做兼职有哪些网站网站建设的前端开发和后端开发
  • 下载建设银行官方网站下载北碚区网站建设
  • 大型网站建设用什么系统好网站建站第十四课
  • 网站制作商业模式国外优秀的网站设计
  • 强的网站建设公司上海市工商网站官网
  • 泰兴市淘宝网站建设网页制作软件dw还需要什么
  • 南京网站建设电话网站开发服务计入什么科目
  • 淘宝代做网站怎么做淘宝客的跳转网站
  • 做租赁的行业网站网络传媒公司名字
  • 建立个人网站能干二次开发包
  • 互联网科技公司网站免费3d建模软件
  • 高端网站建设合同深圳网站开发哪个好
  • 网站开发所需技能湘潭网站建设公司有哪些
  • 青岛有没有做网站的构建平台还是搭建平台
  • 网站开发谷歌浏览器js不更新网站建设的编程语言