阈值分割与区域分割

本文主要包括以下内容

  • 阈值分割技术
  • 基于区域的图像分割技术
  • 本章的典型案例
    • 基于LoG和Canny算子的精确边缘检测
    • 基于Hough变换的直线检测
    • 图像的四叉树分解

阈值分割

我们曾在3.5节学习过灰度阈值变换的相关知识, 利用灰度阈值变换分割图像就称为阈值分割, 它是一种基本的图像分割方法。
阙值分割的基本思想是确定一个阈值, 然后把每个像素点的灰度值和阈值相比较,根据比较的结果把该像素划分为两类:前景或者背景,阈值分割可以分成以下3步:

  • 确定阈值.
  • 将阈值和像素比较,.
  • 把像素归类

其中第1步阈值最重要。阈值的选择将直接影响分割的准确性以及由此产生的图像描述,分析的正确性。

阈值分割方法

阈值分割常用的方法一般有以下几种。

实验法
实验法是通过人眼的观察, 对已知某些特征的图像, 只要试验不同的阈值, 然后看是否满足已知特征即可。这种方法的不足在于适用范围窄,
使用前必须了解图像的某些特征, 譬如平均灰度等,而且分割后图像质量的好坏受主观局限性很大。

根据直方图谷底确定阈值
如果图像的前景物体内部和背景区域的灰度值分布都比较均匀, 那么这个图像的灰度直方图将具有明显双峰, 此时可以选择两峰之间的谷底作为阈值。
其表达式为:

注意:由于直方图是各灰度的像素统计,其峰值和谷底特性不一定代表目标和背景.因此,如果没有图像其他方面的知识,只靠直方图进行图像分割不一定准确 .

迭代选择阈值法
迭代式阈值选择方法的基本思想是:开始选择一个阈值作为初始估计值,然后按照某种规则不断地更新这一估计值,直到满足给定的条件为止。这个过程的关键在于选择怎么样的 迭代规则。一个好的迭代规则必须既能够快速收敛,又能够在每一个迭代过程中产生优于上次迭代的结果。下面是一种迭代选择阈值算法:
(1)选择一个T的初始估计值。
(2)利用阈值T把图像分为两个区域R1, 和R2
(3)对区域R1和R2中的所有像素计算平均灰度值μ1和μ2
(4)计算新的阈值:

T=12(u1+u2)

(5)重复步骤2-4, 直到逐次迭代所得的T值小于事先定义的参数T。

最小均方误差法
最小均方误差法也是常用的阈值分割法之一。这种方法通常以图像中的灰度为模式特征,假设各模式的灰度是独立分布的随机变量,并假设图像中待分割的模式服从一定的概率分布。一般来说,采用的是正态分布,即高斯概率分布。
首先假设一幅图像仅包含两个主要的灰度区域前景和背景。令z表示灰度值,p(z)表示灰度值概率密度函数的估计值。假设概率密度函数一个对应于背景的灰度值,另一个对应于图像中前景即对象的灰度值。则描述图像中整体灰度变换的混合密度函数是:

p(z)=P1p1(z)+P2p2(z)

其中 P1是前景中具有值z的像素出现的概率, P2是背景中具有值z的像素出现的概率,两者的关系为:
P1+P2=1


最大类间方差法
在对图像进行阈值分割时,选定的分割阈值应使前景区域的平均灰度、背景区域的平均灰度与整幅图像的平均灰度之间差别最大,这种差异用区域的方差来表示。由此,Otsu在1978年提出了最大方差法。该算法在判决分析最小二乘法原理的基础上推导得出,计算过程简单是一种稳定、常用的算法。

让T在[O,L-1]范围内依次取值, 使类间方差最大的T值便是最佳区域分割阈值。
该方法不需要人为设定其他参数,是一种自动选择阈值的方法,而且能得到较好的结果。它不仅适用于包含两个区域的单阈值选择,也同样适用于多区域的多阈值选择。

Matlab实现

最大类间方差法
Matlab中和阙值变换相关的两个主要函数是im2bw和graythresh。实际上,利用graythresh函数即可实现最大类间方差法。

迭代选择阈值法

