计算机视觉--距离变换算法

news2024/10/5 18:23:22

计算机视觉


文章目录

  • 计算机视觉
  • 前言
    • 距离变换
  • 总结


前言

计算机视觉CV是人工智能一个非常重要的领域。 在本次的距离变换任务中,我们将使用D4距离度量方法来对图像进行处理。通过这次实验,我们可以更好地理解距离度量在计算机视觉中的应用。希望大家对计算机视觉和图像处理有了更深入的了解。让我们一起来看看实际的计算结果和可视化效果吧!

距离变换是一种常用的方法,它可以帮助我们计算出每个像素点与最近的前景像素点之间的距离。这对于图像分析、目标检测和图像配准等任务至关重要。D4距离定义为两个像素点之间在水平和垂直方向上的绝对距离之和。通过这种度量方式,我们可以获得每个像素点到最近的前景像素点的距离。为了测试距离变换的效果,我们首先随机生成了一张8*8大小的图像,并随机选取了其中的10个像素点作为前景像素。前景像素用1表示,背景像素用0表示。接下来,我们实现了一个距离函数,用于计算两个像素点之间的D4距离。然后,我们通过遍历图像中的每个像素点,计算其与与其最近的前景像素点的距离,并将结果保存到一个距离矩阵中。最后,我们将原始图像和距离变换后的结果进行可视化展示。使用灰度图像表示原始图像,黑色像素点表示随机生成的前景像素点。而距离变换结果则使用“cool”颜色映射进行显示,较远的像素点呈现较浅的颜色,较近的像素点呈现较深的颜色。

距离变换

D4距离介绍: 像素p(x,y)和q(s,t)之间的D4距离定义为: = |x – s| + |y – t|
D4距离变换算法是一种常用的图像处理算法,用于计算图像中像素点与最近的前景像素点之间的距离。
在D4距离变换算法中,D4代表了四邻域距离度量。它仅考虑像素点之间在水平和垂直方向上的差异,而忽略了对角线方向上的差异。

算法步骤如下:

  1. 初始化一个与原始图像大小相同的距离矩阵,其中所有背景像素点的距离值为0。
  2. 从图像中选择一个前景像素点作为起点。
  3. 遍历图像中的每个背景像素点,并计算其到起点像素点的D4距离。
  4. 比较当前像素点与起点之间的距离与之前计算得到的最小距离,如果当前距离更小,则更新该像素点的距离值为当前距离。
  5. 重复第3步和第4步,直到遍历完所有的背景像素点。
  6. 选择下一个前景像素点作为起点,重复以上步骤,直到遍历完所有的前景像素点。
  7. 最终得到的距离矩阵即为距离变换后的结果,其中每个像素点的距离值表示该像素点到离它最近的前景像素点的距离。
import numpy as np
import matplotlib.pyplot as plt

image = np.random.randint(2, size=(8, 8))
print('原始图片:\n', image)

for i in range(10):
    x, y = np.random.randint(8, size=2)
    image[x, y] = 1
    
print('选取前景像素后的图片:\n', image)

# 定义距离接口
def dist(p1, p2, metric='D4'):
    if metric == 'D4':
        return abs(p1[0] - p2[0]) + abs(p1[1] - p2[1])
    elif metric == 'D8':
        return max(abs(p1[0] - p2[0]), abs(p1[1] - p2[1]))

# 生成距离矩阵
matrix = np.zeros_like(image)
for i in range(image.shape[0]):
    for j in range(image.shape[1]):
        # 背景像素的距离为 0
        if image[i, j] == 0:
            matrix[i, j] = 0
        else:  
            # 初始化为一个巨大的数字
            min_dist = 99999           
            for m in range(image.shape[0]):
                for n in range(image.shape[1]):
                    # 只计算背景像素的距离
                    if image[m, n] == 0:
                        d = dist((i, j), (m, n), metric='D4')
                        if d < min_dist:
                            min_dist = d
            matrix[i, j] = min_dist
            
print('距离变换后的结果:\n', matrix)

# 可视化显示
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.show()

plt.imshow(matrix, cmap='cool')
plt.title('Distance Transformed Image')
plt.colorbar()
plt.show()

