OpenCV与图像处理学习十——区域生长算法(含代码)

OpenCV与图像处理学习十——区域生长算法(含代码)

  • 一、区域生长算法概要
  • 二、区域生长算法原理
  • 三、代码应用

一、区域生长算法概要

区域生长是一种串行区域分割的图像分割方法。区域生长是指从某个像素出发,按照一定的准则,逐步加入邻近像素,当满足一定的条件时,区域生长终止

区域生长的好坏决定于:

  1. 初始点(种子点)的选取。
  2. 生长准则。
  3. 终止条件。

区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标的提取

二、区域生长算法原理

基本思想:将具有相似性质的像素集合起来构成区域。

步骤

  1. 对图像顺序扫描,找到第1个还没有归属的像素, 设该像素为(x0, y0);
  2. 以(x0, y0)为中心, 考虑(x0, y0)的4邻域像素(x, y)如果(x0,y0)满足生长准则, 将(x, y)与(x0, y0)合并(在同一区域内), 同时将(x, y)压入堆栈(即满足条件,被判定为和(x0, y0)属于一个区域,后面需要再从这些点往外继续生长,所以需要保存);
  3. 从堆栈中取出一个像素, 把它当作(x0, y0)返回到步骤2(继续往外生长);
  4. 当堆栈为空时,返回到步骤1(有像素可能不属于前面的区域);
  5. 重复步骤1 - 4直到图像中的每个点都有归属时;生长结束。

三、代码应用

这里为简单起见,我们只设置了一个区域,即上述步骤中的第四步改为,当堆栈为空时,生长结束。

我们需要分割的图像如下所示:
在这里插入图片描述
我们将生长准则设置为像素值之间的欧式距离小于某个阈值,也就是说相邻像素值的差异较小时,归类为一个区域,代码如下所示:

# -*- coding:utf-8 -*-
import cv2
import numpy as np
###########################################################################################################################################################################
class Point(object):def __init__(self, x, y):self.x = xself.y = ydef getX(self):return self.xdef getY(self):return self.y
connects = [Point(-1, -1), Point(0, -1), Point(1, -1), Point(1, 0),Point(1, 1), Point(0, 1), Point(-1, 1), Point(-1, 0)]
#####################################################################################
# 计算两个点间的欧式距离
def get_dist(seed_location1, seed_location2):l1 = im[seed_location1.x, seed_location1.y]l2 = im[seed_location2.x, seed_location2.y]count = np.sqrt(np.sum(np.square(l1-l2)))return count# import Image
im = cv2.imread('./image/222.jpg')
cv2.imshow('src', im)
cv2.waitKey(0)
cv2.destroyAllWindows()
im_shape = im.shape
height = im_shape[0]
width = im_shape[1]print('the shape of image :', im_shape)# 标记,判断种子是否已经生长
img_mark = np.zeros([height, width])
cv2.imshow('img_mark', img_mark)
cv2.waitKey(0)
cv2.destroyAllWindows()# 建立空的图像数组,作为一类
img_re = im.copy()
for i in range(height):for j in range(width):img_re[i, j][0] = 0img_re[i, j][1] = 0img_re[i, j][2] = 0
cv2.imshow('img_re', img_re)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 取一点作为种子点
seed_list = []
seed_list.append(Point(15, 15))
T = 7           # 阈值
class_k = 1     # 类别
# 生长一个类
while (len(seed_list) > 0):seed_tmp = seed_list[0]# 将以生长的点从一个类的种子点列表中删除seed_list.pop(0)img_mark[seed_tmp.x, seed_tmp.y] = class_k# 遍历8邻域for i in range(8):tmpX = seed_tmp.x + connects[i].xtmpY = seed_tmp.y + connects[i].yif (tmpX < 0 or tmpY < 0 or tmpX >= height or tmpY >= width):continuedist = get_dist(seed_tmp, Point(tmpX, tmpY))# 在种子集合中满足条件的点进行生长if (dist < T and img_mark[tmpX, tmpY] == 0):img_re[tmpX, tmpY][0] = im[tmpX, tmpY][0]img_re[tmpX, tmpY][1] = im[tmpX, tmpY][1]img_re[tmpX, tmpY][2] = im[tmpX, tmpY][2]img_mark[tmpX, tmpY] = class_kseed_list.append(Point(tmpX, tmpY))########################################################################################
# 输出图像
cv2.imshow('OUTIMAGE', img_re)
cv2.waitKey(0)
cv2.destroyAllWindows()

