clear,clc%三种方法进行分水岭分割

%读入图像

filename='sar1.bmp';

f=imread(filename);

Info=imfinfo(filename);

if Info.BitDepth>8

f=rgb2gray(f);

end

figure,

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从二值图像中取值

figure

subplot(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);

以上是分水岭的算法,这是摘抄自百度知道的里的回复,感觉挺好,就年过来了。摘抄地

三种方法进行分水岭分割相关推荐

  1. matlab 分水岭法,分水岭算法Matlab实现——三种方法 | 学步园

    clear,clc%三种方法进行分水岭分割 %读入图像 filename='sar1.bmp'; f=imread(filename); Info=imfinfo(filename); if Info ...

  2. tomcat截取日志_Tomcat的日志分割三种方法

    一.Tomcat的日志分割三种方法 一.方法一:用cronolog分割tomcat的catalina.out文件 1.编译安装cronolog wget http://cronolog.org/dow ...

  3. {转}Java 字符串分割三种方法

    http://www.chenwg.com/java/java-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E5%89%B2%E4%B8%89%E7%A7%8D%E6%9 ...

  4. java string分割_java 字符串分割的三种方法(总结)

    最近在项目中遇到一个小问题,一个字符串分割成一个数组,类似String str="aaa,bbb,ccc"; 然后以","为分割符,将其分割成一个数组,用什么方 ...

  5. Java字符串分割的三种方法

     一.StringTokenizer方法 Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokeniz ...

  6. Java 字符串分割三种方法

    最近在项目中遇到一个小问题,一个字符串分割成一个数组,类似String str="aaa,bbb,ccc"; 然后以","为分割符,将其分割成一个数组,用什么方 ...

  7. java 字符串拆分技巧_{转}Java 字符串分割三种方法

    http://www.chenwg.com/java/java-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E5%89%B2%E4%B8%89%E7%A7%8D%E6%9 ...

  8. Python课堂:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...

  9. Python:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1255).(02 ...

  10. ps自定义形状工具_PS教程——用PS绘制虚线的三种方法

    点线面是平面构成的基本元素,而线条在平面设计中亦有规整分割版面.装饰造型的作用,能大幅提升版面的可读性.学会用PS绘制线条是每个自学平面设计初学者的基本功,本篇平面设计学习日记, @酷coo豆一孔之见 ...

最新文章

  1. Linux网卡驱动程序编写
  2. 基于BCH的一些落地应用现状
  3. UbuntuでPostgreSQLをインストールからリモートアクセスまでの手順
  4. window和linux下遍历目录的比较
  5. 怎样生成分布式情况下的唯一标示?必须包含网卡字段,以便不同机器生成的唯一标示肯定不一样...
  6. 关于IO模式(浮空、推挽、开漏...)描述及应用
  7. go语言goroutine的取消
  8. 软件项目经理职责[转](
  9. (七)React使用
  10. BugFree2.1.3升级到BugFree3.0.2
  11. mysql存储过程自定义结构体_(转)MySQL存储过程/存储过程与自定义函数的区别...
  12. c++实现超声回波包络检测_学术简报新型电磁超声换能器,小尺寸板材缺陷检测效率高...
  13. python-编程之美
  14. RS232通信以及dB9定义
  15. python共享单车数据分析_利用python分析共享单车项目
  16. MYSQL从简单查询到高级查询(一)
  17. 51单片机外设篇:LED点阵
  18. Windows异常学习笔记(三)—— VEHSEH
  19. vue v-if 判断某个元素满足多个条件的写法
  20. 虚拟机安装 windows xp sp3 原版镜像

热门文章

  1. width:100%以什么为基准的测试
  2. WampServer 常见问题
  3. 索引大小对语句执行速度的影响
  4. Python 利用字典实现类似 java switch case 功能
  5. 暗通道去雾算法的python实现
  6. SQL Server2008 错误源:.net SqlClient data provider的解决方法
  7. uploadify一次上传多个图片:效果展示
  8. 网页英文字体和中文字体应用
  9. JavaScript学习笔记(八)
  10. [GO]删除切片的某个值