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

石家庄科技网站建设ppt制作平台

石家庄科技网站建设,ppt制作平台,免费cms内容管理系统,做网站的公司金坛边缘检测是计算机视觉与图像处理领域的基石技术,其核心目标是通过识别图像中亮度、色彩或纹理的突变区域,提取物体轮廓与结构信息。随着工业自动化、自动驾驶、医学影像分析等领域的快速发展,边缘检测技术经历了从传统算子到深度学习模型的演…

边缘检测是计算机视觉与图像处理领域的基石技术,其核心目标是通过识别图像中亮度、色彩或纹理的突变区域,提取物体轮廓与结构信息。随着工业自动化、自动驾驶、医学影像分析等领域的快速发展,边缘检测技术经历了从传统算子到深度学习模型的演进,并在实际应用中不断崭露头角。


一、技术发展简史:从传统算子到深度学习

1.1 传统算子的时期(1960s-1990s)

早期边缘检测技术基于数学微分运算,通过构建一阶或二阶导数算子捕捉灰度突变。

  • Roberts算子(1963):利用对角差分检测边缘,计算简单但对噪声敏感。
  • Sobel与Prewitt算子(1970s):引入方向性梯度计算,通过3×3卷积核增强抗噪性(如Sobel的加权梯度计算)。
  • Canny算法(1986):提出多阶段优化框架(高斯滤波、梯度计算、非极大值抑制、双阈值连接),成为工业检测的黄金标准。

1.2 多尺度与形态学方法(2000s-2010s)

  • Laplacian of Gaussian(LoG):结合高斯平滑与二阶导数,解决噪声与边缘定位的矛盾。
  • 小波变换与模糊理论:通过频域分解与模糊隶属度增强复杂纹理边缘的鲁棒性。
  • 形态学方法:基于集合论结构元素对图像进行形状分析。

1.3 深度学习(2016至今)

  • HED(Holistically-Nested Edge Detection):首次将卷积神经网络(CNN)用于端到端边缘预测,实现多尺度特征融合。
  • RCN与PiDiNet:轻量化网络设计(如PiDiNet仅1M参数)支持实时检测,在BSDS500数据集上超越人类标注精度。
  • Transformer与多任务模型:EDTER等模型通过全局注意力机制提升长程边缘连续性。

二、传统算法简介与示例

2.1 Roberts算子

Roberts算子通过计算对角像素差异捕捉边缘,其核心为两个2×2卷积核:
K x = [ 1 0 0 − 1 ] , K y = [ 0 1 − 1 0 ] K_x = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}, \quad K_y = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} Kx=[1001],Ky=[0110]

代码实现

import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像并灰度化
img = cv2.imread('../sports.jpg', cv2.IMREAD_GRAYSCALE)# Roberts算子卷积核
kernel_x = np.array([[1, 0], [0, -1]], dtype=np.float32)
kernel_y = np.array([[0, 1], [-1, 0]], dtype=np.float32)# 计算梯度
grad_x = cv2.filter2D(img, -1, kernel_x)
grad_y = cv2.filter2D(img, -1, kernel_y)# 梯度幅值合并与二值化
grad = np.abs(grad_x) + np.abs(grad_y)  # 或使用平方根:np.sqrt(grad_x**2 + grad_y**2)
edges = np.uint8(np.where(grad > 30, 255, 0))  # 阈值设为30# 显示
plt.subplot(121), plt.imshow(img, cmap='gray'),
plt.title('Original Image'), plt.axis('off')plt.subplot(122), plt.imshow(edges, cmap='gray'),
plt.title('Roberts Edges'), plt.axis('off')plt.tight_layout()
plt.show()

在这里插入图片描述

TIPS:

  • 直接使用np.abs()简化计算,避免负值截断问题;
  • 阈值选择需根据塑料表面反光强度调整(如透明PET瓶建议阈值15-50);
  • 对椒盐噪声敏感,需预先中值滤波处理。

2.2 Sobel算子实现

Sobel算子是一种基于一阶导数的边缘检测算法,通过计算图像水平和垂直方向的梯度幅值来定位边缘。其核心优势在于:

  1. 抗噪性:采用3×3高斯加权核,抑制高频噪声干扰
  2. 方向性:可分离计算X/Y方向梯度(常用于边缘方向估计)

数学表达式:
G x = [ − 1 0 1 − 2 0 2 − 1 0 1 ] ∗ I , G y = [ − 1 − 2 − 1 0 0 0 1 2 1 ] ∗ I G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} * I, \quad G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} * I Gx= 121000121 I,Gy= 101202101 I
边缘强度: G = G x 2 + G y 2 G = \sqrt{G_x^2 + G_y^2} G=Gx2+Gy2

代码实现