分割得到的结果如下所示:
在这里插入图片描述
很显然,天空的像素值较为接近,所以被生长为一片区域,而房屋的像素与天空的差异较大,当天空的区域生长结束之后,因为这里只设置了分割一块区域,所以下面的房屋部分没有遍历到。

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

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

相关文章

FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated

使用scipy模块时出现警告&#xff1a;FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use arr[tuple(seq)] instead of arr[seq]. In the future this will be interpreted as an array index, arr[np.array(seq)], which will resu…

一文看懂中国MEMS传感器产业链

来源&#xff1a;通信产业网物联网对促进我国经济发展、优化产业结构具有重大的战略意义。而在整个物联网生态中&#xff0c;MEMS传感器扮演着越来越重要的角色&#xff0c;在即将到来的智能物联网时代中将起到核心作用&#xff0c;为新科技产品提供更智能、更敏锐的感知能力。…

OpenCV与图像处理学习十一——分水岭算法(含代码)

OpenCV与图像处理学习十一——分水岭算法&#xff08;含代码&#xff09;一、分水岭算法概要二、分水岭算法步骤三、代码应用一、分水岭算法概要 任意的灰度图像可以被看做是地质学表面&#xff0c;高亮度的地方是山峰&#xff0c;低亮度的地方是山谷。 给每个孤立的山谷&…

10件5G能实现但4G不能做的事情

来源&#xff1a;雷锋网 5G的一些最佳用途可能还没有被发现&#xff0c;但下面是我们已经知道的十个令人兴奋的用途。雷锋网按&#xff1b;2019年6月6日&#xff0c;工信部正式向中国电信、中国移动、中国联通、中国广电发放5G商用牌照&#xff0c;这表明中国正式进入了5G商用的…

OpenCV与图像处理学习十二——图像形状特征之HOG特征

OpenCV与图像处理学习十二——图像形状特征之HOG特征一、图像特征理解1.1 颜色特征1.2 纹理特征1.3 形状特征1.4 空间关系特征二、形状特征描述2.1 HOG特征2.1.1 基本概念2.1.2 HOG实现过程2.1.3 代码实现前面介绍了图像的基础知识、基本处理方法以及传统图像分割的应用&#x…

深度解读:5G正式发牌,国内通信市场冷暖预判

来源&#xff1a;ICT解读者2019年6月6日&#xff0c;工业和信息化部向中国电信、中国移动、中国联通和中国广电正式颁发5G牌照&#xff0c;批准四家企业经营“第五代数字蜂窝移动通信业务”。这标志着我国正式进入5G商用元年。一石激起千层浪&#xff0c;相较于此前各运营商官方…

OpenCV与图像处理学习十三——Harris角点检测(含代码)

OpenCV与图像处理学习十三——Harris角点检测&#xff08;含代码&#xff09;一、角点的概念二、Harris角点检测的实现过程三、Harris代码应用一、角点的概念 角点&#xff1a; 在现实世界中&#xff0c; 角点对应于物体的拐角&#xff0c; 道路的十字路口、 丁字路口等。 从…

德勤发布《中国智能制造分析报告》

来源&#xff1a;CIO俱乐部亚洲正受到自动化、智能化大潮冲击。国际劳工组织调研发现&#xff0c;越南、柬埔寨、菲律宾和印度尼西亚的工人的失业风险最高&#xff0c;据估计这几个区域约50%的工人工作可能在未来20年被自动化取代。亚洲尤其是中国作为制造业的重要区域&#xf…

OpenCV与图像处理学习十四——SIFT特征(含代码)

OpenCV与图像处理学习十四——SIFT特征&#xff08;含代码&#xff09;一、SIFT算法二、SIFT实现过程三、代码实现一、SIFT算法 SIFT&#xff0c; 即尺度不变特征变换算法&#xff08;Scale-invariant feature transform&#xff0c;SIFT&#xff09; &#xff0c; 是用于图像…

