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

边缘检测与阈值分割

Canny

[1] Canny Edge Detection. https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html
[2] OpenCV Edge Detection ( cv2.Canny ). https://pyimagesearch.com/2021/05/12/opencv-edge-detection-cv2-canny/

由John F. Canny提出
1、由于边缘检测容易受噪声影响,采用Gaussian空间滤波器去噪
2、采用Sobel核求图像水平与垂直方向的导数Gx,GyG_x, G_yGx,Gy
x:[−101−202−101],y:[−1−2−1000121]x: \begin{bmatrix} -1&0&1 \\ -2&0&2 \\ -1&0&1 \end{bmatrix}, y: \begin{bmatrix} -1&-2&-1 \\ 0&0&0 \\ 1&2&1 \end{bmatrix}x:121000121,y:101202101
3、计算边缘的梯度(G,θ)(G,\theta)(G,θ)
幅值 G=Gx2+Gy2G = \sqrt{G_x^2 + G_y^2}G=Gx2+Gy2
方向 θ=tan−1(Gy/Gx)\theta =tan^{-1}(G_y/G_x)θ=tan1(Gy/Gx)
注:梯度是一个向量,包含导数值以及求导方向;二维函数上的一点有多个求导方向,求出的导数值也各不相同,梯度的幅值即最大的导数值(方向导数)。
4、非局部极大值抑制
图像上每一点都一个梯度值与梯度方向
通过插值,求解该点梯度方向上的前后两点的梯度值
对比该点的梯度值与求出的前后两点梯度值,如果该点是极大值,则保留,否则置0
遍历所有点,便求出图像边缘上的所有点
5、滞后阈值法
高于大阈值的为边缘上的点
小于小阈值的不是边缘上的点
位于两个阈值中间的,判断其与已确定的边缘是否连通,如果是,则其也是边缘上的点,否则,不是边缘上的点

注:认为梯度方向与边缘垂直

反锐化掩膜与锐化掩膜

