图像分割中的色块的提取

一 色块提取方法:

①首先是色彩模型的转换 由RGB颜色空间转到HSV颜色空间
原因:RGB颜色空间适合显示系统,但是各分量间相关性很强,比如当图像亮度发生变化时,RGB三个分量都会发生相应改变 但是HSV颜色空间更能感知颜色的变化,比如说 H=60时 就是黄色 S和V只是决定了黄色的饱和度和明度 所以更适合进行图像分割
另一方面 我处理的多源拼接图像 可能存在的问题 可能是亮度也可能是色彩的不同 所以用HSV分量更适合

 我们观察到多源拼接影像 色块间亮度或者颜色差异很大 但是可能说不知道哪个分量更适合进行图像分割等操作 也许人眼可以看出来比如亮度差异过大的时候 我们采用V分量 色彩差异可以用H或者S 但是为了省掉这个人为选择分量的麻烦 也是为了实现自动化 我们对这三个分量都做处理 然后自动判断哪个结果最好 对HSV三个分量进行下面步骤
②大津法分割图像
我们的目的是获得上下分布的色块 并且是上面全是前景区域 下面全是背景区域
所以用大津法做了一个初步的图像分割

 ③小连通区去除
大津法分割图像以后 上边前景区域还包括很多 背景区域(同样下边背景区域也包括部分前景区域) 所以进行图像闭运算(先膨胀后腐蚀 膨胀的目的是去除上面前景区域的小背景区域 然后再进行相同尺寸的腐蚀让他回到原来的形状 )
但是 边界周围有很多小的连通区,膨胀以后会破坏边界线信息 影响后续的轮廓拟合 比如b里面分界线周围有小连通区 先膨胀在腐蚀以后边界线会发生变化 所以要在闭运算之前进行小连通区去除
④ 图像闭运算 + 轮廓拟合
小连通区干掉以后,可以进行图像闭运算了 但是这个尺寸如何确定: 我们收集的数据集大多数在500X500左右 闭运算适合的尺寸在30左右 但是为了尽可能适合大多数图像
我们还是设置了一个闭运算的范围 尺寸从10-100 ,然后自动判断出 哪个尺寸的闭运算得到的结果最为符合色块分布
所以这里就要有一个判断标准 判断哪个闭运算尺寸得到的结果最好(最符合色块分布)
什么时候最符合色块分布嘞 我选择的是 均值差 上下色块在某个分量的均值差
比如 b是 H分量 它的上下色块 像素值之间差异是很明显的 上下色块的均值差是最大的
这个最大 是跟 (10-100共10个尺寸)所有闭运算尺寸处理的所有分量 计算出的均值差结果比的
有点抽象(或者我语言表达的不到家) 我们计算了 十个尺寸三个分量 也就是三十个均值差数据
看下面的图 对H分量 尺寸是40和20的结果 计算红黄两个区域的均值差 40的肯定大于20的
这个结论一方面是观察的 另一方面做了几十组实验得到的

 

 闭运算 + 轮廓拟合(用的多边形拟合 因为色块分界线也可能是折线)以后 就得到第一次提取结果了 但是! 色块也可能有多个! 所以还要判断色块数目 比如这个 还得继续分割

 

 

二 色块数目判断

色块数目判断目的在于判断提取结果是否是单个色块 不是判断有几个色块
下面的过程也很麻烦。。。 我导非要实现自动化 啥都自动 当初我觉的这是天方夜谭
但是我导说 没有解决不了的问题 (后来跟我师弟也这样说。。)
这一部分的目的就是 尽可能把色块分布表现出来 一步一步简化地物 把真实的色彩分布展示出来

 

 ① 均值分布图
我们研究的区域只针对 前景区域(非黑色区域)
同样 把这两个图像转为HSV 提取HSV三分量 对每个分量
(1)首先 分成50x50 的块 不足50的就忽略不计
(将背景区域先设置为255 这个255是为了让结果看的更明显
从左到右分块 就是右边最后一个不足50就不管他 直接设置为255
从上到下分块 最下面不足50就不管他 设为255)
(2)计算每个块的均值 并用均值代替块内的每个像素
这时候我们已经获得HSV 三个分量 的均值分布图了 但是用哪个分量更能看出有几个色块呢
我把每个分量里面的均值数据分别记成一个集合 如果说是某个分量里面色块差异很明显 那么这个分量的均值数据集合里面的数值一定是变化最剧烈的 我们选择计算标准差来表示各分量中图像块均值数据的离散程度 找到HSV三个分量计算出的对应三个标准差 最大的就是想要找到的那个分量
下面是结果 可以在图一看出一点差别 但差别不是很明显 所以继续

 ②重赋值均值分布图
