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

机器视觉初步6-1:基于梯度的图像分割

把基于梯度的图像分割单独拿出来。

文章目录

  • 一、图像梯度相关算子的原理
    • 1. Sobel算子
    • 2. Prewitt算子
    • 3. Roberts算子
  • 二、python和halcon算子实现
    • 1.python实现
    • 2.halcon实现

基于梯度的图像分割方法利用像素之间的梯度信息来进行图像分割。
梯度 1是图像中像素灰度值变化最快的方向,基于梯度的图像分割方法就是通过分析图像中像素的梯度信息来提取图像中的不同物体,实现图像分割的目的。
在这里插入图片描述

基于梯度的图像分割方法的基本思想是:
首先对输入的图像进行滤波、增强等预处理操作,以增强图像中物体的边缘信息;
然后计算每个像素的梯度值,通常包括水平梯度、垂直梯度和斜梯度三个分量;
最后根据梯度信息进行图像分割。具体来说,基于梯度的图像分割方法通常包括以下几个步骤:
1. 图像预处理:对输入的图像进行滤波、增强等预处理操作,以增强图像中物体的边缘信息。
2. 计算梯度:对每个像素计算其水平、垂直和斜梯度三个分量。
3. 阈值化:通过计算每个像素的梯度值,将梯度值小于某一阈值的像素设置为背景像素,将梯度值大于阈值的像素设置为前景像素。
4. 分割结果:根据阈值化后的结果,将每个像素分配到相应的物体类别中,实现图像分割。

基于梯度的图像分割方法的优点是速度快、计算量小,适用于处理大规模的图像数据。但是,该方法的缺点是对噪声敏感,需要进行适当的滤波和去噪处理。同时,该方法仅适用于物体边缘明显的图像,对于物体形状复杂的图像分割效果并不理想。

一、图像梯度相关算子的原理

在这里插入图片描述

1. Sobel算子

Sobel算子是一种用于检测图像中灰度级别变化的算子,尤其是在较小灰度变化时效果比较明显。它通过计算图像中每一点与周围八个点灰度值的差,并进行差分运算,从而得到图像梯度值。

2. Prewitt算子

Prewitt算子和Sobel算子的原理相似,它们都是通过计算图像中每一点与周围八个点灰度值的差,并进行差分运算2,从而得到图像梯度值。不同的是,Prewitt算子不仅计算了差分,而且进行了平方操作,从而使得梯度值在x和y方向上的结果是一致的。

3. Roberts算子

Roberts算子是一种二阶微分算子,它通过计算图像中每一点与周围九个点灰度值的差,并进行差分运算,从而得到图像梯度值。Roberts算子主要用于边缘检测,尤其是在图像的边缘处有较强的导数3

二、python和halcon算子实现

1.python实现

import cv2
import numpy as npdef sobel_gradient(img):# Sobel 算子gray_img = cv2.Sobel(img, cv2.CV_32F, 1, 0, ksize=3)edge_img = cv2.convertScaleAbs(gray_img)return edge_imgdef prewitt_gradient(img):# Prewitt 算子gray_img = cv2.Sobel(img, cv2.CV_32F, 1, 0, ksize=3)edge_img = cv2.convertScaleAbs(gray_img)return edge_imgdef roberts_gradient(img):# Roberts 算子gray_img = cv2.Sobel(img, cv2.CV_32F, 1, 0, ksize=3)edge_img = cv2.convertScaleAbs(gray_img)return edge_imgimg = np.zeros((500, 500, 3), np.uint8)
img[50:150, 50:150] = 255
cv2.imshow('image', img)sobel_gradient_img = sobel_gradient(img)
cv2.imshow('sobel_gradient_img', sobel_gradient_img)prewitt_gradient_img = prewitt_gradient(img)
cv2.imshow('prewitt_gradient_img', prewitt_gradient_img)roberts_gradient_img = roberts_gradient(img)
cv2.imshow('roberts_gradient_img', roberts_gradient_img)cv2.waitKey(0)
cv2.destroyAllWindows()

2.halcon实现

* Sobel 算子
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_display (Image)* Sobel 算子
[SobelX, SobelY] = sobel_x (Image, 'sobel', 1, 8)
dev_display (SobelX)* Prewitt 算子
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_display (Image)* Prewitt 算子
[PrewittX, PrewittY] = prewitt_x (Image, 'prewitt', 1, 8)
dev_display (PrewittX)* Roberts 算子
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_display (Image)* Roberts 算子
[RobertsX, RobertsY] = roberts_x (Image, 'roberts', 1, 8)
dev_display (RobertsX)

