news 2026/4/24 16:10:36

从‘连连看’到图像分割:聊聊像素间距离的几种算法(欧式、街区、棋盘距离)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从‘连连看’到图像分割:聊聊像素间距离的几种算法(欧式、街区、棋盘距离)

从‘连连看’到图像分割:聊聊像素间距离的几种算法

小时候玩"连连看"游戏时,我们总是寻找相同图案之间的最短路径。有趣的是,计算机处理图像时也在做类似的事情——只不过它计算的是像素之间的距离。这种距离度量看似简单,却影响着图像放大是否清晰、边缘检测是否准确,甚至决定了AI能否正确识别物体。今天,我们就从游戏规则出发,揭开欧式距离、街区距离和棋盘距离的神秘面纱。

1. 像素世界的"连连看"规则

想象一张由无数小方格组成的网格纸,每个格子代表一个像素。当我们说"两个像素相邻"时,其实是在定义它们之间的连接规则——就像"连连看"中允许直线连接还是可以拐弯。

1.1 基础连接方式:4邻接与8邻接

4邻接就像城市里的十字路口,只允许上下左右移动:

# 4邻接坐标偏移量 offsets = [(-1,0), (1,0), (0,-1), (0,1)]

8邻接则增加了对角线移动的自由度,类似国际象棋中的皇后走法:

# 8邻接坐标偏移量 offsets = [ (-1,-1), (-1,0), (-1,1), (0,-1), (0,1), (1,-1), (1,0), (1,1) ]

注意:实际应用中还需考虑像素灰度值是否在允许的邻接集合V内

1.2 当8邻接遇上迷宫困境

8邻接虽然灵活,却可能产生路径二义性。如下图所示,中心像素到右上角存在两条等价路径:

路径1:右→上 路径2:上→右

这种不确定性会导致边缘检测出现"毛刺"。就像玩"连连看"时如果允许任意拐弯,可能会找到多条不合逻辑的连接路径。

2. 距离度量的三种"尺子"

2.1 欧式距离:最自然的测量方式

欧式距离就是我们熟悉的直线距离公式:

D = √[(x₂-x₁)² + (y₂-y₁)²]

典型应用场景

  • 图像放大时的双三次插值
  • 高斯模糊核的计算
  • 特征空间中的相似度度量

有趣现象:在Photoshop中放大图片时,质量选择"两次立方"就是基于欧式距离的加权计算。

2.2 城市街区距离:的士司机的计价器

得名于曼哈顿的方格式街区布局,计算方式为:

D = |x₂-x₁| + |y₂-y₁|

为什么重要

  • 形态学操作(腐蚀/膨胀)的基础
  • 计算效率比欧式距离高30-50%
  • 生成的距离变换图具有菱形特征
对比维度欧式距离街区距离
计算复杂度较高(含平方根)低(仅加减法)
几何形状圆形菱形
适用场景精确测量快速估算

2.3 棋盘距离:国王的移动法则

取水平和垂直方向的最大值:

D = max(|x₂-x₁|, |y₂-y₁|)

独特优势

  • 计算速度最快(比较操作)
  • 生成方形影响区域
  • 适用于等向性处理

在围棋程序中,判断两个棋子是否"紧挨"就是典型的棋盘距离应用。

3. 解决二义性的m邻接方案

3.1 m邻接的智能折中

m邻接的判定规则:

  1. 首先满足4邻接条件
  2. 或者在对角相邻时,确保没有其他V值像素形成替代路径
def is_m_adjacent(p, q, V): if is_4_adjacent(p,q,V): return True if is_diagonal(p,q) and not has_alternative_path(p,q,V): return True return False

3.2 实际应用案例

在医疗影像分析中,m邻接帮助准确分割相互接触的细胞:

  1. 避免将紧贴的细胞误判为同一区域
  2. 保持细胞边界的光滑性
  3. 减少后续分析的假阳性结果

4. 从理论到实践:距离度量的现代应用

4.1 深度学习中的距离变换

现代图像分割网络(如U-Net)在预处理阶段常使用距离变换:

  1. 将二值掩膜转换为距离图
  2. 为网络提供几何先验知识
  3. 提升小目标检测的敏感性
# 使用OpenCV实现距离变换 import cv2 dist_transform = cv2.distanceTransform(binary_img, cv2.DIST_L2, 3)

4.2 实时系统中的优化选择

在自动驾驶的视觉系统中,不同距离度量的选择会显著影响性能:

算法模块推荐距离原因
障碍物检测街区距离计算速度快
车道线识别欧式距离精度要求高
紧急制动棋盘距离最坏情况评估

4.3 游戏开发中的创意应用

《纪念碑谷》等游戏利用距离度量的视觉错觉:

  • 用街区距离计算看似相连实则分离的路径
  • 通过调整邻接规则创造不可能图形
  • 在2D画面中营造3D空间感

在Unity中实现特殊邻接效果的伪代码:

void UpdateAdjacencyRules() { if (useNonEuclidean) { distanceMetric = ChessboardDistance; } else { distanceMetric = EuclideanDistance; } }

理解这些基础概念后,下次当你的手机相册自动识别人脸,或是游戏渲染出逼真场景时,你会知道其中都有这些小小像素距离算法在默默发挥作用。就像"连连看"的简单规则背后,藏着对整个图像世界的理解方式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 16:09:26

3分钟搞定B站缓存视频转换:免费m4s转MP4工具终极指南

3分钟搞定B站缓存视频转换:免费m4s转MP4工具终极指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经为B站缓存视频无法在…

作者头像 李华
网站建设 2026/4/24 16:09:25

DNF搬砖脚本防封指南:图色框架的实战避坑与行为模拟优化

DNF搬砖脚本防封指南:图色框架的实战避坑与行为模拟优化 在游戏自动化领域,图色识别脚本因其相对较低的技术门槛和较高的适应性,成为许多开发者的首选方案。然而随着游戏厂商反作弊系统的不断升级,如何让脚本行为更接近真人操作&a…

作者头像 李华
网站建设 2026/4/24 16:08:30

统信UOS下三种软件安装方式全对比:deb包、apt源与源码编译怎么选?

统信UOS下三种软件安装方式全对比:deb包、apt源与源码编译怎么选? 在统信UOS专业版系统中,软件安装方式的选择往往决定了后续维护的便捷性、系统稳定性以及性能表现。对于系统管理员和架构师而言,面对内网部署、特定版本需求或性能…

作者头像 李华
网站建设 2026/4/24 16:04:20

生成式AI技术解析与商业应用实践

1. 生成式AI的商业化浪潮:从技术突破到产业落地过去一年,生成式AI(GenAI)正在以惊人的速度重塑商业世界。作为深度参与过多个企业级AI项目的技术顾问,我亲眼见证了这项技术从实验室Demo到实际产出的蜕变过程。不同于传…

作者头像 李华