液态大脑与固态大脑——圣塔菲最新群体智能文集

来源&#xff1a;The Royal society撰文 | Ricard Sol, Melanie Moses, and Stephanie Forrest大脑&#xff0c;神经元构成的器官根植于许多生物体内。这是一种固态的大脑&#xff0c;且组成它们的元素在空间中相对固定。但是相对的&#xff0c;大脑是否可以拥有流动不定的存在…

OpenCV与图像处理学习十五——LBP纹理特征(含代码)

OpenCV与图像处理学习十五——LBP纹理特征&#xff08;含代码&#xff09;一、LBP介绍二、LBP原理三、代码应用一、LBP介绍 LBP&#xff08;Local Binary Pattern&#xff0c; 局部二值模式&#xff09; &#xff0c; 是一种用来描述图像局部纹理特征的算子&#xff1b; 它具有…

pycharm运行程序时看不到任何结果显示

原因是用程序选择了console来运行&#xff0c;取消console方法如下&#xff1a; Run->Edit Configurations 取消run with python console的勾

iOS 的 XMPPFramework 简介

XMPPFramework是一个OS X/iOS平台的开源项目&#xff0c;使用Objective-C实现了XMPP协议&#xff08;RFC-3920&#xff09;&#xff0c;同时还提供了用于读写XML的工具&#xff0c;大大简化了基于XMPP的通信应用的开发。 1. 登录和好友上下线 1.1XMPP中常用对象们 XMPPStream&a…

OpenCV与图像处理学习十六——模板匹配

OpenCV与图像处理学习十六——模板匹配一、模板匹配介绍二、代码应用一、模板匹配介绍 模板匹配是一种最原始、最基本的模式识别方法&#xff0c;研究某一特定目标的图像位于图像的什么地方&#xff0c;进而对图像进行定位。 在待检测的图像上&#xff0c;从左到右&#xff0…

李剑锋:意识科学就在身边

来源&#xff1a; 科技日报-中国科技网近些年&#xff0c;生命科学家开始关注神奇的大脑&#xff0c;因此各国纷纷提出各自的脑计划;当前有一个更基础的、但极富争议性的领域却被大家忽视了&#xff0c;就是意识科学。事实脑计划的终点应该就是意识科学&#xff0c;但由于目前大…

OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

OpenCV与图像处理学习十七——OpenCV人脸检测&#xff08;含代码&#xff09;一、人脸识别概要1.1 人脸检测1.2 人脸对齐&#xff08;Face Alignment&#xff09;1.3 人脸特征提取&#xff08;Face Feature Extraction&#xff09;1.4 人脸识别&#xff08;Face Recognition&am…

清华大学:人工智能之知识图谱(附PPT)

来源&#xff1a;笑看国际风云【导读】知识图谱&#xff08;Knowledge Graph)是人工智能重要分支知识工程在大数据环境中的成功应用&#xff0c;知识图谱与大数据和深度学习一起&#xff0c;成为推动互联网和人工智能发展的核心驱动力之一。基于此背景&#xff0c;《人工智能之…

有关EUV光刻机,你需要知道这些

来源&#xff1a;technews晶圆制造产业进入7 纳米制程之后&#xff0c;目前全世界仅剩台积电与三星&#xff0c;再加上号称自家10 纳米制程优于竞争对手7 纳米制程的英特尔等&#xff0c;有继续开发能力之外&#xff0c;其他竞争者因须耗费大量金钱与人力物力的情况下&#xff…

多家巨头实测鸿蒙系统:比安卓快60%

来源&#xff1a;腾讯新闻&#xff0c;数码科技大爆炸众所周知&#xff0c;近期&#xff0c;华为被打压和打击的事件一直没有停止&#xff0c;但华为并没有坐以待毙&#xff0c;很快就启动了“备胎计划”给予积极的回击和反击&#xff0c;像保险柜里的海思“备胎芯片”、华为自…

混淆矩阵及分类性能评估方法

混淆矩阵&#xff1a; 公式&#xff1a;其中TPR又叫召回率Recall