我们把大津法应用到均值数据集合里面 找到均值数据的阈值 大于阈值的就设为150(纯粹是方便观察) 小于阈值的就设为0 下图就看出来比较明显了

 ③均值分布纠正图
我们继续
我们已经把这个能大致反映色块分布的图稿出来了 根据提取色块时候说的色块间的均值差
单色块间的均值差 会小于 多色块均值差 中间会有一个阈值 以上图为例
图一里面计算 灰色区域和黑色区域这两个区域对于均值数据 的均值差d1
图二里面计算 灰色区域和黑色区域这两个区域对于均值数据 的均值差d2
d1>d2 但是架不住会有些特殊情况 为了更好地判断 我们做了两个预处理
第一个: 比如图2 单色块里面会有一些特殊区域 比如高亮水域建筑物等 会使均值差变大 所以我们把高亮建筑物这些 归类到黑色区域(也就是填充均值数据很大的连通区)
因此当重赋值均值分布图中前景区域存在面积较小的值为150的连通区时,需要将这些连通区填充为背景区域。

 

 

第二个:
在计算差值之前 我们可以通过判断色块形状来剔除掉一部分容易判断的
影像中各个色块一般是由直线或者斜线构成的规则多边形,如果填充后的连通区依然是不规则区域,就说明该连通区不是一个完整的色块,而是在单个色块中的其他类型地物。我们选择根据其面积最大的连通区的边数作进一步判断, (连通区有斜边的时候 会有很多小锯齿 我们先做一个多边形拟合 然后找到面积最大轮廓 然后统计轮廓的边数即可)
据实验得 边数阈值设为25 大于25的就是单色块 小于25的需要继续进行判断

进行上述两个预处理后 我们要开始计算均值差 来判断色块了
我们根据数据集 里面的数据计算的均值差
做了个折线图 存在阈值17.4

 

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

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

相关文章

ubuntu22.04 x11窗口环境手势控制

ubuntu22.04 x11窗口环境手势控制 ubuntu x11窗口环境的手势控制并不优秀,我们可以使用touchegg去代替 这个配置过程非常简单,并且可以很容易在一定范围内达到你想到的效果,类比mac的手势控制 关于安装 首先添加源,并安装 sud…

【NeurIPS 2023】Backdoor对抗攻防论文汇总

NeurIPS 对抗攻防论文 NeurIPS2022|对抗攻防论文整理 - 知乎 NeurIPS 2023 Papers BIRD: Generalizable Backdoor Detection and Removal for Deep Reinforcement Learning https://neurips.cc/virtual/2023/poster/70618 摘要: 后门攻击对深度强化学习&…

基于Java的飞机航班订票购票管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Leetcode219. 存在重复元素 II

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b…

深入了解 RabbitMQ:高性能消息中间件

目录 引言&#xff1a;一、RabbitMQ 介绍二、核心概念三、工作原理四、应用场景五、案例实战 引言&#xff1a; 在现代分布式系统中&#xff0c;消息队列成为了实现系统间异步通信、削峰填谷以及解耦组件的重要工具。而RabbitMQ作为一个高效可靠的消息队列解决方案&#xff0c;…

Python爬虫解决中文乱码

目录 一、中文乱码 二、chardet.detect()解决 三、在页面查找编码格式解决 一、中文乱码 问题在于文本的编码格式不正确 import requestsurlhttps://www.shicimingju.com/book/sanguoyanyi.html headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKi…

C++_pen_静态与常量

成员 常成员、常对象&#xff08;C推荐使用 const 而不用#define,mutable&#xff09; const 数据成员只在某个对象生存周期内是常量&#xff0c;而对于整个类而言却是可变的&#xff08;static除外&#xff09; 1.常数据成员&#xff08;构造函数初始化表赋值&#xff09; c…

C#开发的OpenRA游戏之电力系统之一

C#开发的OpenRA游戏之电力系统之一 前面已经分析过雷达地图显示,在雷达地图的下面有一个显示电力数量显示,如下图: 从上图看到电力的数量为0,所以这时候就处于低电力的模式。 要在这里显示电力,那么就需要在界面上做一点编辑,是在yaml文件定义它: Container@POWERBAR…