function [Ibw, thres] = autothreshold(I)
% 迭代法自动阈值分割
%
% 输入:I - 要进行自动阈值分割的灰度图像
% 输出:Ibw - 分割后的二值图像
%      thres - 自动分割采用的阈值thres = 0.5 * (double(min(I(:))) + double(max(I(:)))); %初始阈值
done = false; %结束标志
while ~doneg = I >= thres;Tnext = 0.5 * (mean(I(g)) + mean(I(~g)));done = abs(thres - Tnext) < 0.5;thres = Tnext;
end;Ibw = im2bw(I, thres/255); % 二值化

区域分割

前面所讲的图像分割方法都是基于像素的灰度来进行阈值分割, 本节将讨论以区域为基础的图像分割技术。传统的区域分割方法有区域生长和区域分裂与合井, 其中最基础的是区域生长法。

区域生长及其实现

区域生长是根据事先定义的准则将像素或者子区域聚合成更大区域的过程。其基本思想是从一组生长点开始(生长点可以是单个像素,也可以为某个小区域),将与该生长点性质相似的相邻像素或者区域与生长点合并,形成新的生长点,重复此过程直到不能生长为止。生长点和相邻区域的相似性判据可以是灰度值、纹理、颜色等多种图像信息。

区域生长算法
区域生长一般有3个步骤。
(1)选择合适的生长点。
(2)确定相似性准则即生长准则。
(3)确定生长停止条件。
一般来说, 在无像素或者区域满足加入生长区域的条件时, 区域生长就会停止。

上述方法比较的是单个像素与其邻域的灰度特征以实现区域生长,也有一种混合型区域生长把图像分割成若干小区域,比较相邻小区域的相似性,如果相似则合并。在实际中,区 域生长时经常还要考虑到生长的”历史”,还要根据区域的尺寸、形状等图像的全局性质来决定区域的合并。

matlab实现

function J = regionGrow(I)
% 区域生长,需要以交互方式设定初始种子点,具体方法为鼠标单击图像中一点后,按下回车键
%
% 输入:I - 原图像
% 输出:J - 输出图像if isinteger(I)I=im2double(I);
end
figure,imshow(I),title('原始图像')
[M,N]=size(I);
[y,x]=getpts;             %获得区域生长起始点
x1=round(x);            %横坐标取整
y1=round(y);            %纵坐标取整
seed=I(x1,y1);           %将生长起始点灰度值存入seed中
J=zeros(M,N);          %作一个全零与原图像等大的图像矩阵J,作为输出图像矩阵
J(x1,y1)=1;             %将J中与所取点相对应位置的点设置为白
sum=seed;              %储存符合区域生长条件的点的灰度值的和
suit=1;                 %储存符合区域生长条件的点的个数
count=1;               %记录每次判断一点周围八点符合条件的新点的数目
threshold=0.15;         %阈值,注意需要和double类型存储的图像相符合
while count>0s=0;                   %记录判断一点周围八点时,符合条件的新点的灰度值之和count=0;for i=1:Mfor j=1:Nif J(i,j)==1if (i-1)>0 & (i+1)<(M+1) & (j-1)>0 & (j+1)<(N+1)  %判断此点是否为图像边界上的点for u= -1:1                               %判断点周围八点是否符合阈值条件for v= -1:1if  J(i+u,j+v)==0 & abs(I(i+u,j+v)-seed)<=threshold& 1/(1+1/15*abs(I(i+u,j+v)-seed))>0.8J(i+u,j+v)=1;%判断是否尚未标记,并且为符合阈值条件的点%符合以上两条件即将其在J中与之位置对应的点设置为白count=count+1;s=s+I(i+u,j+v);                      %此点的灰度之加入s中endendendendendendendsuit=suit+count;                                   %将n加入符合点数计数器中sum=sum+s;                                     %将s加入符合点的灰度值总合中seed=sum/suit;                                    %计算新的灰度平均值
end


选择不同的生长点,结果不同。

区域分裂与合并

区域生长是从一组生长点开始的,另一种方法是在开始时将图像分割为一系列任意不相交的区域, 然后将它们合并或者拆分以满足限制条件, 这就是区域分裂与合并。 通过分裂, 可以将不同特征的区域分离开, 而通过合并, 可以将相同特征的区域合并起来。

区域分裂与合并算法


