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

opencv-phase 函数

计算梯度强度和方向
梯度的方向与边缘的方向总是垂直的。图像中的边缘可以指向各个方向,通常会取水平(左、右)、垂直(上、下)、对角线(左上、右上、左下、右下)等八个不同的方向计算梯度。

角度的确定:
得到的角度一般不在前边指定的放个方向上,我们需要将角度分类到八个方向中。
假设有四条线,分别是0,45,90,135度线(0度和180重合,是一条线)。需要对通过(2)式求出的θ进行近似,分类到这四条线分成的八个区域中。

比如计算出的θ = 91 ° ,则应将其归类到67.5 ° — 112.5 °的区域,就是垂直向上方向。
八个区域如下图:

x方向的梯度 

y方向的梯度 

梯度的方向:θ =arctan(-255 / 255) = arctan(-1) = -45°

最后mat的计算结果:

 样例

Mat mat1(Size( 4 , 1 ), CV_32FC1), mat2(Size( 4 , 1 ), CV_32FC1), mat3;
mat1.at < float > ( 0 , 0 ) = 1 ;  mat2.at < float > ( 0 , 0 ) = 1 ;
mat1.at < float > ( 0 , 1 ) = 1 ;  mat2.at < float > ( 0 , 1 ) = - 1 ;
mat1.at < float > ( 0 , 2 ) = - 1 ; mat2.at < float > ( 0 , 2 ) = 1 ;
mat1.at < float > ( 0 , 3 ) = - 1 ; mat2.at < float > ( 0 , 3 ) = - 1 ;
phase(mat1,mat2,mat3, true );

最后mat3的计算结果:

由此可以看出opencv phase计算出的角度从0°-360°是已x轴正方向为0°,逆时针旋转增加,符合我们平常角度的计算方式。

http://www.lryc.cn/news/191621.html

相关文章:

  • 44.ES
  • 分权分域有啥内容?
  • 6.Docker搭建RabbitMQ
  • 用 docker 创建 jmeter 容器, 实现性能测试,该如何下手?
  • 4年软件测试,突破不了20K,太卷了。。。
  • 机器人控制算法——两轮差速驱动运动模型
  • Queue简介
  • 被面试官问到分布式ID,别再傻乎乎只会答雪花算法了...
  • 使用Boto3访问AWS S3服务
  • ODrive移植keil(五)—— 开环控制和电流变换
  • 【Java学习之道】日期与时间处理类
  • 信息系统项目管理师第四版学习笔记——高级项目管理
  • MySQL建表操作和用户权限
  • TCP/IP(十一)TCP的连接管理(八)socket网络编程
  • 第五章 图
  • 深度学习实战:用Keras搭建深度学习网络做手写数字识别
  • 算法解析:LeetCode——机器人碰撞和最低票价
  • LeetCode刷题总结 - LeetCode 热题 100 - 持续更新
  • Spring是什么?为什么要使用Spring?
  • 自我监督学习日志
  • 配置CA证书
  • 计算机毕业设计选什么题目好?springboot 高校就业管理系统
  • 上海-华为全联接大会|竹云受邀参加华为云ROMAConnect行业生态联盟成立联合发布会
  • 走进GraalVM
  • spark读取hive表字段,区分大小写问题
  • UE4和C++ 开发-头文件(.h) 和实现文件(.cpp)区别
  • git介绍和安装、(git,github,gitlab,gitee介绍)、git工作流程、git常用命令、git忽略文件
  • go cpu、内存监控、性能分析:PProf
  • 计算机网络传输层知识总结·
  • vue使用ant design Vue中的a-select组件实现下拉分页加载数据