在Ubuntu 20.04搭建最小实验环境

sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates安装导入GPG公钥所需的依赖包。 sudo wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -导入GPG密钥。 sudo apt-get -y install --no-install-recommends software-p…

Docker启动Mysql

如果docker里面没有mysql需要先pull一个mysql镜像 docker pull mysql其中123456是mysql的密码 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql可以使用如下命令进入Mysql的命令行界面 docker exec -it mysql bash登录mysql使用如下命令,root是…

二层VLAN配置实验

四台PC的IP地址如图所示&#xff0c;子网掩码均为255.255.255.0&#xff0c;四台PC处在同一个局域网之中&#xff0c;在配置VLAN之前能够彼此ping通。配置的目的是将PC1和PC3划分到VLAN10中&#xff0c;PC2和PC4划分到VLAN20中。 在配置之前需要进入系统视角。 创建VLAN 在两…

集合-Map系列

系列文章目录 1.集合-Collection-CSDN博客​​​​​​ 2.集合-List集合-CSDN博客 3.集合-ArrayList源码分析(面试)_喜欢吃animal milk的博客-CSDN博客 4.数据结构-哈希表_喜欢吃animal milk的博客-CSDN博客 5.集合-set系列集合-CSDN博客 6.集合-Map系列-CSDN博客 文章目…

阿里云关系型数据库RDS详细说明

阿里云RDS关系型数据库大全&#xff0c;关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等&#xff0c;NoSQL数据库如Redis、Tair、Lindorm和MongoDB&#xff0c;阿里云百科分享阿里云RDS关系型数据库大全&#xff1a; 目录 阿里云RDS关系型数据库大全 …

人工智能:定义未来,揭开历史神秘面纱,展望无限可能!

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是尘缘&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f449;点击这里&#xff0c;就可以查看我的主页啦&#xff01;&#x1f447;&#x…

4、Linux内核的分析

一、内核分析 1、内核的概念 作为计算机而言&#xff0c;软件和硬件之间是相互依赖的&#xff0c;硬件如果脱离了软件&#xff0c;则无法正常工作&#xff0c;软件脱离了硬件则无法正常运行。这个软件一般指的是操作系统的内核&#xff0c;作为Linux而言&#xff0c;内核也被…

Unity中Shader的前向渲染路径ForwardRenderingPath

文章目录 前言一、前向渲染路径的特点二、渲染方式1、逐像素(效果最好)2、逐顶点(效果次之)3、SH球谐(效果最差) 三、Unity中对灯光设置 后&#xff0c;自动选择对应的渲染方式1、ForwardBase仅用于一个逐像素的平行灯&#xff0c;以及所有的逐顶点与SH2、ForwardAdd用于其他所…

浏览器从输入URL到展示的流程

文章目录 1. URL输入2. DNS解析3. 建立TCP连接4. 发送http或者https请求5. 服务器端响应请求6. 浏览器解析渲染页面7. 断开TCP连接 1. URL输入 输入URL后&#xff0c;浏览器会对URL进行以下的判断 是否合法如果合法&#xff0c;则判断URL是否完整&#xff0c;如果不完整&…

重生奇迹MU刷装备注意事项

在打斗游戏里面装备的作用非常巨大&#xff0c;较好的武器装备可以为玩家带来不错的体验&#xff0c;很多玩家甚至不惜花重金打造属于好装备。那么游戏中刷装备需要注意什么。 一、对武器装备的认识 对于玩家来说需要对武器装备有一定的认识&#xff0c;连基本的武器装备分类都…

【面试总结大纲】

面试 1. springSpring AOP的具体实现核心概念分别指的是什么?基于注解的切面实现主要包括以下几个步骤&#xff1a;两个切面&#xff0c;它们之间的顺序是怎么控制的 springmvc的工作流程设计模式原则Spring 框架中用到了哪些设计模式&#xff1f; 2. Java-锁2.1锁的分类可重入…

LVGL_基础控件Button

LVGL_基础控件Button 1、创建按键 /* 创建一个btn部件(对象) */lv_obj_t * btn lv_btn_create(lv_scr_act()); // 创建一个btn部件(对象),他的父对象是活动屏幕对象2、修改样式 // 修改按钮部件&#xff08;对象&#xff09;矩形背景部分的样式&#xff08;按下的时候背…