[1] 【图像锐化】非锐化掩模 USM(Unsharpen Mask)与锐化掩模 SM(Sharpen Mask. http://t.csdn.cn/54TvN.

提取图像高频信息,将其与图像叠加进行边缘增强

H: high pass filter
L: low pass filter
锐化掩膜 I1=I0+w∗H(I0)I_1 = I_0 + w*H(I_0)I1=I0+wH(I0)
反锐化掩膜 I1=I0+(I0−w∗L(I0))/(1−w)I_1 = I_0 + (I_0 - w*L(I_0))/(1-w)I1=I0+(I0wL(I0))/(1w)
注:∗*表示卷积

LoG,DoG

[1] 图像特征之LoG算子与DoG算子. https://senitco.github.io/2017/06/20/image-feature-LoG-DoG/.

将Laplace算子作用于图像:∇2I=Ixx+Iyy\nabla^2 I = I_{xx} + I_{yy}2I=Ixx+Iyy
作用:突出图像点,线和边缘,抑制均匀和平滑变化的区域

由于微分运算对噪声敏感,先将图像进行高斯平滑滤波,再应用Laplace算子
LoG:∇2(G∗I)=(∇2G)∗I\nabla^2 (G*I) = (\nabla^2 G) * I2(GI)=(2G)I

由于Gxx+Gyy=kGσG_{xx} + G_{yy} = k G_\sigmaGxx+Gyy=kGσ,因此可以用DoG代替LoG
DoG:G(σ1)∗I−G(σ2)∗I=(G(σ1)−G(σ2))∗IG(\sigma_1)*I - G(\sigma_2)*I = (G(\sigma_1) - G(\sigma_2))*IG(σ1)IG(σ2)I=(G(σ1)G(σ2))I

OSTU算法

[1] Ostu(大津法)二值化图像算法/最佳全局阈值. http://t.csdn.cn/pVHqD.
[2] 吴 熙, 钱盛友. 基于LoG 算子的图像边缘增强算法的改进.

灰度图像IijI_{ij}Iij的均值与方差
均值 μ=1MNΣiIij\mu = \frac{1}{MN} \Sigma_i I_{ij}μ=MN1ΣiIij
方差 σ2=1MNΣiΣj(Iij−μ)2\sigma^2 = \frac{1}{MN} \Sigma_i \Sigma_j (I_{ij} - \mu)^2σ2=MN1ΣiΣj(Iijμ)2
注:图像的均值就是期望

灰度图像由像素值TTT可分为前景与背景 I=I1+I2I = I_1 + I_2I=I1+I2
类间方差 σB2=c1σ2(I1)+c2σ2(I2)\sigma^2_B = c_1 \sigma^2(I_1) + c_2 \sigma^2(I_2)σB2=c1σ2(I1)+c2σ2(I2)
类内方差 σW2=c1(μ(I1)−μ(I))2+c2(μ(I2)−μ(I))2\sigma^2_W = c_1 (\mu(I_1) - \mu(I))^2 + c_2 (\mu(I_2) - \mu(I))^2σW2=c1(μ(I1)μ(I))2+c2(μ(I2)μ(I))2
其中,c1=N(I1)/N(I),c2=N(I2)/N(I)c_1 = N(I_1)/N(I), c_2 = N(I_2)/N(I)c1=N(I1)/N(I),c2=N(I2)/N(I)NNN为像素计数函数
σ2=σB2+σW2\sigma^2 = \sigma^2_B + \sigma^2_Wσ2=σB2+σW2

OSTU算法
遍历图像灰度直方图的所有像素作为TTT,取使得类间方差最大与类内方差最小的TTT作为最终划分图像的像素值
T=argmax(σB2(T))T = argmax(\sigma^2_B(T))T=argmax(σB2(T))
T=argmin(σW2(T))T = argmin(\sigma^2_W(T))T=argmin(σW2(T))
文献[2]采用的是:
T=argmax(σB2(T)/σW2(T))T = argmax(\sigma^2_B(T)/\sigma^2_W(T))T=argmax(σB2(T)/σW2(T))

相关文章:

边缘检测与阈值分割

Canny [1] Canny Edge Detection. https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html [2] OpenCV Edge Detection ( cv2.Canny ). https://pyimagesearch.com/2021/05/12/opencv-edge-detection-cv2-canny/ 由John F. Canny提出 1、由于边缘检测容易受噪声影响&…...

QQ空间无敌装逼,复制下面的任一代码粘贴即可出现意想不到的图案。

复制下面的任一代码粘贴即可出现意想不到的图案。 打赏代码: [em]e10033[/em]{uin:123,nick: 打赏了你一个冰淇淋,who:1} [em]e10033[/em] 打赏了100000000000.00元红包 [em]e10011[/em] 赞代码:{uin:0000,nick: xx、xx、xx、xx、xx、xx、xx、xx、xx、xx、xx、x…...

必看!总结5种JavaScript异步解决方案

1.回调 回调简单地理解为一个函数作为参数传递给另一个函数,回调是早期最常用的异步解决方案之一。 回调不一定是异步的,也不直接相关。 举个简单的例子: function f1(cb) {setTimeout(() > {cb && cb();}, 2000); }f1(() >…...

JUC并发编程高级篇第四章之ThreadLocal(人手一份,天下安)

文章目录1、ThreadLocal的简介1.1、常见的面试题(也是本次的讲解的内容)1.2、什么是ThreadLocal1.3、ThreadLocal的所用1.4、没有出现ThreadLocal前后的变化1.5、ThreadLocal代码示例1.6、阿里巴巴对ThreadLocal的使用要求1.7、ThreadLocal的源码分析2、ThreadLocal…...

dump 定位分析

在缺少pdb的时候如何分析dump? windbgidaWindbg定位崩溃位置 通过windbg打开dump,并且分析dump !analyze -v 分析: 分析dump: !analyze -v错误原因:读取空指针错误线程:00001e04,可通过命令…...

(十二)排序算法-插入排序

1 基本介绍 1.1 概述 插入排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,…...

elasticsearch 认知

1.大数据领域需要解决以下三个问题 如何存储数据 传统的关系数据库(MySQL、Oracle、和Access等)主导了20世纪的数据存储模式,但当数据量达到太字节级,甚至拍字节级时,关系型数据库表现出了难以解决的瓶颈问题。为了解决…...

《人体地图》笔记

《人体地图》 坂井建雄 著 孙浩 译 腹部通向大腿的隧道 腹部与大腿的分界点是大腿根部,即是腹股沟。 腹壁肌肉连结在腹股沟韧带上,腹壁肌肉包括三层,分别为腹外斜肌、腹内斜肌和腹横肌,每块肌肉都有一个张开的小孔,…...

java基础集合面试题

什么是集合 集合就是一个放数据的容器,准确的说是放数据对象引用的容器 集合类存放的都是对象的引用,而不是对象的本身 集合类型主要有3种:set(集)、list(列表)和map(映射)。 集合的特点 集合的特点主要有如下两点&…...

Vue学习-Vue入门

Vue学习 一、Vue入门 1、 引入Vue Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库…...

【项目】bxg基于SaaS的餐掌柜项目实战(2023)

基于SaaS的餐掌柜项目实战 餐掌柜是一款基于SaaS思想打造的餐饮系统,采用分布式系统架构进行多服务研发,共包含4个子系统,分别为平台运营端、管家端(门店)、收银端、小程序端,为餐饮商家打造一站式餐饮服务…...

灌区流量监测设备-中小灌区节水改造

系统概述 灌区信息化管理系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进行远程控制,实现了信息的测量、统计、分析、控制、调度等功能。为灌区管理部门科学决策提供了依据&#xf…...

SpringBoot2核心功能 --- 指标监控

一、SpringBoot Actuator 1.1、简介 未来每一个微服务在云上部署以后&#xff0c;我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景&#xff0c;使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。 <dependency><gro…...

python实战应用讲解-【numpy数组篇】常用函数(三)(附python示例代码)

目录 Python numpy.repeat() Python numpy.tile() Python numpy.asarray_chkfinite() Python numpy.asfarray() Python numpy.asfortranarray() Python numpy.repeat() Python numpy.repeat()函数重复数组中的元素 – arr. 语法 : numpy.repeat(arr, repetitions, axis …...

DIN论文翻译

摘要 在电子商务行业&#xff0c;利用丰富的历史行为数据更好地提取用户兴趣对于构建在线广告系统的点击率(CTR)预测模型至关重要。关于用户行为数据有两个关键观察结果&#xff1a;i) 多样性(diversity)。用户在访问电子商务网站时对不同种类的商品感兴趣。ii) 局部激活(local…...

python列表,元组和字典

1、python列表 1.1.列表的定义 list是一种有序的集合、基于 链表实现,name[ ] ,全局定义:list2list([ ])。 1.2下标索引 python不仅有负索引也有正索引。正索引从0开始,负索引从-1开始。这两个可以混用,但指向还是那个位置 a[0]a[-9]//length为10的数组a1.3列表的切片 列表可…...

300元左右的蓝牙耳机哪个好?300左右音质最好的蓝牙耳机

无线耳机是人们日常生活中必不可少的设备&#xff0c;无论是听音乐化石看电影都能获得身临其境的感觉&#xff0c;由于科技真在发展中&#xff0c;不断地的发生变化&#xff0c;百元价位就可以感受到不错的音色&#xff0c;下面小编整理了几款300左右音质表现不错的蓝牙耳机。 …...

【消息队列】聊一下生产者消息发送流程

消息发送流程 1.生产者main线程调用send发送消息&#xff0c;先走拦截器&#xff0c;然后会将消息进行序列化&#xff0c;然后选择对应的分区器&#xff0c;将消息发送到RecordAccumulator中&#xff0c;默认是32m 2.Sender线程会异步读取&#xff0c;要不数据达到batch的大小 …...

特斯拉和OpenAI的加持,马斯克简直人生赢家

赢家已定 商人行事&#xff0c;最重要的因素之一是利益驱动。这里&#xff0c;最服“马斯克”。 以马斯克为首的特斯拉公司周日宣布&#xff0c;将在上海新建一家超级工厂&#xff0c;专门生产该公司的储能产品Megapack。签约的特斯拉储能超级工厂项目也是该公司在美国本土以…...

优维低代码:第三方接口接入

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 连载…...

S32G2汽车网关实战(四):IPCF核间通信机制深度解析与应用

1. IPCF核间通信机制基础解析 在S32G2这样的多核异构SoC中&#xff0c;不同处理器核心之间的高效通信是系统设计的关键。IPCF&#xff08;Inter-Processor Communication Framework&#xff09;作为恩智浦提供的核间通信解决方案&#xff0c;其核心思想是通过共享内存中断触发的…...

告别卡顿!用这款神器轻松下载M3U8格式视频流

告别卡顿&#xff01;用这款神器轻松下载M3U8格式视频流 【免费下载链接】m3u8-downloader 一个M3U8 视频下载(M3U8 downloader)工具。跨平台: 提供windows、linux、mac三大平台可执行文件,方便直接使用。 项目地址: https://gitcode.com/gh_mirrors/m3u8d/m3u8-downloader …...

3分钟完成B站缓存视频转换:m4s-converter完整使用指南

3分钟完成B站缓存视频转换&#xff1a;m4s-converter完整使用指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站视频下架后&…...

开源机械爪OpenClaw UBI:从3D打印到Arduino控制的低成本机器人抓取方案

1. 项目概述&#xff1a;一个基于开源硬件的机械爪设计与实现最近在整理工作室的物料时&#xff0c;翻出了几个闲置的步进电机和一堆3D打印件&#xff0c;这让我想起了几年前一个挺有意思的项目——OpenClaw UBI。这是一个在开源硬件社区里流传的、基于通用构建接口&#xff08…...

MobaXterm远程桌面实战:在Ubuntu上配置与连接RDP服务

1. 为什么选择MobaXterm连接Ubuntu远程桌面 作为一名常年和Linux服务器打交道的开发者&#xff0c;我深知纯命令行操作有时会遇到效率瓶颈。特别是当需要处理图形界面应用或者进行复杂配置时&#xff0c;SSH终端就显得力不从心了。这时候&#xff0c;RDP远程桌面协议就成了救命…...

FinalBurn Neo终极指南:如何轻松搭建经典街机游戏模拟器

FinalBurn Neo终极指南&#xff1a;如何轻松搭建经典街机游戏模拟器 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo&#xff08;简称FBNeo&#xff09;是一款开源街机游戏模拟器&#xf…...

在多模型AI应用开发中利用Taotoken实现成本与性能的平衡

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在多模型AI应用开发中利用Taotoken实现成本与性能的平衡 开发一个复杂的AI应用&#xff0c;往往意味着需要调用多个模型来完成不同…...

终极免费音频编辑神器:告别昂贵软件,开启专业音频创作之旅

终极免费音频编辑神器&#xff1a;告别昂贵软件&#xff0c;开启专业音频创作之旅 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 你是否曾因音频编辑软件的复杂界面而望而却步&#xff1f;是否在寻找一款既能满足…...

双源判别器提升城市场景语义分割精度

篇名问题&#xff0c;背景方法其他基于双源判别器的域自适应城市场景语义分割(2023)1.跨域数据集外观分布不同导致域差异&#xff0c;导致对抗训练不稳定&#xff0c;分割精度不够理想。2.网络对小目标分割精度不理想双源判别器&#xff08;判别器输入包含 2 个不同域 的特征信…...

终极魔兽争霸3兼容性修复指南:WarcraftHelper让你的经典游戏重获新生

终极魔兽争霸3兼容性修复指南&#xff1a;WarcraftHelper让你的经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸III…...