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

【论文复现】找出图像中物体的角点

在这里插入图片描述

📝个人主页🌹:Eternity._
🌹🌹期待您的关注 🌹🌹

在这里插入图片描述
在这里插入图片描述

❀ 找出图像中物体的角点

  • 概述
  • 算法原理
  • 演示效果
  • 核心逻辑
    • 使用方式
    • 配置环境
    • 直接运行
    • 更换图片运行
  • 参考文献

概述


本文复现论文A COMBINED CORNER AND EDGE DETECTOR中提出的图像中的物体角点检测算法,也称Harris算法。原文连接https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=88cdfbeb78058e0eb2613e79d1818c567f0920e2

该论文所提出的角点检测算法是计算机视觉领域的经典算法,至今仍在计算机视觉领域有着广泛的应用。

该方法对算力几乎没有任何要求,依据图像邻域内灰度值的分布特点来对图像中各区域的角点进行判断。不像深度学习需要依靠大量数据的训练且对数据集分布有依赖性,所以时至今日依然在工业界有着很高的应用价值。

本文所涉及的所有资源的获取方式:这里

算法原理


正如边缘在灰度图像中在某一个方向上会出现明显的灰度变化,角点在图像中往往是在两个方向上都出现明显的灰度变化。
在这里插入图片描述

如在此图中,红点标注处的角点在两个箭头方向的垂直方向上都有明显的灰度变化,两个红色箭头标注出了它的两个灰度变换边缘。

假设我们现在要检测的图片为I,在图像处理中,能够充分体现图像灰度变化特征的是它的方向导数, I x I_x Ix I y I_y Iy,分别代表图像I的水平方向导数与竖直方向导数。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

演示效果


在这里插入图片描述

在这里插入图片描述

核心逻辑


def HarrisCornerDetector(image,k=0.02):
# 读取图像
    # 将图像转换为numpy数组
    I= image

    I=np.array(I)

    sobel_x = np.array([[0, 0, 0], [-0.5, 0, 0.5], [0, 0, 0]])
    sobel_y=np.array([[0,0.5,0],[0,0,0],[0,-0.5,0]])

    # 对图像进行水平方向的卷积
    I_x = convolve2d(I, sobel_x, mode="same", boundary="symm")
    I_y=convolve2d(I,sobel_y,mode='same',boundary='symm')


    I2_x=I_x**2
    I2_y=I_y**2
    Ix_Iy=I_x*I_y

    sobel=np.array([[1,1,1],[1,1,1],[1,1,1]])

    A=convolve2d(I2_x,sobel,mode="same",boundary="symm")
    B=convolve2d(Ix_Iy,sobel,mode="same",boundary="symm")
    C=convolve2d(I2_y,sobel,mode="same",boundary="symm")

    R=(A*C-B**2)-k*(A+C)**2

    R_max=np.max(R[1:-1,1:-1])

    C=R

    C[C<=(0.2*R_max)]=0
    C[C>(0.2*R_max)]=1

    return C

使用方式


基础镜像
python:3.9.7

配置环境


解压后进入HarrisCornerDetector项目路径下
运行以下命令:

pip install -r requirements.txt

直接运行


python main.py

即可看到视频中示例图片的角点检测效果。

更换图片运行


修改main.py文件里的默认图片路径
Description

将"data/rice.png"更改为你自己的图片路径即可。

同时,我也找了第二张示例图片放在了data路径下,将"data/rice.png"更换为"data/1.webp",就可以看到演示图片中棋盘的角点检测效果。

参考文献


[1] Harris C, Stephens M. A combined corner and edge detector[C]//Alvey vision conference. 1988, 15(50): 10-5244.


编程未来,从这里启航!解锁无限创意,让每一行代码都成为你通往成功的阶梯,帮助更多人欣赏与学习!

更多内容详见:这里


http://www.kler.cn/a/445881.html

相关文章:

  • CLION中运行远程的GUI程序
  • 合并比对学习资料
  • js html转pdf
  • 使用光耦合器测量电压:实用指南
  • 解锁BL后的K40降级
  • Ansible 批量管理华为 CE 交换机
  • 热更新解决方案4——xLua热补丁
  • [react] 优雅解决typescript动态获取redux仓库的类型问题
  • ES倒排索引
  • 全链路触达,Klaviyo 助力跨境电商打造数据驱动的智能化营销体验
  • 区间预测 | MATLAB实现QRDNN深度神经网络分位数回归时间序列区间预测
  • PDF无法打印!怎么办?
  • 数据结构_双向循环链表实战
  • 大数据:HDFS:特性、架构
  • C# 中的闭包
  • 【C++】C++中的lambda函数详解
  • Unity ECS和OOP优劣对比
  • 数据结构泛谈
  • git以及gitee仓库注册创建
  • 38.在 Vue 3 中使用 OpenLayers 导出地图为 PDF
  • C#.net CAD二次开发调试时进行日志记录并输出错误
  • 【Python】【数据分析】深入探索 Python 数据可视化:Plotly 绘图库全面解析
  • 使用LS-DYNA对秸秆进行切削仿真(记录版)
  • 免费开源!推荐一款网页版数据库管理工具!
  • edge_tts 实现实时流式语音播放输出
  • 安装指定版本的python这里以3.11为例子