import cv2
import numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('../sports.jpg', cv2.IMREAD_GRAYSCALE)# Sobel梯度计算
grad_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
grad_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)# 归一化梯度幅值
grad_mag = np.sqrt(grad_x ** 2 + grad_y ** 2)
grad_mag = cv2.normalize(grad_mag, None, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8U)# 动态阈值处理
_, edges = cv2.threshold(grad_mag, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 可视化对比
plt.figure(figsize=(12, 4))
plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original')
plt.subplot(132), plt.imshow(grad_mag, cmap='jet'), plt.title('Gradient Magnitude')
plt.subplot(133), plt.imshow(edges, cmap='gray'), plt.title('Sobel Edges')
plt.show()

在这里插入图片描述

2.3 Prewitt算子

Prewitt算子是一种基于一阶导数的边缘检测方法,与Sobel算子的主要区别在于均匀权重核设计,其特点包括:

  1. 计算效率高:核内无高斯加权,仅使用均匀权重(适合嵌入式设备)
  2. 方向敏感:对水平/垂直/对角边缘具有明确响应
  3. 噪声敏感:未内置平滑处理,需配合预处理使用

数学表达式:
K x = [ − 1 0 1 − 1 0 1 − 1 0 1 ] , K y = [ − 1 − 1 − 1 0 0 0 1 1 1 ] K_x = \begin{bmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{bmatrix}, \quad K_y = \begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix} Kx= 111000111 ,Ky= 101101101
边缘强度: G = ∣ G x ∣ + ∣ G y ∣ G = |G_x| + |G_y| G=Gx+Gy (简化计算,避免平方根耗时)

例子

import cv2
import numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('../sports.jpg', cv2.IMREAD_GRAYSCALE)# Prewitt核计算
kernel_x = np.array([[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]], dtype=np.float32)
kernel_y = np.array([[-1, -1, -1], [0, 0, 0], [1, 1, 1]], dtype=np.float32)
grad_x = cv2.filter2D(img, cv2.CV_64F, kernel_x)
grad_y = cv2.filter2D(img, cv2.CV_64F, kernel_y)# 梯度幅值归一化与自适应阈值
grad_mag = np.abs(grad_x) + np.abs(grad_y)
grad_mag = cv2.normalize(grad_mag, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
_, edges = cv2.threshold(grad_mag, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 形态学后处理(闭合断裂边缘)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
edges = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel, iterations=1)# 可视化对比
plt.figure(figsize=(12, 4))
plt.subplot(141), plt.imshow(img, cmap='gray'), plt.title('Original Image')
plt.subplot(142), plt.imshow(grad_x, cmap='jet'), plt.title('X Gradient')
plt.subplot(143), plt.imshow(grad_y, cmap='jet'), plt.title('Y Gradient')
plt.subplot(144), plt.imshow(edges, cmap='gray'), plt.title('Prewitt Edges')
plt.tight_layout()
plt.show()

在这里插入图片描述

2.4 Canny算法

技术要点:高斯核尺寸(5×5)平衡噪声抑制与细节保留,双阈值(50,150)需根据材质反光特性调整。

import cv2
import numpy as np
import matplotlib.pyplot as plt# 图像读取与预处理
img = cv2.imread('../sports.jpg', cv2.IMREAD_GRAYSCALE)
img_blur = cv2.GaussianBlur(img, (5, 5), 1)# Canny边缘检测(双阈值自适应)
edges = cv2.Canny(img_blur, 50, 150)# 边缘连接优化
kernel = np.ones((3, 3), np.uint8)
edges = cv2.dilate(edges, kernel, iterations=1)
# 显示
plt.subplot(121), plt.imshow(img, cmap='gray'),
plt.title('Original Image'), plt.axis('off')plt.subplot(122), plt.imshow(edges, cmap='gray'),
plt.title('Canny Edges'), plt.axis('off')plt.tight_layout()
plt.show()

在这里插入图片描述

http://www.dtcms.com/a/471143.html

相关文章:

  • 如何自建网站做淘客常州网站专业制作
  • 纯分享!2026届计算机毕业设计选题全攻略(选题+技术栈+创新点+避坑),这80个题目覆盖所有方向,计算机毕设选题大全收藏
  • 网安面试题收集(2)
  • 西宁建设网站运维兼职平台
  • Java--网络编程(一)
  • 购物网站建设教程中国十大网站建设公司排名
  • web后端开发——原理
  • 如何把网站放在根目录300m空间够用吗 wordpress
  • 上海高端网站公司哪家好网站意识形态建设
  • 软件设计师-计算机网络-IP地址
  • 5000人网站开发交通建设集团网站
  • 谁分享一个免费网站2021discuz论坛门户网站模板
  • 从入门到精通【Redis】初识Redis集群(Cluster)
  • IDF 定时器
  • 怎么做网站引流做网站服务器需要自己提供吗
  • 烟台市牟平区建设局网站石家庄今天最新新闻头条
  • 天津市做网站的公司有哪些ppt模板免费下载完整版免费网站
  • “数据化学习者”的存在论阐释:量化自我对学习主体性的形塑与异化
  • UG NX二次开发(Python)-tag_t转换为int
  • HOW - 如何使用 bundle-analyzer 工具优化包体积
  • 手机站建设o2o商城网站系统开发
  • 国产三维CAD皇冠CAD(CrownCAD)在「汽车零部件」建模教程:发动机零件
  • 中国网站的建设无锡企业做网站
  • systemd-journald和rsyslogd日志配置详解
  • figma打开编辑器时发生错误
  • 网站备案有效期知乎问答网站开发教程
  • ArkTS 与 TypeScript:鸿蒙生态下的语言演进与实践指南
  • AI 赋能 IBMS 集成系统:从 “数据集成中枢” 到 “智慧决策大脑” 的跃升
  • 做医疗网站颜色选择杭州网页设计招聘网
  • 力扣面试经典150题day3第五题(lc69),第六题(lc189)