图像先分裂为如图9.22Ca)所示;第二次分裂时,如图(b)所示,由于左下角区域满足P(Ri)=TRUE,则不进行分裂操作;第三次分裂时,如图(c)所示,仅仅右边的突出部分 P(Ri)=FALSE, 需要进行分裂操作,其余不变,完成后,分裂停止;最后,对两个相邻区域 实行合并,一直得到最后的结果,如图(d)所示。
区域分裂与合并对分割复杂的场景图像比较有效,如果引入应用领域知识,则可以更好地提高分割效果。

区域分裂的Matlab实现
在Matlab中, 和区域分裂相关的3个主要函数分别是qtdecomp、qtgetblk和qtsetblk。

(1) qtdecomp函数
Matlab的IPT函数qtdecomp可以进行四叉树分解。该函数首先将图像划分成相等大4的4块,然后对每一个块进行一致性检查。如果该块不符合一致性标准, 则将该块继续分为4块; 否则不对其进行进一步的分割。这个过程将会一直重复直至每一个块都符合一致性标
准, 分解的结果可能会包含许多大小不同的块。
qtdecomp函数的常用调用形式为:
S = qtdecomp(I,threshold,[mindim,maxdim])

threshold是分割成的子块中允许的阈值,默认值为0.如杲子块中最大元素和最小元 素的差值小于该阈值就认为满足一致性条件.对于double型矩阵,threshold将直接作为阈值;而对于uinit8和uintl6类型的矩阵,threshold将被乘以255和65535以作为实际阈值.对于图像而言,threshold的取值范围是0到1.

[mindim maxdim]是尺度阈值.mindim参数可以屏蔽函数对尺度上小于mindim的子块的处理,而不论这个子块是否满足一致性条件;如果参数形式为[mindim maxdim], 则表示不产生小于mindim尺度的子块,也不保留大于maxdim尺度的子块,此时 maxdim/mindim必须是2的整数次幂

注意: qtdecomp函数主要适用于边长是2的整数次幂的正方形图像, 如128x128,512x512, 此时分解可一直进行至子块大小为1x1。对于长宽不是2的整数次幂的图像, 分解可能无法进行到底. 例如, 对于96x96
的图像, 将首先分解为48x48, 然后是24x24, 12*12, 6*6, 最后是3x3, 无法再继续分解. 此时必须指定mindim参数为3或是2的整数次幕与3的乘积.

(2) qtgetblk函数
在得到稀疏矩阵S后, 利用IPT函数qtgetblk可进一步获得四叉树分解后所有指定大小的子块像素及位置信息。常用调用形式为:
[vals,r,c]=qtgetblk(I,S,dim)
稀疏矩阵S是经过qtdecomp函数处理的输出结果.
dim是指定子块的大小

vals是dim*dim*k的三维矩阵,包含I中所有符合条件的子块数据。其中k为符合 条件的dim*dim的大小的子块的个数,vals(:.:,i)表示符合条件的第i个子块的内容.
r和c均为列向量,分别表示图像I中符合条件子块左上角的纵坐标(行索引)和横坐标(列索引).

(3) qtsetblk函数
在将图像划分为子块后, 还需要使用函数qtsetblk将四叉树分解所得到的子块中符合条件的部分全部替换为指定的子块。函数语法为:
J = qtsetblk(I,S,dim,vals)
S是I经过qtdecomp函数处理的结果.
dim是指定的子块大小.
vals是dim*dim*k的三维矩阵,包含了用来替换原有子块的新子块信息.其中K应为图像I中大小为dim*dim的子块的总数,vals(:,:,i)表示要替换的第i个子块.

I1 = imread('rice.png');S = qtdecomp(I1,0.2);
S2 = full(S);figure;
subplot(1,2,1),imshow(I1);
subplot(1,2,2),imshow(S2);ct = zeros(6,1);
for ii = 1:6[vals{ii},r,c]=qtgetblk(I1,S2,2^(ii-1));ct(ii) = size(vals(ii),3);
end