在这里,我们使用灰度图像表示原始图像,黑色像素点表示随机生成的像素点。使用“cool”颜色映射可视化距离变换的结果。
在这里插入图片描述
在这里插入图片描述

本文介绍了计算机视觉中的距离度量,并使用随机生成的像素点进行了测试,并对计算结果进行了可视化展示。

通过上述代码,我们可以得到距离变换后的结果。在结果中,黑色像素点表示随机生成的前景像素点,其他颜色表示每个像素点到最近的前景像素点的距离。我们可以看到,距离变换后的图像可以清晰地展示出各个像素点到前景像素点的距离信息。较远的像素点呈现较浅的颜色,而较近的像素点呈现较深的颜色。

总结

距离度量在计算机视觉CV领域有着广泛的应用。如图像分割、图像配准、目标检测和目标跟踪等任务中,都需要计算像素之间的距离来对图像进行处理和分析。而距离变换则可以帮助我们更好地理解像素之间的关系和结构,并为后续的图像处理工作提供基础和参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1076787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flutter sdk提供完整页面的ui

1.完整ui页面 可以借鉴一些使用案例&#xff1a; return Placeholder();/// A widget that draws a box that represents where other widgets will one day /// be added. /// /// This widget is useful during development to indicate that the interface is /// not yet…

总结四:数据库(MySQL)面经

文章目录 一、SQL1、介绍一下数据库分页2、介绍一下SQL中的聚合函数3、表跟表是怎么关联的?4、说一说你对外连接的了解&#xff1f;5、说一说数据库的左连接和右连接&#xff1f;6、SQL中怎么将行转成列&#xff1f;7、谈谈你对SQL注入的理解&#xff1f;8、将一张表的部分数据…

车载激光雷达标定板在无人驾驶中的作用

在自动驾驶领域&#xff0c;激光雷达的作用主要是通过扫描周围环境&#xff0c;获取车辆行驶过程中路况和障碍物的位置和形状&#xff0c;并将数据和信号传递给自动驾驶系统&#xff0c;帮助其做出相应的驾驶决策。 激光雷达使其成为自动驾驶中不可或缺的组成部分。激光雷达可以…

Dremio:新一代数据湖仓引擎

Dremio数据湖引擎 1、什么是Dremio2、什么是数据湖仓2.1、数据湖仓的历史和演变 3、Dremio查询引擎&#xff08;Dremio Sonar&#xff09;3、Dremio特点1、唯一具有自助式SQL分析功能的数据湖仓2、数据完全开放&#xff0c;无锁定3、亚秒级性能&#xff0c;云数据仓库成本的1/1…

前后端分离计算机毕设项目之基于springboot+vue的房屋租赁系统《内含源码+文档+部署教程》

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

47 从前序与中序遍历序列构造二叉树

从前序与中序遍历序列构造二叉树 先序无法确定子树大小&#xff0c;中序找不到根&#xff1b;所以用先序找根&#xff0c;用中序找大小题解1 递归题解2 迭代 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同…

世界各国家地区3d地形图

1、GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图高级培训班 2、全流程R语言Meta分析核心技术 3、最新CMIP6数据处理及在气候变化、水文、生态等领域中的实践技术应用 4、WOFOST模型与PCSE模型实践技术应用 5、Biome-BGC生态系统模型与Python融合技术实践应用 6、基于…

Sqlserver查看表的主键,删除主键,修改主键

1.查看表的结构 EXEC sp_help 表名; 查询使用 sp_help 存储过程&#xff0c;它将返回有关表的详细信息&#xff0c;包括列名、数据类型、约束等。你可以在结果中查找带有 “PK” 标记的列&#xff0c;它们表示主键约束。 2.查看表的主键信息 EXEC sp_pkeys 表名; 查询使用 sp_…

直线导轨精度等级在设备中有什么影响?

直线导轨的精度选择是直线导轨应用中的重要环节&#xff0c;需要根据具体的应用场景和设备要求来选择合适的精度等级&#xff08;常见分3个等级&#xff1a;N/H/P&#xff09;。下面我们来详细了解一下直线导轨的精度选择。 1、精度等级的概念&#xff1a;直线导轨的精度等级是…

linux查看系统信息命令

