形态学算法(连通分量提取,区域最大值提取)

文章目录

      • 二值图像形态学算法
        • 连通分量提取
      • 灰度图形态学算法
        • 灰度重建
        • 区域最大值查找

本文先列举一些近期用到的形态学算法,以后可能会再进行补充。

二值图像形态学算法

连通分量提取

在上一篇文章中已经提到连通分量的概念,这里再进行回顾:

S S S表示图像中像素的一个子集。如果完全由 S S S中所有像素组成的两个像素 p p p q q q之间存在一个通路,那么称 p p p g g g S S S中是连通的。对于S中的任何像素 p p p,在 S S S中连通到该像素的像素集称为 S S S的连通分量。若S仅有一个连通分量,则集合S称为连通集。(表现为S中任意两个像素之间都是连通的

那么如何提取一幅图像里面的所有连通分量?

令原图为 I I I A A A是由一个或多个连通分量组成的前景像素集合。首先由基于 A A A形成一幅图像 X 0 X_0 X0 X 0 X_0 X0由每个连通分量内任取一个已知点构成(假如有 k k k个连通分量,那么 X 0 X_0 X0中就有 k k k个像素点。)我们的目标就是从 X 0 X_0 X0开始,找到原图 I I I中的所有连通分量。以下迭代过程可以实现这个目的:
X k = ( X k − 1 ⊕ B ) ∩ I , k = 1 , 2 , 3 , ⋯ X_k=(X_{k-1}\oplus B)\cap I,k=1,2,3,\cdots Xk=(Xk1B)I,k=1,2,3,
B B B是下图中结构元(8连通,也可以是4连通)。当 X k = X k − 1 X_k=X_{k-1} Xk=Xk1时,迭代过程结束, X k X_k Xk包含图像中前景像素的所有连通分量。该式使用了和原图进行取交集这一条件膨胀来限制膨胀的增长。

image-20240909143824147

灰度图形态学算法

灰度重建

灰度重建其实指的是marker图像 J J J在mark I I I下进行条件膨胀。类似二值图像中提取连通分量的算法,这里直接贴文献[1]中的定义:

image-20240910161434720

单步重建操作时先对marker J J J进行膨胀(对于灰度图而言就是取结构元 B B B覆盖区域的最大值),然后再和原图取交集(即比较原图和膨胀结果取其中最小值),这样下来得到的条件膨胀图像中对应点的像素值一定不会比原图 I I I对应点的像素值大!最终结果就是单步重建到稳定状态(不再变化)。

需要注意的是,膨胀的时候是使用原图像素进行灰度膨胀而不是使用膨胀像素进行膨胀,很容易通过Matlab验证:

%测试下灰度膨胀(是使用原图的像素膨胀的而不是膨胀的像素)
img = [3,2,1,1];
se = strel('square',3);
img_dil = imdilate(img,se); %结果是[3, 3, 2, 1]
区域最大值查找

首先区域最大值的概念定义如下:

区域最大值点是具有同一强度值连通像素分量,其周围的像素强度值比该值

这里再贴一条文献[1]当中给出的定义:

image-20240910160310964

如何求区域最大值,文献[1]中给出了这样一种方法:

image-20240910160545670

即给定原图 I I I,其区域最大值可以通过原图减去对 I − 1 I-1 I1(即原图的灰度值-1)进行灰度重建的结果来得到。

(自己的理解就是把 I − 1 I-1 I1这个图像逐步进行单步灰度重建到稳定状态时,此时除区域最大值外,其他像素值都与原图相同,这样用 I I I减去该重建结果就只剩下区域最大值为1了)

Matlab中求区域最大值的函数是imregionalmax函数,用法如下:

image-20240910160812054

针对上述求取区域最大值的方法,可以通过Matlab验证结果的一致性:

%提取区域最大值
A = 10*ones(10,10);
A(2:4,2:4) = 22; 
A(6:8,6:8) = 33; 
A(2,7) = 44;
A(3,8) = 45;
A(4,9) = 44
regmax = imregionalmax(A) % 用1来标记最大值
%根据公式计算最大值
sub1_A_recon = imreconstruct(A-1,A,8);
regmax1 = A - sub1_I_recon;

此外,针对一些搞不清的情况进行了测试。

对下面两个灰度矩阵:

image-20240910162708243

image-20240910162756244

其求取区域最大值的结果分别是:

image-20240910162933842

总结为:如果一块连通区域的外边界有比该连通区域像素值大的像素,那么这块连通区域都不会是区域最大值。如果外边界没有比该连通区域大的像素值,那么该连通区域可以确定为区域最大值。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go 笔记

数据结构与 方法(增删改查) 安装goland,注意版本是2024.1.1,不是2024.2.1,软件下载地址也在链接中提供了 ‘go’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 在 Windows 搜索栏中输入“环境变量”&#…

SurfaceTexture OnFrameAvailableListener 调用流程分析

背景: 最近项目中遇到一个问题, 需要搞清楚OnFrameAvailableListener 回调流程, 本文借此机会做个记录, 巩固印象, 有相关困惑的同学也可以参考下. 本文基于Android 14 framework 源码进行分析 SurfaceTexture.java OnFrameAvailableListener 设置过程 public void setOnFra…

html+css+js网页设计 旅游 龙门石窟4个页面

htmlcssjs网页设计 旅游 龙门石窟4个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…

【CSS】选择器(基本选择器、复合选择器、属性匹配选择器、结构伪类选择器、伪元素选择器)

选择器 引入方式基础选择器复合选择器属性匹配选择器结构伪类选择器伪元素选择器 引入方式 1&#xff1a;外联 <!-- css引入方式1&#xff1a;外联 外联与内嵌优先级相同&#xff0c;取决于加载顺序 --><link rel"stylesheet" href"./样式.css"…

SpringBoot2:请求处理原理分析-利用内容协商功能实现接口的两种数据格式(JSON、XML)

文章目录 一、功能说明二、案例实现1、基于请求头实现2、基于请求参数实现 一、功能说明 我们知道&#xff0c;用ResponseBody注解标注的接口&#xff0c;默认返回给页面的是json数据。 其实&#xff0c;也可以返回xml结构的数据给页面。 这一篇就来实现一下这个小功能。 二、…

TI DSP下载器XDS100 V2.0无法使用问题

前言 TI DSP下载器XDS100 V2.0用着用着会突然报Error&#xff0c;特别是你想要用Code Composer Studio烧录下载程序的时候 查看设备管理器&#xff0c;发现XDS100 V2.0的设备端口莫名其妙消失了 问了淘宝的厂家&#xff0c;他说TI的开发板信号可能会导致调试器通信信号中断&a…

每日OJ_牛客_点击消除(栈)

目录 牛客_点击消除&#xff08;栈&#xff09; 解析代码 牛客_点击消除&#xff08;栈&#xff09; 点击消除_牛客题霸_牛客网 描述&#xff1a; 牛牛拿到了一个字符串。 他每次“点击”&#xff0c;可以把字符串中相邻两个相同字母消除&#xff0c;例如&#xff0c;字符…

LAMP环境下项目部署

目录 目录 1、创建一台虚拟机 centos 源的配置 备份源 修改源 重新加载缓存 安装软件 2、关闭防火墙和selinux 查看防火墙状态 关闭防火墙 查看SELinux的状态 临时关闭SELinux 永久关闭SELinux&#xff1a;编辑SELinux的配置文件 配置文件的修改内容 3、检查系统…

RAG 在企业应用中落地的难点与创新分享

在2024稀土开发者大会-AI Agent与应用创新分会上&#xff0c;我有幸分享了我们团队在企业应用中实施RAG&#xff08;检索增强生成&#xff09;的难点与创新。希望通过这篇文章&#xff0c;与大家探讨我们在实践中遇到的问题和解决方案&#xff0c;为从事相关工作的朋友提供一些…

python做游戏好用吗

Python做游戏是完全可以的&#xff0c;而且也非常简单&#xff0c;有一个专门针对游戏开发的平台&#xff08;模块&#xff09;—pygame&#xff0c;允许开发人员快速设计游戏而又摆脱了低级语言的束缚&#xff0c;下面我简单介绍一下这个模块的安装和使用&#xff1a; 1、首先…

lightdm , xrandr , startx 桌面管理器,窗口管理器

问题&#xff1a; 了解这几个的含义。 显示服务器 这个不是很明白 显示管理器&#xff0c; 知道就行了&#xff0c;也不是很明白。 窗口管理器。 桌面管理器。 这个其实就是 桌面环境了&#xff0c; 我们的板卡上使用的是xface 。 这个 xface 是一个集合&#xff0c;这里面…

CentOS安装Hadoop系列

安装Hadoop 1、安装SDK 2、Wget下载安装包到指定目录 3、选择hadoop的配置模式&#xff0c;单机模式&#xff0c;伪集群模式&#xff0c;集群模式 1、查找APACHE下载官网&#xff0c;搜索hadoop,进入目录&#xff0c;找到common目录&#xff0c;下载对应版本 国内&#xff0c;…

锁表导致系统挂了,谨慎DDL操作

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、 高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

整合Redis和RedisCacheManger

整合redis springboot在现在的版本中操作Redis数据库用到了lettuce&#xff0c;而不是Jedis&#xff0c;他们各有各的特点。Jedis以Redis命令作为方法名称&#xff0c;学习成本低&#xff0c;简单实用。但是Jedis实例是线程不安全的&#xff0c;多线程环境下需要基于连接池来使…

2-94 基于matlab的最佳维纳滤波器的盲解卷积算法

基于matlab的最佳维纳滤波器的盲解卷积算法。维纳滤波将地震子波转换为任意所需要的形态。维纳滤波不同于反滤波&#xff0c;它是在最小平方的意义上为最 佳。基于最佳纳滤波理论的滤波器算法是莱文逊(Wiener—Levinson)算法。程序提供了4种子波和4种期望输出&#xff1a;零延迟…

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数 一、环境说明二、页面之间相互传参 一、环境说明 DevEco Studio 版本&#xff1a; API版本&#xff1a;以12为主 二、页面之间相互传参 说明&#xff1a; 页面间的导航可以通过页面路由router模块来实现。页面路由模块根据页…

用Kimi输出流程图

1.输入 我希望设计一个ERP系统&#xff0c;请帮我简单列一个流程图&#xff0c;用mermaid输出2.输出

这才几天,京东又又又又又又加薪了!

京东 今天的最新消息&#xff0c;京东又又又又又加薪了。 距离我们 京东宣布大幅上调校招薪资 的推文发布才一周多点的时间&#xff0c;京东又宣布加薪了。 好家伙&#xff0c;算上这次&#xff0c;光 2024 年京东就已经宣布了 6 次调薪了&#xff1a; 2024 年初&#xff0c;京…

全志T113方案OTA

1、目前使用的flash为128M&#xff0c;比较小&#xff0c;使用AB升级方式感觉空间不够&#xff0c;所以使用recovery升级linux 2、添加recovery分区 全志提供的SDK本来是不支持打包recovery分区的&#xff0c;需要修改sys_partition.fex&#xff0c;size也需要修改&#xff0c…

Springcould -第一个Eureka应用 --- day02

标题 Eureka工作原理Spring Cloud框架下的服务发现Eureka包含两个组件&#xff0c;分别是&#xff1a;Eureka Server与Eureka Client。Eureka Server&#xff1a;Eureka Client&#xff1a; 搭建Eureka Server步骤&#xff1a;步骤1&#xff1a;创建项目&#xff0c;引入依赖步…