小结
图像分割问题是一个十分困难的问题。因为分割后的图像是系统目标的一个函数, 所以根本不存在理想的或正确的分割。
物体及其组成部件的二维表现形式受到光照条件、透视畸变、观察点变化、遮挡等的影响。此外, 物体及其组成部件与背景之间在视觉上可能无法区分。因此, 人们无法预测能够从图像中抽取出哪些与物体识别相关的初始信息。
唯一可以肯定的是,这一过程将在本质上具有不可靠性。某些有用的信息能够被抽取出,且同时也会出现许多错误。因此,在任何应用领域中都不存在最优解。分割结果的好坏或者正确与否, 目前还没有一个统一的评价判断标准, 大都从分割的视觉效果和实际的应用场景来判断。

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

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

相关文章

边缘计算芯片格局分析

来源&#xff1a;半导体行业观察 近日&#xff0c;华为和比特大陆纷纷发布了针对边缘计算的新芯片产品。华为的Ascend系列采用达芬奇架构&#xff0c;其中Ascend 310功耗8W算力8TOPS正是针对边缘计算市场。而之后比特大陆发布的BM1682和BM1880也是针对边缘计算市场&#xff0c;…

基于PCA的人脸特征抽取

我们将应用PCA技术来抽取人脸特征。一幅人脸照片往往由比较多的像素构成&#xff0c;如果以每个像素作为1维特征&#xff0c;将得到一个维数非常高的特征向量&#xff0c; 计算将十分困难&#xff1b;而且这些像素之间通常具有相关性。这样&#xff0c;利用PCA技术在降低维数的…

超市的100年发展史:好日子终结 亚马逊无人店是趋势

来源&#xff1a;网易智能 电商巨头亚马逊已经在旧金山、西雅图和芝加哥等地开设了多家无人便利店Amazon Go&#xff0c;它们向顾客展现了无缝购物体验这种未来购物模式&#xff0c;它依赖于高科技追踪技术&#xff0c;消费者只需将商品从货架上取下&#xff0c;并放入帆布手提…

图像识别初步

本文主要包括以下内容 模式与模式识别的基本概念过度拟合最小距离分类器基于相关的模板匹配本章的典型案例分析 基于最小距离分类器的鸾尾属植物分类基于相关技术的图像模式匹配 模式识别概述 模式识别(Pattern Recognition)是人类的一项基本智能&#xff0c;在日常生活中…

下一个人才大缺口:量子计算研究人员

来源&#xff1a;36Kr初创公司Zapata Computing的创始人兼首席执行官克里斯托弗萨瓦&#xff08;Christopher Savoie&#xff09;表示&#xff0c;他向三位专攻量子计算的外国科学家提供了就业机会&#xff0c;他在等他们的工作签证获得批准。但几个月过去了&#xff0c;这家位…

LIBCMTD.lib与libcpmtd冲突的解决方法。

error: 1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2YAPAXIZ) 已经在 LIBCMTD.lib(new.obj) 中定义 1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??…

基于PCA和SVM的人脸识别

svm推广到多类情况 一对多的最大响应策略(one against all) 假设有A 、B、C.. D四类样本需要划分。在抽取训练集的时候&#xff0c;分别按照如下4种方式划分。 A. 所对应的样本特征向量作为正集&#xff08;类标签为1), B、C、D所对应的样本特征向量作为负集&#xff08;类…

为何协作机器人能够兴起?“协作机器人-激烈的市场谁能杀出重围”

来源&#xff1a;机器人大讲堂作者&#xff1a;包文涛&#xff0c;哈尔滨工业大学机器人研究所工学硕士&#xff0c;在机器人和工业自动化领域有超过10年的专业经验。曾任职于ABB集团&#xff0c;先后在新加坡、美国、加拿大等地工作&#xff0c;在产品管理、技术方案、项目工程…

5款新颖的ReSharper插件

ReSharper是著名的代码生成工具。自ReSharper 8.0版本发布以来&#xff0c;新的扩展管理器、模板设置、分发安装等功能改革使得对插件的要求变高。接下来小编整理了5款新颖插件。 JetBox 当开发者工作在不同的机器设备时&#xff0c;这个插件可以利用DropBox同步ReSharper设置。…

机器学习实战之K近邻算法

k近邻算法概述 简单地说,K近邻算法采用测量不同特征值之间的距离方法进行分类。 优 点 :精度高、对异常值不敏感、无数据输入假定。 缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。 它的工作原理是:存在一个样本数 据集合,也称作训练样本集,并且样本集…