1.查看linux内核版本 [rootmaster ~]# uname -r 3.10.0-123.el7.x86_64 [rootmaster ~]# uname -a Linux master 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux2.查看文件系统的磁盘大小和剩余空间大小 [rootmaster ~]# df -h …

手机没电用日语怎么说?你会吗?柯桥常用日语学习

手机没电在日语里可以表达为: 1. スマホの電池が切れた。 直接使用“電池が切れる”来表示电池没有电了。 2. スマホのバッテリーが空に15857575376なった。 “バッテリーが空になる”也是表示电量耗尽的常用表达。 3. 充電が必要だ。 “充電が必要”意思是需要充电。 4…

使用 Splashtop 驾驭未来媒体和娱乐

在当今时代&#xff0c;数字转型不再是可选项&#xff0c;而是必选项。如今&#xff0c;媒体与娱乐业处于关键时刻&#xff0c;正在错综复杂的创意、技术和远程协作迷宫之中摸索前进。过去几年发生的全球事件影响了我们的日常生活&#xff0c;不可逆转地改变了行业的运作方式&a…

Fuzz测试 发现软件中的隐患和漏洞的秘密武器

0x01 什么是模糊测试 模糊测试&#xff08;Fuzz Testing&#xff09;是一种广泛用于软件安全和质量测试的自动化测试方法。它的基本思想是向输入参数或数据中注入随机、不规则或异常的数据&#xff0c;以检测目标程序或系统在处理不合法、不正常或边缘情况下的行为。模糊测试通…

ctDNA助力难治性RAS野生型mCRC抗EGFR单抗再挑战优势人群筛选

ctDNA检测方便快捷、安全性好、可反复取样&#xff0c;在CRC精准治疗领域具有广阔的应用前景。动态ctDNA检测有望指导患者抗EGFR单抗治疗的“再挑战”&#xff0c;为患者带来更多希望。但最佳抗EGFR单抗再挑战策略、对比标准三线治疗的疗效差异及ctDNA检测在其中扮演的角色尚无…

popcount相关性质+从低往高的数位dp:CF1734F

https://www.luogu.com.cn/problem/CF1734F popcount有个性质&#xff1a;popcount(x)^popcount(y)popcount(x^y) 考虑数位dp&#xff0c;发现很难 然后我们发现可以从低往高dp&#xff08;当做套路&#xff09; 只不过是否达到上界变成是否超出去 #include<bits/stdc.h…

0Java基础

1.Java基础篇 1.1基本 a.JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a;Java Development Kit 的简称&#xff0c;Java 开发工具包&#xff0c;提供了 Java 的开发环境和运行环境。 JRE&#xff1a;Java Runtime Environment 的简称&#xff0c;Java 运行环境&#xff…

day01_基础

零、今日内容 1 jdk 2 idea使用 3 HelloWorld程序 4 变量 5 数据类型 6 String 一、JDK安装 JDK java开发工具包,敲代码的环境 1.1 卸载 控制面板 -> 卸载程序 -> 选择jdk,右键卸载 1.2 安装 注意: 现在安装的是JDK8版本,虽然最新的版本是21版本,但是工作市场中最流行的…

vue3+ts项目04-国际化

yarn add vue-i18n yarn add js-cookie yarn add types/js-cookiesrc下新建i18n文件夹&#xff0c;该文件夹下新建lang和pages文件夹&#xff0c; lang文件夹下新建en.ts // 定义内容 export default {router: {home: home,system: {system: system,menu: systemMenu,role: sy…

ubuntod安装datasophon问题记录

问题描述&#xff1a; 主机agent分发报红 解决步骤一&#xff1a; 修改datasophon-worker.tar.gz文件 解压/opt/datasophon/DDP/packages目录下的datasophon-worker.tar.gz文件修改datasophon-worker/bin目录下的datasophon-worker.sh文件 . /etc/profile解决步骤二&#xf…

非凸科技受邀出席源创会,探讨数据技术的未来发展

9月23日&#xff0c;由开源中国联合腾讯云TVP开展的“数据与前沿技术”源创会活动在成都顺利举行&#xff0c;非凸科技受邀出席&#xff0c;与业界专家们共同探讨了数据存储、数据分析、数据挖掘等前沿技术。 会上&#xff0c;非凸科技成都分公司研发总监赵海峰以“量化交易的数…