【youcans 的 OpenCV 例程200篇】169.图像分割之区域分离

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中


【youcans 的 OpenCV 例程200篇】169.图像分割之区域分离


### 4.2 区域分离与聚合

区域分裂合并算法的基本思想是将图像细分为一组不相交的区域,然后聚合或者分离这些区域。

分离和聚合的判据是用户选择的谓词逻辑 Q,通常是目标区域特征一致性的测度,例如灰度均值和方差。

分离过程先判断当前区域是否满足目标的特征测度,如果不满足则将当前区域分离为多个子区域进行判断;不断重复判断、分离,直到拆分到最小区域为止。典型的区域分裂方法,是将区域按照 4 个象限分裂为 4 个子区域,可以简化处理和运算过程。

区域分离的分割结果通常包含具有相同性质的邻接区域,通过聚合可以解决这个问题。仅当邻接区域的并集满足目标的特征测度,才将进行聚合。

区域分离与聚合基本方案的过程如下:
(1)区域分离:把所有满足条件 Q(Ri)=FalseQ(R_i)=FalseQ(Ri)=False 的区域 RiR_iRi 等分为 4 个子区域,不断拆分直到最小单元;
(2)区域聚合:把所有满足条件 Q(Rj∪Rk)=TrueQ(R_j \cup R_k)= TrueQ(RjRk)=True 的相邻区域 Rj,RkR_j, R_kRj,Rk 聚合。


例程 11.26:图像分割之区域分离

    # 11.26 图像分割之区域分离def SplitMerge(src, dst, h, w, h0, w0, maxMean, minVar, cell=4):win = src[h0: h0+h, w0: w0+w]mean = np.mean(win)  # 窗口区域的均值var = np.std(win, ddof=1)  # 窗口区域的标准差,无偏样本标准差if (mean<maxMean) and (var>minVar) and (h<2*cell) and (w<2*cell):# 该区域满足谓词逻辑条件,判为目标区域,设为白色dst[h0:h0+h, w0:w0+w] = 255  # 白色# print("h0={}, w0={}, h={}, w={}, mean={:.2f}, var={:.2f}".#       format(h0, w0, h, w, mean, var))else:  # 该区域不满足谓词逻辑条件if (h>cell) and (w>cell):  # 区域能否继续分拆?继续拆SplitMerge(src, dst, (h+1)//2, (w+1)//2, h0, w0, maxMean, minVar, cell)SplitMerge(src, dst, (h+1)//2, (w+1)//2, h0, w0+(w+1)//2,  maxMean, minVar, cell)SplitMerge(src, dst, (h+1)//2, (w+1)//2, h0+(h+1)//2, w0, maxMean, minVar, cell)SplitMerge(src, dst, (h+1)//2, (w+1)//2, h0+(h+1)//2, w0+(w+1)//2, maxMean, minVar, cell)# else:  # 不能再分拆,判为非目标区域,设为黑色#     src[h0:h0+h, w0:w0+w] = 0  # 黑色img = cv2.imread("../images/Fig0938a.tif", flags=0)hImg, wImg = img.shapemean = np.mean(img)  # 窗口区域的均值var = np.std(img, ddof=1)  # 窗口区域的标准差,无偏样本标准差print("h={}, w={}, mean={:.2f}, var={:.2f}".format(hImg, wImg, mean, var))maxMean = 80  # 均值上界minVar = 10  # 标准差下界src = img.copy()dst1 = np.zeros_like(img)dst2 = np.zeros_like(img)dst3 = np.zeros_like(img)SplitMerge(src, dst1, hImg, wImg, 0, 0, maxMean, minVar, cell=32)  # 最小分割区域 cell=32SplitMerge(src, dst2, hImg, wImg, 0, 0, maxMean, minVar, cell=16)  # 最小分割区域 cell=16SplitMerge(src, dst3, hImg, wImg, 0, 0, maxMean, minVar, cell=8)  # 最小分割区域 cell=8plt.figure(figsize=(9, 7))plt.subplot(221), plt.axis('off'), plt.title("Origin")plt.imshow(img, 'gray')plt.subplot(222), plt.axis('off'), plt.title("Region split (c=32)")plt.imshow(dst1, 'gray')plt.subplot(223), plt.axis('off'), plt.title("Region split (c=16)")plt.imshow(dst2, 'gray')plt.subplot(224), plt.axis('off'), plt.title("Region split (c=8)")plt.imshow(dst3, 'gray')plt.tight_layout()plt.show()

