① 图像分割最好方法
1.基于阈值的分割方法
阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值作比较,最后将像素根据比较结果分到合适的类别中。因此,该方法最为关键的一步就是按照某个准则函数来求解最佳灰度阈值。
阈值法特别适用于目标和背景占据不同灰度级范围的图。图像若只有目标和背景两大类,那么只需要选取一个阈值进行分割,此方法成为单阈值分割;但是如果图像中有多个目标需要提取,单一阈值的分割就会出现作物,在这种情况下就需要选取多个阈值将每个目标分隔开,这种分割方法相应的成为多阈值分割。
2.基于区域的图像分割方法
基于区域的分割方法是以直接寻找区域为基础的分割技术,基于区域提取方法有两种基本形式:一种是区域生长,从单个像素出发,逐步合并以形成所需要的分割区域;另一种是从全局出发,逐步切割至所需的分割区域。
分水岭算法
分水岭算法是一个非常好理解的算法,它根据分水岭的构成来考虑图像的分割,现实中我们可以想象成有山和湖的景象,那么一定是水绕山山围水的景象。
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
② python怎么做快速图像分割算法
时间序列模型最常用最强大的的工具就是递归神经网络(recurrent neural network, RNN)。相比与普通神经网络的各计算结果之间相互独立的特点,RNN的每一次隐含层的计算结果都与当前输入以及上一次的隐含层结果相关。
通过这种方法,RNN的计算结果便具备了记忆之前几次结果的特点。
③ 图像分割
图A的按照图B的直方图进行规定化也只是近似规定化,就是如何将图A中个像素值的灰度值变化得到一幅新图,该图的灰度值按照图B直方图的规律进行分布。这很难得到严格遵守图B的直方图分布规律。这种逼近有很多种算法。
这个就可以了:演示其中一张图
%规定化直方图
clear all
clc
A=imread('girl.png'); %读入图像
A=rgb2gray(A);
imshow(A) %显示出来
title('输入图像')
%绘制直方图
[m,n]=size(A); %测量图像尺寸
B=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
B(k+1)=length(find(A==k)); %计算每级灰度出现的概率,将其存入B中相应位置
end
figure,bar(0:255,B,'g'); %绘制直方图
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
axis([0,260,0,0.026])
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=B(j)+S1(i); %计算原灰度图累计直方图
end
end
S3=zeros(1,256);
for i=1:150
S3(i+80)=B(i);
end
S4=zeros(1,256);
for i=81:230
S4(i)=B(i)+S3(i);
end
counts=S4;
S2=zeros(1,256);
for i=1:256
for j=1:i
S2(i)=counts(j)+S2(i);
end
end; %"累计"规定化直方图
%对比直方图,找到相差最小的灰度级
S=zeros(256,256);
for i=1:256
for j=1:256
S(j,i)=abs(S2(j)-S1(i));
end
end
[Y,T]=min(S);
%确定变换关系,重组直方图
for j=1:256
H(j)=sum(B(find(T==j)));
end
figure,bar(0:255,H,'g') %显示规定化后的直方图
title('规定化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
axis([0,260,0,0.03])
%显示规定图
PA=A;
for i=0:255
PA(find(A==i))=T(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像
title('规定化后图像')
④ OCR图像文字识别图像分割算法
对于文字ocr中的分割步骤应用的算法一般是个综合体,不是像你说的单一某种算法可完成的
比如不粘连的 可以用连通检测分割, 粘连的一般会用投影分割加验知,粘连厉害的可以用像滴水法等
⑤ 如何分析一个图像分割算法
论文阅读笔记:图像分割方法deeplab以及Hole算法解析
deeplab发表在ICLR 2015上。论文下载地址:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFS.
deeplab方法概述
deeplab方法分为两步走,第一步仍然采用了FCN得到 coarse score map并插值到原图像大小,然后第二步借用fully connected CRF对从FCN得到的分割结果进行细节上的refine。
下面这张图很清楚地展示了整个结构:
然后这张图展示了CRF处理前后的效果对比,可以看出用了CRF以后,细节确实改善了很多:
deeplab对FCN更加优雅的处理方式
在第一步中,deeplab仍然采用了FCN来得到score map,并且也是在VGG网络上进行fine-tuning。但是在得到score map的处理方式上,要比原FCN处理的优雅很多。
还记得CVPR 2015的FCN中是怎么得到一个更加dense的score map的吗? 是一张500x500的输入图像,直接在第一个卷积层上conv1_1来了一个100的大padding。最终在fc7层勉强得到一个16x16的score map。虽然处理上稍显粗糙,但是毕竟人家是第一次将图像分割在CNN上搞成end-to-end,并且在当时performance是state-of-the-art,也很理解。
deeplab摒弃了这种做法,取而代之的是对VGG的网络结构上做了小改动:将VGG网络的pool4和pool5层的stride由原来的2改为了1。就是这样一个改动,使得vgg网络总的stride由原来的32变成8,进而使得在输入图像为514x514,正常的padding时,fc7能得到67x67的score map, 要比FCN确实要dense很多很多。
但是这种改变网络结果的做法也带来了一个问题: stride改变以后,如果想继续利用vgg model进行fine tuning,会导致后面filter作用的区域发生改变,换句话说就是感受野发生变化。这个问题在下图(a) (b)中通过花括号体现出来了:
Hole算法
于是乎,作者想出了一招,来解决两个看似有点矛盾的问题:
既想利用已经训练好的模型进行fine-tuning,又想改变网络结构得到更加dense的score map.
这个解决办法就是采用Hole算法。如下图(a) (b)所示,在以往的卷积或者pooling中,一个filter中相邻的权重作用在feature map上的位置都是物理上连续的。如下图(c)所示,为了保证感受野不发生变化,某一层的stride由2变为1以后,后面的层需要采用hole算法,具体来讲就是将连续的连接关系是根据hole size大小变成skip连接的(图(c)为了显示方便直接画在本层上了)。不要被(c)中的padding为2吓着了,其实2个padding不会同时和一个filter相连。
pool4的stride由2变为1,则紧接着的conv5_1, conv5_2和conv5_3中hole size为2。接着pool5由2变为1, 则后面的fc6中hole size为4。
代码
主要是im2col(前传)和col2im(反传)中做了改动 (增加了hole_w, hole_h),这里只贴cpu的用于理解:
⑥ 图像分割算法 的大致流程(最好是MRF)
http://..com/question/29169347.html
⑦ 跪求图像分割snake算法详细解释
主要公式为曲线能量Esnake(公式1);Esnake由内部能量Eint(公式2)及外部能量Eext(公式3)组成;而根据公式2内部能量Eint是由一阶导得到的平滑性约束(弹性绳子)二阶导得到的气球约束(刚性棍子)共同决定;根据公式3外部能Eext由梯度场决定(另一个分量不考虑)那么粗略表示为Esnake=Vs+Vss+Eext;可以认为当Esnake的能量达到最小时snake曲线和物体的边缘一致。
上面这些基本是每个论文上面都有的,下面照我的理解来讲。结合很多论文上用的那个U形物体,snake检测它的轮廓时,预先以一个圆形的像素圈套住它作为初始的snake线,可以取一定个数的点来离散化snake线,那么这时就可以求这条snake线与原始图像间的曲线能量Esnake了;Vs对应的是一阶的平滑性,可转化为snake线中相邻像素之间的坐标差;差值越大能量越大平滑性也就越差;Vss对应的是二阶的刚性;可转化为snake线中某点和它相邻的线上点间的法线方向的增长度量;Eext是梯度场能量,是由原本的灰度图决定的,可转化为snake中某点在灰度图中的邻域梯度。求出了这三个;再以一定的方式进行循环逼近那个使Esnake最小的snake线就找到了轮廓。
过奖了~我也是在研究中,你留个邮箱,我发个程序给你,看实例好理解点
⑧ 传统的图像分割方法有哪些
1.基于阈值的分割方法
灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的变化
其中,T为阈值;对于物体的图像元素,g(i,j)=1,对于背景的图像元素,g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个适合的阈值就可准确地将图像分割开来。阈值确定后,阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
阈值分割的优点是计算简单、运算效率较高、速度快。在重视运算效率的应用场合(如用于软件实现),它得到了广泛应用。
2.基于区域的分割方法
区域生长和分裂合并法是两种典型的串行区域技术,其分割过程后续步骤的处理要根据前面步骤的结果进行判断而确定。
(1)区域生长
区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。这样一个区域就长成了。
(2)区域分裂合并
区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标提取。分裂合并差不多是区域生长的逆过程:从整个图像出发,不断分裂得到各个子区域,然后再把前景区域合并,实现目标提取。分裂合并的假设是对于一幅图像,前景区域是由一些相互连通的像素组成的,因此,如果把一幅图像分裂到像素级,那么就可以判定该像素是否为前景像素。当所有像素点或者子区域完成判断以后,把前景区域或者像素合并就可得到前景目标。
3.基于边缘的分割方法
基于边缘的分割方法是指通过边缘检测,即检测灰度级或者结构具有突变的地方,确定一个区域的终结,即另一个区域开始的地方。不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。
4.基于特定理论的分割方法
图像分割至今尚无通用的自身理论。随着各学科新理论和新方法的提出,出现了与一些特定理论、方法相结合的图像分割方法,主要有:基于聚类分析的图像分割方法、基于模糊集理论的分割方法等。
5.基于基因编码的分割方法
基于基因编码的分割方法是指把图像背景和目标像素用不同的基因编码表示,通过区域性的划分,把图像背景和目标分离出来的方法。该方法具有处理速度快的优点,但算法实现起来比较难。
6.基于小波变换的分割方法
小波变换是近年来得到广泛应用的数学工具,它在时域和频域都具有良好的局部化性质,并且小波变换具有多尺度特性,能够在不同尺度上对信号进行分析,因此在图像处理和分析等许多方面得到应用。
基于小波变换的阈值图像分割方法的基本思想是首先由二进小波变换将图像的直方图分解为不同层次的小波系数,然后依据给定的分割准则和小波系数选择阈值门限,最后利用阈值标出图像分割的区域。整个分割过程是从粗到细,由尺度变化来控制,即起始分割由粗略的L2(R)子空间上投影的直方图来实现,如果分割不理想,则利用直方图在精细的子空间上的小波系数逐步细化图像分割。分割算法的计算会与图像尺寸大小呈线性变化。
7.基于神经网络的分割方法
近年来,人工神经网络识别技术已经引起了广泛的关注,并应用于图像分割。基于神经网络的分割方法的基本思想是通过训练多层感知机来得到线性决策函数,然后用决策函数对像素进行分类来达到分割的目的。这种方法需要大量的训练数据。神经网络存在巨量的连接,容易引入空间信息,能较好地解决图像中的噪声和不均匀问题。选择何种网络结构是这种方法要解决的主要问题。
⑨ 聚类的图像分割算法
《C语言数值算法程序大全》第二版,定价88元,楼主掏点金子吧,我手头有一本,不过你看不着。