您当前的位置:首页 > 美文分享

分水岭算法的原理及相关思想的阐述是什么?如何计算分水岭分割后区域的像素个数

时间:2023-01-30 11:41:25

本文目录

  • 分水岭算法的原理及相关思想的阐述是什么
  • 如何计算分水岭分割后区域的像素个数
  • 分水岭图像分割中,常常用梯度图像代替原始图像作为分水岭算法的输入的原因
  • OpenCV 如何进行二值图像的分水岭算法
  • MATLAB 分水岭分割算法
  • matlab 标记分水岭算法源码
  • 图像分割中分水岭算法的流程是什么我论文答辩要做10分钟左右的讲解,给的越多越好,谢谢
  • 帮帮我 我不知道分水岭算法在图像分割中的应用 代码,还有别的帮帮我
  • 分水岭算法的产生与发展过程

分水岭算法的原理及相关思想的阐述是什么

首先选择最低的点,就是分水岭中最底的山谷。然后灌水:1 . 极值点周围的点也划分到极值点,它们属于一个区域。2 . 在灌水的过程中根据你设定的阈值,还需要把有的区域合并。3. 这个过程中有新的局部极值点产生,也是山谷,但不一定是最底的山谷。最后灌满了水之后,由起始的极值点形成了一个一个的区域。

如何计算分水岭分割后区域的像素个数

这个其实在进行分水岭分割的过程就能过直接得到。如果你是基于标记点的meyer分水岭分割算法,那么在没有进行区域合并和仅仅使用分水岭分割的情况下,标记点的数目等于最终的分水岭分割区域的数目。如果你是原始的Vincen分水岭分割算法,程序中会将每个区域梯度极小值作为集水点开始涨水,那么每遇到一个新的集水点,则会出现一个新的集水盆地,对应的就是一个分水岭分割区域。所以,只要你会分水岭分割算法,你就很轻而易举的知道分水岭分割区域的数目。如果你是只有一幅分水岭分割图的话,可以看看联通区域标记算法,也可以很容易的获取联通区域的个数,每个联通区域对应一个分割区域。

分水岭图像分割中,常常用梯度图像代替原始图像作为分水岭算法的输入的原因

分水岭算法是数学形态学分割方法中的经典算法,它将图像看作是地形学上被水覆盖的自然地貌,图像中的每一像素的灰度值表示该点的海拔高度,其每一个局部极小值及其影响区域称为集水盆,集水盆的边界则是分水岭,在各极小区域的表面打一个小孔,同时让水从小孔中涌出,并慢慢淹没极小区域周围的区域,那么各极小区域波及的范围,即是相应的集水盆,对应图像中的区域;不同区域的水流相遇时的界限,就是期望得到的分水岭,对应区域的边缘。分水岭变换可以保证分割区域的连续性和封闭性。 分水岭变换是从局部极小点开始,即只能是在梯度图中用, 原始图是转换后才能用于分水岭变换的 一般图像中存在多个极小值点,通常会存在过分割现象,可以采用梯度阈值分割改进或者采用标记分水岭算法将多个极小值区域连在一起 opencv提供分水岭的代码 可以找来看一下

OpenCV 如何进行二值图像的分水岭算法

没用过。不过从程序看,处理彩色图像先要转成灰色图像,处理完再转回彩色。转换函数是cvCvtColor(...),参数CV_BGR2GRAY 是RGB到grey, 参数 CV_GRAY2BGR 是grey 到RGB.处理结果是彩色的,则转灰色就是了:cvCvtColor( inputImg, grayImg, CV_BGR2GRAY);

MATLAB 分水岭分割算法

其实,这涉及到命令和算法,单一的命令往往不能解决所有的问题,要有前处理或后处理,才能达到目的。另外,也说明,某个命令应该升级或更新了。所以,watershed这个命令,单用达不到所期望的效果,只有加上预处理才行。

matlab 标记分水岭算法源码

作者写的非常详细。% 数字图像处理程序作业% 本程序能将JPG格式的彩色图像文件灰度化并进行直方图均衡% % 输入文件:PicSample.jpg 待处理图像% 输出文件:PicSampleGray.bmp 灰度化后图像% PicEqual.bmp 均衡化后图像%% 输出图形窗口说明% figure NO 1 待处理彩色图像% figure NO 2 灰度化后图像% figure NO 3 直方图% figure NO 4 均衡化后直方图% figure NO 5 灰度变化曲线% figure NO 6 均衡化后图像% 1, 处理的图片名字要为 PicSample.jpg% 2, 程序每次运行时会先清空workspace% 作者;archiless lorder clear all%一,图像的预处理,读入彩色图像将其灰度化PS=imread(’PicSample.jpg’); %读入JPG彩色图像文件imshow(PS) %显示出来 figure NO 1 title(’输入的彩色JPG图像’)imwrite(rgb2gray(PS),’PicSampleGray.bmp’); %将彩色图片灰度化并保存PS=rgb2gray(PS); %灰度化后的数据存入数组figure,imshow(PS) %显示灰度化后的图像,也是均衡化前的样品 figure NO 2title(’灰度化后的图像’)%二,绘制直方图[m,n]=size(PS); %测量图像尺寸参数GP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255 GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endfigure,bar(0:255,GP,’g’) %绘制直方图 figure NO 3title(’原图像直方图’)xlabel(’灰度值’)ylabel(’出现概率’)%三,直方图均衡化S1=zeros(1,256);for i=1:256 for j=1:i S1(i)=GP(j)+S1(i); %计算Sk endend S2=round(S1*256); %将Sk归到相近级的灰度for i=1:256 GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率 endfigure,bar(0:255,GPeq,’b’) %显示均衡化后的直方图 figure NO 4title(’均衡化后的直方图’)xlabel(’灰度值’)ylabel(’出现概率’)figure,plot(0:255,S2,’r’) %显示灰度变化曲线 figure NO 5legend(’灰度变化曲线’)xlabel(’原图像灰度级’)ylabel(’均衡化后灰度级’)%四,图像均衡化PA=PS;for i=0:255 PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素endfigure,imshow(PA) %显示均衡化后的图像 figure NO 6title(’均衡化后图像’)imwrite(PA,’PicEqual.bmp’);