在这里插入图片描述


(本节完)


版权声明:

youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/124496034)

Copyright 2022 youcans, XUPT
Crated:2022-4-30


欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

【youcans 的 OpenCV 例程200篇】168.图像分割之区域生长
【youcans 的 OpenCV 例程200篇】169.图像分割之区域分离
【youcans 的 OpenCV 例程200篇】170.图像分割之K均值聚类
更多内容,请见:
【OpenCV 例程200篇 总目录-202206更新】

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

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

相关文章

多彩三角形

H5特效多才三角形&#xff0c;使用H5新特性canvas画布制作的四周阴影效果中部出现很多的各种颜色的三角形。 效果演示 代码演示 <!DOCTYPE HTML> <html><head><title>demo</title><style type"text/css">body {margin: 0;pa…

ado.net mysql 连接池_ADO.NET数据连接池

【IT168 技术文档】21世纪什么最贵&#xff1f;数据库连接。对于以数据库做数据存储基石的应用系统来说&#xff0c;数据库连接是整个系统中最珍贵的资源之一。数据库连接池是为了更有效地利用数据库连接的最重要措施。它对于一个大型的应用系统的性能至关重要&#xff0c;特别…

【youcans 的 OpenCV 例程200篇】170.图像分割之K均值聚类

【OpenCV 例程200篇】 系列&#xff0c;持续更新中… 【OpenCV 例程200篇 总目录-202205更新】 【youcans 的 OpenCV 例程200篇】170.图像分割之K均值聚类 5. 区域分割之聚类方法 5.1 基于 k 均值聚类的区域分割 聚类方法的思想是将样本集合按照其特征的相似性划分为若干类别…

计算名次和奖学金

使用Java的switch的判断计算学生的名次和对应的奖学金&#xff0c;根据文本提示输入你的名词&#xff0c;点击Enter之后会出现你应该获得的奖学金金额。 结果演示 代码演示 package com.eight; import java.util.Scanner; public class Mingci {public static void main(Str…

android反射开启通知_Android中反射的简单应用

自己对反射的理解和应用还处于比较浅显的阶段&#xff0c;写这篇文章更多在于整理总结&#xff0c;也就是帮助自己进一步的理解和学习反射机制。反射反射的概念是由Smith在1982年首次提出的&#xff0c;主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。java中类反…

【OpenCV 例程200篇 目录-202205更新】

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【OpenCV 例程200篇 目录】 更新日期&#xff1a;2022-05-12 【youcans 的 OpenCV 例程200篇】01. 图像的读取&#xff08;cv2.im…

最大值平均值和排序

根据文本提示输入五个年龄&#xff0c;点击Enter之后程序会输出五个年龄中最大的年龄&#xff0c;平均年龄即年龄从小到大的排序分别是啥。 结果演示 代码演示 package com.nine; import java.util.Scanner; import java.util.Arrays; public class Shuzu {public static v…

【youcans 的 OpenCV 例程200篇】171.SLIC 超像素区域分割

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】171.SLIC 超像素区域分割 5. 区域分割之聚类方法 5.2 基于超像素的区域分割 超像素图像分割基于依赖于图像的颜色信息及空间关系信息&#xff0c;将图像分割为远超于目标个数、远小于像素数量的超像素块&…

判断三角形是否是直角三角形

根据文本提示分别输入第一第二第三条三角形的边长&#xff0c;程序会根据勾股定理计算是否是直角三角形&#xff0c;如果是直角三角形&#xff0c;会显示该三角形是直角三角形&#xff0c;如果不是直角三角形则显示该三角形不是直角三角形。 结果演示 代码演示 package com.…

【youcans 的 OpenCV 例程200篇】172.SLIC 超像素区域分割算法比较

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】172.SLIC 超像素区域分割算法比较 5. 区域分割之聚类方法 5.3 SLIC 超像素区域分割 SLIC 基于网格化 K-means 聚类方法&#xff0c;原理简单&#xff0c;计算复杂度为O(N)&#xff0c;N 为像素点个数。 S…

