图像分割中的色块的提取

一 色块提取方法:

①首先是色彩模型的转换 由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.hqwc.cn/news/125310.html

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

相关文章

LeetCode 240. 搜索二维矩阵 II

原题链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题面: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序…

输入电压转化为电流性 5~20mA方案

输入电压转化为电流性 5~20mA方案 方案一方案二方案三 方案一 XTR111是一款精密的电压-电流转换器是最广泛应用之一。原因有二:一是线性度非常好、二是价格便宜。总结成一点,就是性价比高。 典型电路 最终电路 Z1二极管处输出电流表达式:…

QT商业播放器

QT商业播放器 总体架构图 架构优点:解耦,采用生产者消费者设计模式,各个线程各司其职,通过消息队列高效协作 这个项目是一个基于ijkplayer和ffplayer.c的QT商业播放器, 项目有5部分构成: 前端QT用户界面 后端是集成了…

WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi

好 各位 经过我们上文 WEB3 solidity 带着大家编写测试代码 操作订单 创建/取消/填充操作 我们自己写了一个测试订单业务的脚本 没想到运行的还挺好的 那么 今天开始 我们就可以开始操作我们前端 Dapp 的一个操作了 在整个过程中 确实是没有我们后端的操作 或者说 我们自己就…

C++设计模式-工厂模式(Factory Method)

目录 C设计模式-工厂模式(Factory Method) 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-工厂模式(Factory Method) 一、意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory…

PsychoPy Coder实现心理学小实验

纯python代码实现的,代码并不复杂,主要就是熟悉一个psychopy这个库的函数使用,前面都是psychopy的库函数使用,后面就是将收集到的数据保存为excel表格。 在屏幕中左右各显示一张图像,并显示提示词:要求用户…

OpenHarmony应用开发涉及的主要因素与UX设计规范

一、OpenHarmony应用开发涉及的主要因素 二、OpenHarmony应用开发UX设计规范 UX设计规范的主要内容与部分图标示例 2.OpenHarmony应用设计原则 设计原则,当为多种不同的设备开发应用时,有如下设计原则: 差异性,充分了解所要支…

php单独使用think-rom数据库 | thinkphp手动关闭数据库连接

背景(think-orm2.0.61) 由于需要长时间运行一个php脚本,而运行过程并不是需要一直与数据库交互,但thinkphp主要是为web站点开发的框架,而站点一般都是数据获取完则进程结束,所以thinkphp没提供手动关闭数据…

TempleteMethod

TempleteMethod 动机 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因 (比如框架与应用之间的关系)而无法和任务的整体结构同时实现。如…

7-2 图着色问题

输入样例&#xff1a; 6 8 3 2 1 1 3 4 6 2 5 2 4 5 4 5 6 3 6 4 1 2 3 3 1 2 4 5 6 6 4 5 1 2 3 4 5 6 2 3 4 2 3 4 输出样例&#xff1a; Yes Yes No No idea 注意合理的方案需满足&#xff1a;用到的颜色数 给定颜色数 solution #include <cstdio> #include &l…

Leetcode 231.2的幂

给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;tr…

通达信和同花顺能否实现程序化自动交易股票,量化交易如何实现?

以下写给正在寻找自动交易接口的朋友&#xff0c;首先&#xff0c;不是那种设置个简单条件的条件单&#xff0c;或者某些客户端上形同鸡肋的策略交易&#xff0c;那些策略根本称不上策略&#xff0c;还有各种限制&#xff0c;不支持这个不支持那个&#xff0c;可设置的参数也不…