Python简单实现区域生长方式


Posted in Python onJanuary 16, 2020

区域生长是一种串行区域分割的图像分割方法。区域生长是指从某个像素出发,按照一定的准则,逐步加入邻近像素,当满足一定的条件时,区域生长终止。区域生长的好坏决定于1.初始点(种子点)的选取。2.生长准则。3.终止条件。区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标的提取。

区域生长的原理:   

区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长起点,然后将种子像素和周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子继续上面的过程,直到没有满足条件的像素可被包括进来。这样一个区域就生长成了。

区域生长实现的步骤如下:

1. 对图像顺序扫描!找到第1个还没有归属的像素, 设该像素为(x0, y0);

2. 以(x0, y0)为中心, 考虑(x0, y0)的4邻域像素(x, y)如果(x0, y0)满足生长准则, 将(x, y)与(x0, y0)合并(在同一区域内), 同时将(x, y)压入堆栈;

3. 从堆栈中取出一个像素, 把它当作(x0, y0)返回到步骤2;

4. 当堆栈为空时!返回到步骤1;

5. 重复步骤1 - 4直到图像中的每个点都有归属时。生长结束。

Python实现

import numpy as np
import cv2

class Point(object):
 def __init__(self,x,y):
  self.x = x
  self.y = y

 def getX(self):
  return self.x
 def getY(self):
  return self.y

def getGrayDiff(img,currentPoint,tmpPoint):
 return abs(int(img[currentPoint.x,currentPoint.y]) - int(img[tmpPoint.x,tmpPoint.y]))

def selectConnects(p):
 if p != 0:
  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)]
 else:
  connects = [ Point(0, -1), Point(1, 0),Point(0, 1), Point(-1, 0)]
 return connects

def regionGrow(img,seeds,thresh,p = 1):
 height, weight = img.shape
 seedMark = np.zeros(img.shape)
 seedList = []
 for seed in seeds:
  seedList.append(seed)
 label = 1
 connects = selectConnects(p)
 while(len(seedList)>0):
  currentPoint = seedList.pop(0)

  seedMark[currentPoint.x,currentPoint.y] = label
  for i in range(8):
   tmpX = currentPoint.x + connects[i].x
   tmpY = currentPoint.y + connects[i].y
   if tmpX < 0 or tmpY < 0 or tmpX >= height or tmpY >= weight:
    continue
   grayDiff = getGrayDiff(img,currentPoint,Point(tmpX,tmpY))
   if grayDiff < thresh and seedMark[tmpX,tmpY] == 0:
    seedMark[tmpX,tmpY] = label
    seedList.append(Point(tmpX,tmpY))
 return seedMark


img = cv2.imread('lean.png',0)
seeds = [Point(10,10),Point(82,150),Point(20,300)]
binaryImg = regionGrow(img,seeds,10)
cv2.imshow(' ',binaryImg)
cv2.waitKey(0)

以上这篇Python简单实现区域生长方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python日志模块logging简介
Apr 13 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
python实用代码片段收集贴
Jun 03 Python
python装饰器初探(推荐)
Jul 21 Python
老生常谈python之鸭子类和多态
Jun 13 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
Keras设置以及获取权重的实现
Jun 19 Python
Python之基础函数案例详解
Aug 30 Python
Python各协议下socket黏包问题原理
Apr 12 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 #Python
Pycharm中Python环境配置常见问题解析
Jan 16 #Python
Python Numpy库常见用法入门教程
Jan 16 #Python
Python使用Pandas库常见操作详解
Jan 16 #Python
Python 日期的转换及计算的具体使用详解
Jan 16 #Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 #Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 #Python
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
用穿越火线快速入门php面向对象
2012/02/22 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php实现生成验证码实例分享
2016/04/10 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
jQuery操作select的实例代码
2012/06/14 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
python中Apriori算法实现讲解
2017/12/10 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
python按比例随机切分数据的实现
2019/07/11 Python
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
高级电工工作职责
2013/11/21 职场文书
八年级英语教学反思
2014/01/09 职场文书
军训自我鉴定200字
2014/02/13 职场文书
微电影大赛策划方案
2014/06/05 职场文书
家长会标语
2014/06/24 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
房产公证书
2015/01/23 职场文书
办公室禁烟通知
2015/04/23 职场文书
青年文明号创建口号大全
2015/12/25 职场文书