【youcans 的 OpenCV 例程200篇】173.SEEDS 超像素区域分割

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】173.SEEDS 超像素区域分割 5.4 SEEDS 超像素区域分割 超像素个体应在视觉上一致&#xff0c;特别是颜色应尽可能均匀。SLIC 使用欧几里德距离来度量像素点的相似度&#xff0c;不能反映颜色的方差。 SEED…

能否组成三角形

根据三角形三边长判断是否可以组成一个三角形&#xff0c;如果输入的不对会给出相应的提示。 结果演示 代码演示 package com.nine; import java.util.Scanner; public class ZhiJiao {public static void main(String[] args) {Scanner scan new Scanner(System.in);System…

【youcans 的 OpenCV 例程200篇】174.LSC 超像素区域分割

【OpenCV 例程200篇 总目录-202206更新】** 【youcans 的 OpenCV 例程200篇】174.LSC 超像素区域分割 5.5 LSC 超像素区域分割 线性谱聚类&#xff08;Linear Spectral Clustering&#xff0c;LSC&#xff09;是 SLIC 的改进方案&#xff0c;可以生成紧凑且均匀的超像素&…

修改SqlServer的登录密码

我们每次打开SqlServer数据库的时候首先会让我们登录用户名和密码&#xff0c;那么我们如何修改之前设定的密码呢&#xff1f; 1.打开我们的SqlServer 2.点击安全性&#xff0c;选择自己登录SqlServer的账户双击看到如下页面 3.在密码和确认密码的输入框中修改我们的新密码。…

java递归栈_java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶...

import java.util.Stack;public class ReverseStackRecursive {/*** Q 66.颠倒栈。* 题目&#xff1a;用递归颠倒一个栈。例如输入栈{1,2,3,4,5}&#xff0c;1在栈顶。* 颠倒之后的栈为{5,4,3,2,1}&#xff0c;5处在栈顶。*1. Pop the top element*2. Reverse the remaining st…

Redis DeskTop Manager 使用教程

redis desktop manager windows 是一款能够跨平台使用的开源性redis可视化工具。 redis desktop manager主要针对redis开发设计&#xff0c;拥有直观强大的可视化界面&#xff0c;具有完善全面的数据操作功能&#xff0c;可以针对目标key执行rename&#xff0c;delete&#xf…

【youcans 的 OpenCV 例程200篇】175.超像素区域分割方法比较

【youcans 的 OpenCV 例程200篇】175.超像素区域分割方法比较 5.2 基于超像素的区域分割 超像素图像分割基于依赖于图像的颜色信息及空间关系信息&#xff0c;将图像分割为远超于目标个数、远小于像素数量的超像素块&#xff0c;达到尽可能保留图像中所有目标的边缘信息的目的…

【youcans 的 OpenCV 例程200篇】176.图像分割之均值漂移算法 Mean Shift

【youcans 的 OpenCV 例程200篇】176.图像分割之均值漂移算法 【youcans 的 OpenCV 例程200篇】177.图像分割之 GraphCuts 图割法 【youcans 的 OpenCV 例程200篇】178.图像分割之 GrabCut 图割法&#xff08;框选前景&#xff09; 【youcans 的 OpenCV 例程200篇】179.图像分割…

在线答题系统

使用Jquery制作了一个在线答题系统 功能分析 1.开始界面 2.结束界面 3.题目的内容和选项的选择 4.题目的切换 5.分数的计算 6.判断是否选中选项 效果演示 代码演示 一 . html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht…

【youcans 的 OpenCV 例程200篇】177.图像分割之 GraphCuts 图割法

【youcans 的 OpenCV 例程200篇】176.图像分割之均值漂移算法 【youcans 的 OpenCV 例程200篇】177.图像分割之 GraphCuts 图割法 【youcans 的 OpenCV 例程200篇】178.图像分割之 GrabCut 图割法&#xff08;框选前景&#xff09; 【youcans 的 OpenCV 例程200篇】179.图像分割…