注释:


  1. 图像的梯度(Gradient)是一个矢量,用于描述图像中像素点值的变化速度。在图像处理中,梯度通常用于计算图像中的边缘,这是一种提取图像特征的方法。
    简单来说,梯度表示图像中像素值的变化,从一个特定的方向或方向组来看,像素值增加或减少的程度。例如,如果我们沿着图像中的水平方向(从左到右)移动,那么在这个方向上的像素值将会增加,因此在水平方向上的梯度值就会增加。相反,如果我们沿着垂直方向(从上到下)移动,那么在这个方向上的像素值将会减少,因此在垂直方向上的梯度值就会减少。
    在计算机视觉和图像处理中,梯度用于寻找图像中的边缘和纹理等特征。通过计算图像中每个像素点的梯度值,我们可以找到图像中的边缘或其他有用的信息,这些信息可以用于目标检测、图像分割和其他计算机视觉任务。 ↩︎

  2. 差分运算的基本原理:
    1 差分定义:对于给定的两个数组 A 和 B,A 的差分数组 D(A) 是将 A 中的元素分别与它们的前一个元素进行比较,并得出的新的数组。例如,考虑数组 A={3, 1, 5, 8},其差分数组为 D(A) = {2, 0, 3, 2}。
    差分运算可以通过以下两个基本步骤实现:
    a. 构造差分数组 D(A);
    b. 应用差分运算。
    2 差分运算的应用
    a. 时间序列分析:通过差分运算,可以分析和比较不同时间段内的数据变化。
    b. 数据结构:差分数组可以用于保持数据结构的稳定性,例如堆(heap)数据结构。
    c. 排序算法:快速排序(QuickSort)等算法可以利用差分数组实现。
    3 性质
    a. 差分数组的伪逆(pseudoinverse)是原始数组的逆矩阵。
    b. 在某些情况下,可以通过差分数组快速地计算原数组的值。
    总之,差分运算是一种在数学和计算机科学中处理数组的方法,通过对原数组的局部元素进行操作,得到相应的差分数组。
    差分运算可以应用于时间序列分析、保持数据结构稳定性、实现快速排序等任务。 ↩︎

  3. 图像边缘是指图像中灰度值突然变化的地方。导数是函数在某一点的切线斜率,它在图像处理中常用来描述图像边缘。
    计算图像边缘导数的方法如下:
    1.对于二值图像,边缘区域的像素值是最大值或最小值,可以使用固定阈值或自适应阈值将图像转换为二值图像。
    2.对于灰度图像,可以使用高斯滤波器来平滑图像并去除噪声。
    3.然后,可以使用梯度算子,如Sobel算子、Scharr算子或Prewitt算子来计算图像的边缘。
    4.梯度算子包括一个水平梯度和一个垂直梯度。水平梯度计算公式为:
    gradientH = 0.5 * abs(x - x_center)^2 + 0.5 * abs(y - y_center)^2
    其中,x 和 y 是图像中的像素坐标,x_center 和 y_center 是图像的中心。
    5.垂直梯度计算公式为:
    gradientV = 0.5* abs(x - x_center)^2 + 0.5 * abs(y + y_center)^2
    6.梯度算子可以用于边缘检测,并且可以通过设置不同的阈值来检测不同宽度和方向的边缘。
    7.对于多通道图像,可以使用类似的方法来计算每个通道的边缘,并将它们组合在一起以形成边缘图像。
    8.最后,可以将边缘图像转换为彩色图像,并通过卷积或阈值操作来提取图像中的边缘。 ↩︎

相关文章:

机器视觉初步6-1:基于梯度的图像分割

把基于梯度的图像分割单独拿出来。 文章目录 一、图像梯度相关算子的原理1. Sobel算子2. Prewitt算子3. Roberts算子 二、python和halcon算子实现1.python实现2.halcon实现 基于梯度的图像分割方法利用像素之间的梯度信息来进行图像分割。 梯度 1是图像中像素灰度值变化最快的…...

从0开始,精通Go语言Rest微服务架构和开发

说在前面 现在拿到offer超级难,甚至连面试电话,一个都搞不到。 尼恩的技术社区中(50),很多小伙伴凭借 “左手云原生右手大数据”的绝活,拿到了offer,并且是非常优质的offer,据说年…...

Sui x KuCoin Labs夏季黑客松|本周Workshop预告

自Sui x KuCoin Labs夏季黑客松推出以来已有四周的时间,期间收获了众多开发者的积极报名和热情参与。随着黑客松报名即将进入尾声,同期举办的Workshop也迎来了本周的最后一波。​本周的黑客松Workshop邀请到MoveEX和Mirror World的负责人作为嘉宾为大家带…...

从电源 LED 读取智能手机的秘密?

研究人员设计了一种新的攻击方法,通过记录读卡器或智能手机打开时的电源 LED,使用 iPhone 摄像头或商业监控系统恢复存储在智能卡和智能手机中的加密密钥。 众所周知,这是一种侧信道攻击。 通过密切监视功耗、声音、电磁辐射或执行操作所需…...

【Linux编辑器-vim使用】

