
图像分割即把图像分割成若干不相交的区域,实质是像素的聚类过程,是图像处理的一种方法。可分为:
基于区域技术,如聚类算法
基于边缘技术

K-means算法是经典的基于划分的聚类方法,其基本思想是:以空间中的k个点为中心进行聚类图像聚类算法,对最靠近它们的对象归类,类别数为k。不断迭代,逐次更新各聚类中心的值,直至得到最好的聚类结果。 最终的k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。该算法的最大优势在于简洁和快速,算法的关键在于预测可能分类的数量以及初始中心和距离公式的选择。 假设要把样本集分为k个类别,算法描述如下: (1)初始时随机地选择k个点作为k个类的初始聚类中心; (2)在第i次迭代中图像聚类算法,对任意一个样本点,求其到聚类k个中心的距离,将该样本点归到距离最短的聚类中心所在的类; (3)利用均值等方法更新该类的聚类中心; (4)对于所有的k个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变或相差很小,则迭代结束,否则继续迭代。
cv2.kmeans(data, K, bestLabels, criteria, attempts, flags)
参数: data: 分类数据,最好是np.float32的数据,每个特征放一列。

K: 分类数,opencv2的kmeans分类是需要已知分类数的。
bestLabels:预设的分类标签或者None
criteria:迭代停止的模式选择,这是一个含有三个元素的元组型数。格式为(type, max_iter, epsilon) 其中,type有如下模式: —–cv2.TERM_CRITERIA_EPS :精确度(误差)满足epsilon停止。 —-cv2.TERM_CRITERIA_MAX_ITER:迭代次数超过max_iter停止。 —-cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,两者合体,任意一个满足结束。
attempts:重复试验kmeans算法次数,将会返回最好的一次结果
创建或打开文件方法内部首先定义两个整型变量分别为flags与permflags表示文件创建或打开的方式以及指定的权限模式,并且初始化为0。到后面你的等级达到一定程度时具体我也不记得了,地点也在飞龙兽躺着的城市,基尔兽则是要到西部城市的密林里打败大古拉兽,方法相同,假如是开始选择第二组后面会得到基尔兽和v仔兽,选第一组,我玩这个游戏的时候是根据自己初始所选择的数码宝贝决定的,到恐龙山谷找拿着像杀虫剂的那个灰衣人,接着你坐那个传送带到南部城市那里会遇到战斗暴龙兽,他的话里会有关于agumon的dna之类的话,而v仔兽则是需要你初始选择第二组或第三组数码宝贝,到那个有飞龙兽躺着的城市找一个拿着像杀虫剂一样的灰衣人,同样之前要达到一定等级还有去找另一个拿着像杀虫剂一样的灰衣人,他会给你agumon的dna,打败它这个真没有详细的攻略给你。文章的选择应根据师生实际,从预设的教学中心目标(知识中心、能力中心、方法中心、价值观中心)、文章要素(主题、体裁、语言形式、表现手法、深度等)、作者(年代、国度、写作特点)等方面,多角度地进行科学搭配,注重层次与整体效果,使文章的选择更趋合理,能更好地为学生能力和素养的培养服务。
返回值: compactness:紧密度,返回每个点到相应重心的距离的平方和

labels:结果标记,每个成员被标记为0,1等 centers:由聚类的中心组成的数组 '''
import cv2
import matplotlib.pyplot as plt
import numpy as np
def seg_kmeans_gray():
#读取图片
img = cv2.imread('pic.jpg', cv2.IMREAD_GRAYSCALE)
# 展平
img_flat = img.reshape((img.shape[0] * img.shape[1], 1))
img_flat = np.float32(img_flat)
# 迭代参数
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TermCriteria_MAX_ITER, 20, 0.5)
flags = cv2.KMEANS_RANDOM_CENTERS
# 进行聚类
compactness, labels, centers = cv2.kmeans(img_flat, 2, None, criteria, 10, flags)
# 显示结果
img_output = labels.reshape((img.shape[0], img.shape[1]))
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('input')
plt.subplot(122), plt.imshow(img_output, 'gray'), plt.title('kmeans')
plt.show()
if __name__ == '__main__':
seg_kmeans_gray()
import cv2
import matplotlib.pyplot as plt
import numpy as np
def seg_kmeans_color():
img = cv2.imread('pic.png', cv2.IMREAD_COLOR)
# 变换一下图像通道bgr->rgb,否则很别扭啊
b, g, r = cv2.split(img)
img = cv2.merge([r, g, b])
# 3个通道展平
img_flat = img.reshape((img.shape[0] * img.shape[1], 3))
img_flat = np.float32(img_flat)
# 迭代参数
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TermCriteria_MAX_ITER, 20, 0.5)
flags = cv2.KMEANS_RANDOM_CENTERS
# 聚类,这里k=2
compactness, labels, centers = cv2.kmeans(img_flat, 2, None, criteria, 10, flags)
# 显示结果
img_output = labels.reshape((img.shape[0], img.shape[1]))
plt.subplot(121), plt.imshow(img), plt.title('input')
plt.subplot(122), plt.imshow(img_output, 'gray'), plt.title('kmeans')
plt.show()
if __name__ == '__main__':
seg_kmeans_color()
效果图:



后来,调整了勘测方位,由梅花山的西坡入手,缩小范围,加大勘探密度,由之前的2米×2米,精细到1米×1米。例如软件开发项目还会因为项目资源特别是人力资源缺乏、人员生病、人员离职、项目团队成员临时有其他更紧急的任务造员流动等不可预见的事件对项目的进度控制造成影响(即项目按时完成是基于如下假设:人力资源不会缺乏、人员不会生病、人员不会流动)。本文介绍了项目管理在我院软件项目开发过程中的应用,具体分析了pdca循环和5w2h分析法在“门诊电子病历项目”和“医院业务集成平台与临床科研数据中心项目”中的应用实践,结果显示pdca循环和5w2h分析法在项目中发挥出了重要作用,有效控制了项目实施过程中的风险,确保了项目的进度及质量。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-109868-1.html
打