-
计算机视觉第9章实验-图像分割
图像分割
图像分割是指根据灰度、颜色、纹理、形状等特征,将图像分成若干个不重叠的区域,并使得这些特征在同一区域内显得相似,而不同区域之间显得有明显的差异。
基于图切割的分割
这类方法把图像分割问题和图的最小割问题联系起来,首先将图像映射到一个带权无向图G=,其中每个节点N∈V对应图像中每个像素,每条边∈E连接一对相邻像素,边的权重表示相邻像素之间在灰度、颜色或纹理方面的非负相似性。图像的一个分割区域s是图的一个割点,每个分割区域C∈S对应图中的一个子图。分割的最优原则是最大化划分后的子图内相似性、最小化子图间相似性。基于图论的分割方法的本质是通过去除特定的边,将图划分为若干个子图实现分割,目前已知的基于图论的方法包括,以及Walk等。
今天我们将用这个方法来做两个简单的例子
例子
我先附上实现代码
from pygraph.classes.digraph import digraph from pygraph.algorithms.minmax import maximum_flow gr = digraph() gr.add_nodes([0,1,2,3]) gr.add_edge((0,1), wt=4) gr.add_edge((1,2), wt=3) gr.add_edge((2,3), wt=5) gr.add_edge((0,2), wt=3) gr.add_edge((1,3), wt=4) flows,cuts = maximum_flow(gr, 0, 3) print ('flow is:' , flows) print ('cut is:' , cuts)
下面是一个使用-graph工具包计算小图的最大流/最小割的简单例子。
这段代码中,我们先创建一个有 4 个节点的有向图,节点索引分别为 0、1、2、3,然后使用 () 增加每条边的权重,权重用来衡量边的最大流容量,以节点 0 为源,节点 3 为汇,计算最大流。
上图所示的两行数字包含流经过的每条边和每个节点的标签;0 表示图中包含源节点的部分,1 表示连接到接收器节点的节点。
# -*- coding: utf-8 -*- from scipy.misc import imresize from PCV.tools import graphcut from PIL import Image from numpy import * from pylab import * im = array(Image.open("empire.jpg")) im = imresize(im, 0.07) size = im.shape[:2] print ("OK!!") # add two rectangular training regions labels = zeros(size) labels[3:18, 3:18] = -1 labels[-18:-3, -18:-3] = 1 print ("OK!!") # create graph g = graphcut.build_bayes_graph(im, labels, kappa=1) # cut the graph res = graphcut.cut_graph(g, size) print ("OK!!") figure() graphcut.show_labeling(im, labels) figure() imshow(res) gray() axis('off') show()
我们使用()函数将图像缩小到足够小以适合我们的-graph库。在此代码中,我们均匀地将图像缩小到原始图像大小的7%。在对图像进行分割后,将结果与训练区域一起绘制。
图上的朴素贝叶斯分类器模型
本代码中使用的分割函数是 .(im, , kappa=1),它根据一幅图像中像素的四个邻域,前景和背景,构建一个图,这四个邻域由我们确定,并通过朴素贝叶斯分类器建模。这个函数中还有一个参数 kappa,它决定了相邻像素之间的相对权重。改变 k 值分割效果,随着 k 值的增加,分割边界会变得越来越平滑,一些细节会逐渐丢失。
这里我将 kappa 设置为 1 和 1.5,得到以下结果。图 1 显示 kappa 为 1,图 2 显示 kappa 为 1.5
94
扫一扫在手机端查看
- 上一篇:域名解析服务器地址_DNS域名解析,以及A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR说明
- 下一篇:linux搭建各种服务_使用Linux(CentOS)搭建SVN服务器全攻略
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1