图像分割中分水岭算法的流程是什么我论文答辩要做10分钟左右的讲解,给的越多越好,谢谢

  分水岭算法的概念及原理  分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。  分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L. Vincent提出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个是淹没过程。首先对每个像素的灰度级进行从低到高排序,然后在从低到高实现淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。  分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。显然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像作为输入图像,即  g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5  式中,f(x,y)表示原始图像,grad{.}表示梯度运算。  分水岭算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化,都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,是得到封闭连续边缘的保证的。另外,分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提供了可能。  为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识去除无关边缘信息。二是修改梯度函数使得集水盆只响应想要探测的目标。  为降低分水岭算法产生的过度分割,通常要对梯度函数进行修改,一个简单的方法是对梯度图像进行阈值处理,以消除灰度的微小变化产生的过度分割。即  g(x,y)=max(grad(f(x,y)),gθ)  式中,gθ表示阈值。  程序可采用方法:用阈值限制梯度图像以达到消除灰度值的微小变化产生的过度分割,获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高排序,然后在从低到高实现淹没的过程,梯度图像用Sobel算子计算获得。对梯度图像进行阈值处理时,选取合适的阈值对最终分割的图像有很大影响,因此阈值的选取是图像分割效果好坏的一个关键。缺点:实际图像中可能含有微弱的边缘,灰度变化的数值差别不是特别明显,选取阈值过大可能会消去这些微弱边缘。

帮帮我 我不知道分水岭算法在图像分割中的应用 代码,还有别的帮帮我

clear,clc%三种方法进行分水岭分割%读入图像filename=’sar1.bmp’;f=imread(filename);Info=imfinfo(filename);if Info.BitDepth》8 f=rgb2gray(f);endfigure,mesh(double(f));%显示图像,类似集水盆地%方法1:一般分水岭分割,从结果可以看出存在过分割问题b=im2bw(f,graythresh(f));%二值化,注意应保证集水盆地的值较低(为0),否则就要对b取反d=bwdist(b); %求零值到最近非零值的距离,即集水盆地到分水岭的距离 l=watershed(-d); %matlab自带分水岭算法,l中的零值即为风水岭w=l==0; %取出边缘g=b&~w; %用w作为mask从二值图像中取值figuresubplot(2,3,1),imshow(f);subplot(2,3,2),imshow(b);subplot(2,3,3),imshow(d);subplot(2,3,4),imshow(l);subplot(2,3,5),imshow(w);subplot(2,3,6),imshow(g);%方法2:使用梯度的两次分水岭分割,从结果可以看出还存在过分割问题(在方法1的基础上改进)h=fspecial(’sobel’);%获得纵方向的sobel算子fd=double(f);g=sqrt(imfilter(fd,h,’replicate’).^2+imfilter(fd,h’,’replicate’).^2);%使用sobel算子进行梯度运算l=watershed(g);%分水岭运算wr=l==0; g2=imclose(imopen(g,ones(3,3)),ones(3,3));%进行开闭运算对图像进行平滑l2=watershed(g2);%再次进行分水岭运算wr2=l2==0;f2=f;f2(wr2)=255;figuresubplot(2,3,1),imshow(f);subplot(2,3,2),imshow(g);subplot(2,3,3),imshow(l);subplot(2,3,4),imshow(g2);subplot(2,3,5),imshow(l2);subplot(2,3,6),imshow(f2);%方法3:使用梯度加掩模的三次分水岭算法(在方法2的基础上改进)h=fspecial(’sobel’);%获得纵方向的sobel算子fd=double(f);g=sqrt(imfilter(fd,h,’replicate’).^2+imfilter(fd,h’,’replicate’).^2);%使用sobel算子进行梯度运算l=watershed(g);%分水岭运算wr=l==0; rm=imregionalmin(g); %计算图像的区域最小值定位,该函数仅仅是用来观察为何分水岭算法产生这么多集水盆地im=imextendedmin(f,2);%上面仅是产生最小值点,而该函数则是得到最小值附近的区域,此处的附近是相差2的区域fim=f; fim(im)=175; %将im在原图上标识出,用以观察 lim=watershed(bwdist(im));%再次分水岭计算em=lim==0;g2=imimposemin(g,im|em);%在梯度图上标出im和em,im是集水盆地的中心,em是分水岭l2=watershed(g2); %第三次分水岭计算f2=f;f2(l2==0)=255; %从原图对分水岭进行观察figuresubplot(3,3,1),imshow(f);subplot(3,3,2),imshow(g);subplot(3,3,3),imshow(l);subplot(3,3,4),imshow(im);subplot(3,3,5),imshow(fim);subplot(3,3,6),imshow(lim);subplot(3,3,7),imshow(g2);subplot(3,3,8),imshow(l2)subplot(3,3,9),imshow(f2);

分水岭算法的产生与发展过程

分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L.Vincent为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识

分水岭

|| 相关文章
    无相关信息
最新文章