神经网络的叛离:32年前从心理学与生理学分离的瞬间

来源&#xff1a;大数据文摘编译&#xff1a;Andy反向传播算法隶属于深度学习&#xff0c;它在解决模型优化问题的方面有着重要的地位。这一算法由被誉为深度学习之父的Geoffrey Hinton提出。1986年&#xff0c;他发表了名为Learning representations by back-propagating erro…

希尔排序-插入改进

引自&#xff1a;http://hi.baidu.com/gsgaoshuang/item/17a8ed3c24d9b1ba134b14c2 学习算法的一个好网站 http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.2.2.1.htm 希尔排序&#xff08;Shell Sort&#xff09;又称为缩小增量排序&#xff0c;输入插入…

机器学习实战之决策树

你是否玩过二十个问题的游戏,游戏的规则很简单:参与游戏的一方在脑海里想某个事物,其他参与者向他提问题,只允许提20个问题,问题的答案也只能用对或错回答。问问题的人通过 推断分解,逐步缩小待猜测事物的范围。决策树的工作原理与20个问题类似,用户输人一系列数 据,然后给出游…

2018全球硬科技创新暨“一带一路”创新合作大会,这些硬科技都要来!

来源&#xff1a;新华社近年来&#xff0c;多个省市陆续开始了一场科技标签秀&#xff0c;以深圳等为代表的“人工智能”、以上海为代表的“金融科技”&#xff0c;以贵州为代表的“大数据”等纷纷亮相&#xff0c;而伴随着“一带一路”新丝路的战略实施&#xff0c;西安&#…

吴恩达:人工智能寒冬不会到来,但我们太乐观了

来源&#xff1a;量子位AI Winter Is Coming&#xff1f;人工智能领域的各路专家学者曾经为这个话题吵翻了天。最近&#xff0c;这个话题又有更新了。人工智能寒冬论的作者Filip Piekniewski在博客上发文&#xff0c;给自己提出的观点增加了新的证据。非常巧的是&#xff0c;吴…

自动驾驶中常用的四类机器学习算法

来源&#xff1a;智车科技机器学习算法已经被广泛应用于自动驾驶各种解决方案&#xff0c;电控单元中的传感器数据处理大大提高了机器学习的利用率&#xff0c;也有一些潜在的应用&#xff0c;比如利用不同外部和内部的传感器的数据融合(如激光雷达、雷达、摄像头或物联网)&…

国际基因编辑科技发展报告

来源&#xff1a;全球技术地图作者&#xff1a;贾晓峰 中国科学技术信息研究所摘要&#xff1a;以特异性的改变遗传物质靶向基因序列为目标的基因编辑技术是近年生命科学领域最热门的研究领域之一。围绕基因编辑的相关领域研究和人物事件连续多年入选Nature国际科学事件和科学人…

科学家发现大脑动态评估信息重要性机制

大脑中部的丘脑室旁核&#xff08;PVT&#xff09; 图片来源&#xff1a;中科院深圳先进技术研究院来源&#xff1a;中国科学报周末该在家看书还是出去K歌&#xff1f;寒冬将至&#xff0c;该坚持健身还是涮个火锅&#xff1f;每天&#xff0c;人们都会面临上百种选择。以往&am…

腾讯AI Lab研发「智能显微镜」 抢先布局病理分析领域

来源&#xff1a;腾讯AI实验室腾讯 AI Lab 在南京举办的「腾讯全球合作伙伴大会」上宣布&#xff0c;其AI医疗领域研究已抢先从影像筛查进入病理分析阶段&#xff0c;相关的「智能显微镜」项目已在研发测试阶段。智能显微镜融入了人工智能&#xff08;AI&#xff09;的视觉、语…

石墨烯新新新应用,MIT大规模生产细胞大小机器人,有感知能存储

&#xff08;MIT开发的微型机器人&#xff09;来源&#xff1a;机器人大讲堂近期&#xff0c;MIT又玩出了新花样&#xff0c;在前几个月成功开发出细胞大小并且能够感知外部环境、储存数据并执行计算任务的微型机器人后&#xff0c;MIT又带来了新消息&#xff1a;他们为大规模生…