目录 Linux编辑器-vim使用1.vim的基本概念2.vim的基本操作3.vim正常模式命令集4.vim末行模式命令集 Linux编辑器-vim使用 1.vim的基本概念 目前了解的vim有三种模式(其实有好多模式),分别是命令模式、插入模式和底行模式,各模式…...

安装Apache mysql php

目录 一.Apache网站服务 Apache——》静态页面处理——》将静态处理交给PHP Apache简介 安装Apache服务 ​编辑 安装软件思路 二.安装mysql数据库 1. 安装依赖包 2.创建程序用户管理 3.加压安装包 这边就安装完成了​编辑 重点来了 报错了 没有空间 我最后的解决 方法…...

【人工智能】— 神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略

【人工智能】— 神经网络、前向传播、反向传播 前向传播反向传播梯度下降局部最小值多层前馈网络表示能力多层前馈网络局限缓解过拟合的策略 前向传播和反向传播都是神经网络训练中常用的重要算法。 前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后…...

小文智能自定义变量详解

在小文交互场景设计时,有一个特殊功能,叫做自定义变量。有时,根据外呼对象的不同,需要对用户传达不同的内容,比如称呼、地址、公司名称等等。此时,就可以使用小文交互的自定义变量功能来实现对不同用户呼出…...

平面电磁波的反射与折射,极化滤波作用

目录 引言 反射定律和折射定律 反射系数和折射系数 平面电磁波在理想介质分界面上的全反射和全折射 全反射 全折射 极化滤波作用 平面电磁波在良导体上的反射与折射 引言 再复杂的电磁波我们都可以看作是很多平面电磁波的叠加 我们在前面介绍的时候,我们认…...

键盘当鼠标用

当鼠标坏掉又需要使用电脑时发现触控板也不能用这就很烦那么键盘当鼠标用教程来了 使用键盘当鼠标的步骤如下: 1. 按住“AltShiftNum Lock”快捷键,弹出鼠标键开启咨询框,点击“是”按钮。 小键盘的数字就是方向/和*就是左右键切换5是单击 …...

动态规划part9 | ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

文章目录 198.打家劫舍思路思路代码官方题解代码 213.打家劫舍II思路思路代码官方代码困难 337.打家劫舍III思路思路代码官方题解代码困难 今日收获 198.打家劫舍 198.打家劫舍 思路 dp含义,偷前i个房,切第i个房偷 dp[i]max(dp[i-2],dp[i-3])nums[i] …...

【k8s系列】一分钟搭建MicroK8s Dashboard

本文基于上一篇文章的内容进行Dashboard搭建,如果没有看过上一篇的同学请先查阅上一篇文章 k8s系列】使用MicroK8s 5分钟搭建k8s集群含踩坑经验 使用MicroK8s搭建Dashboard很简单,只需要在Master节点按照以下几步操作 1.启用Dashboard插件 microk8s en…...

ArcEngine二次开发0——入门(下载 部署 组件学习)

折腾一下ArcGIS Engine二次开发。 目录 1、开发环境配置2、部署一个ArcGIS Engine应用程序3、ArcObject组件学习4、报错及解决4、其他 1、开发环境配置 参考:https://blog.csdn.net/H48662654/article/details/113384150 (使用ArcEngine前,…...

人工智能---D分离

D分离(D-Separation)是一种用来判断变量是否条件独立的图形化方法。相比于非图形化方法,D-Separation更加直观,且计算简单。对于一个DAG(有向无环图)E,D-Separation方法可以快速的判断出两个节点…...

java spring cloud 企业工程项目管理系统源码-全面的工程项目管理

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈,内卷严重&#xff0c…...

2023最新软件测试面试题【1000道题含答案】

1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式PO设计模式数据驱动模式面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果,如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动化测…...

【目标跟踪】MOT数据集GroundTruth可视化

MOT数据集格式简介 MOT15数据集下载&#xff1a;https://pan.baidu.com/s/1foGrBXvsanW8BI4eybqfWg?pwd8888 以下为一行gt示例&#xff1a; 1,1,1367,393,73,225,1,-1,-1,-1 各列数据对应含义如下 <frame>,<id>,<bb_left>,<bb_top>,<bb_width&g…...

软件测试的概念与过程----学习软件测试前的思考

软件测试的概念与过程----学习软件测试前的思考 1、软件测试工作是做什么的&#xff1f;2、那我做软件测试拿到一个软件产品我应该从哪里测试&#xff0c;怎末开始工作&#xff1f;3、测试早做好还是晚一些做好&#xff1f;4、软件测试能将软件测试的一点问题都没有嘛&#xff…...

Streamlit基础教程

streamlit是什么 streamlit是一个开源的python库&#xff0c;它能够快速的帮助我们创建定制化的web应用&#xff0c;而且还非常便于和他人分享&#xff0c;特别是在机器学习和数据科学领域。整个过程不需要你了解任何前端的知识&#xff0c;包括html、css、javascript等&#x…...

内网穿透技术

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...