matlab中分水岭函数并不能直接得到想要的分割结果。网络上有下面三种处理方式:

代码1:

filename=‘1.jpg';
f=imread(filename);
f=rgb2gray(f);
b1=im2bw(f,0.6);
out=edge(f,'canny',0.3);  
se=strel('disk',1);
b=imclose(b1,se);
b=imopen(b,se);
[X,Y]=size(b);
d=bwdist(b);
I=watershed(-d);
w=I==0;
wait=imfill(w,'holes');
g=f;
g2=imimposemin(d,w);
I2=watershed(g2);
g(w)=0;
wait=imopen(wait,se);
imshow(w);

代码2:

filename='1.jpg';
f=imread(filename);
f=rgb2gray(f);
b=im2bw(f,graythresh(f));
[X,Y]=size(b);
h=fspecial('sobel');
fd=double(f);
g=sqrt(imfilter(fd,h,'replicate').^2+imfilter(fd,h','replicate').^2);
I=watershed(g);
wr=I==0;
g2=imclose(imopen(g,ones(3,3)),ones(3,3));
I2=watershed(g2);
wr2=I2==0;
f2=f;
f2(wr2)=0;
imshow(f);

代码3:

filename='1.jpg';
f=imread(filename);
f=rgb2gray(f);
b=im2bw(f,graythresh(f));
[X,Y]=size(b);
h=fspecial('sobel');
fd=double(f);
g=sqrt(imfilter(fd,h,'replicate').^2+imfilter(fd,h','replicate').^2);
I=watershed(g);
wr=I==0;
rm=imregionalmin(g);
im=imextendedmin(f,50);
lim=watershed(bwdist(im));
em=lim==0;
g2=imimposemin(g,im|em);
I2=watershed(g2);
f2=f;
f2(I2==0)=0;
imshow(f2);

上述的第三种方法为最优方法,不过还是会由于背景的不均匀造成大量的误分割。在做该部分内容时,基于图像重建来去除噪声并进行保留细节特征。代码如下:

clc;
clear;

img=imread('1.jpg');
I=rgb2gray(img);
se = strel('disk', 5);
Ie=imerode(I,se);
Io=imopen(I,se);
subplot(1,2,1);imshow(I,[]);title('gray');
subplot(1,2,2);imshow(Ie);title('腐蚀');
figure;imshow(Io);title('开运算');
Iobr=imreconstruct(Ie,I);
figure;
imshow(Iobr,[]);title('基于开的重建图像');

Iobrd = imdilate(Iobr, se);
Iobrcbr = imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));
Iobrcbr = imcomplement(Iobrcbr);
figure;
imshow(Iobrcbr,[]);title('基于开闭操作的重建图像');

f=Iobrcbr;
%f=rgb2gray(f);
b=im2bw(f,graythresh(f));
%bb=im2bw(ff,graythresh(f));
[X,Y]=size(b);

h=fspecial('sobel');
fd=double(f);
g=sqrt(imfilter(fd,h,'replicate').^2+imfilter(fd,h','replicate').^2);
I=watershed(g);
wr=I==0;
rm=imregionalmin(g);

im=imextendedmin(f,13);

lim=watershed(bwdist(im));

em=lim==0;
g2=imimposemin(g,im|em);
I2=watershed(g2);
f2=f;
f2(I2==1)=255;
figure;
subplot(1,2,1);imshow(b);
subplot(1,2,2);imshow(f2);
figure;
imshow(I2);

分水岭算法及相应处理相关推荐

  1. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(五)分水岭算法(watershed algorithm)

    8.5 分水岭算法(watershed algorithm) 1.基于拓扑理论的数学形态学的分割方法. 2.基本思想:把图像看作测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局 ...

  2. OpenCV+python:分水岭算法

    1,概念简介 现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕 山,山围水的情形.当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透.而区分高山(plateaus)与水的界线,以 ...

  3. Python OpenCV分水岭算法分割和提取重叠或有衔接的图像中的对象

    本文将介绍如何使用分水岭算法对触摸和重叠的图像中的对象进行分割和提取. 参考:https://www.pyimagesearch.com/2015/11/02/watershed-opencv/ 分水 ...

  4. OpenCV(26)图像分割 -- 距离变换与分水岭算法(硬币检测、扑克牌检测、车道检测)

    目录 一.基础理论 1.思想 2.原理 二.分水岭实战:硬币 步骤归纳 1.把原图像转二值图 2.开运算去噪 3.确定背景区域(膨胀)(得到背景/最大连通域) 4.确定前景区域(距离变换) (分离)( ...

  5. OpenCV 【四】————Watershed Algorithm(图像分割)——分水岭算法的原理及实现

    分水岭算法实现(C++.opencv) 1.作用: 通常用于分割图像,主要实现以临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性 ...

  6. 什么是标记符控制的分水岭算法

    本文首先指出传统分水岭算法的不足,然后介绍了标记符控制的分水岭算法,最后通过实例演示了该算法在图像分割中的应用.该微信图文由安晟提供.

  7. 图像轮廓、凸包、图像的矩、分水岭算法、图像修补

    文章目录 1.查找并绘制轮廓 1.1 寻找轮廓:findContours() 函数 1.2 绘制轮廓:drawContours() 函数 1.3 示例程序:轮廓查找 1.4 综合示例:查找并绘制轮廓 ...

  8. OpenCV | 分水岭算法进行图像分割

    分水岭算法进行图像分割 分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称 ...

  9. python图像分割算法_Opencv(二)—图像分割之分水岭算法!

    做图像处理时,我们可能会遇到一个问题:我们只需要图片的一部分区域,如何把图片中的某部分区域提取出来 或者 图像想要的区域用某种颜色(与其它区域颜色不一致)标记起来 ,以上描述的问题在像处理领域称为 图 ...

  10. pythonopencv算法_python opencv之分水岭算法示例

    本文介绍了python opencv之分水岭算法示例,分享给大家,具体如下: 目标 使用分水岭算法对基于标记的图像进行分割 使用函数cv2.watershed() 原理: 灰度图像可以被看成拓扑平面, ...

最新文章

  1. JGG:华中师大蒋兴鹏组-不同稀疏水平信号的微生物组关联检验方法
  2. boot spring 打印请求参数_SpringBoot打印请求参数与响应参数
  3. python批量查询数据库_Python + MySQL 批量查询百度收录
  4. ssh报错解决 ECDSA host key for 123.56.11.181 has changed and you have requested strict checking.
  5. (一)在Azure上创建完整的无服务器云原生应用程序
  6. [Ext JS]3.2.2 文本输入框textfield
  7. JS判断手机浏览器(转)
  8. TLS协议、PKI、CA
  9. 华为手机pc模式机型_华为 P20 搭载的 PC 模式厉害了,刷新你对手机的认知
  10. python中的xbari表示_R语言实现Xbar-R控制图
  11. 如何使用Internet Download Manager批量下载音乐素材?
  12. 身份证有效验证方法,
  13. java反向查找dns_windows – 反向DNS查找
  14. Windows server 2008 密码策略不能修改的解决办法
  15. Linux下gzip, bzip2, zip压缩率的比较
  16. 帅某---考研---高数笔记---汤家凤---第十章向量代数与空间几何
  17. EasyX库使用入门
  18. 「日常训练知识学习」树的直径(POJ-1849,Two)
  19. 计算机专业的相关英语词汇,计算机专业英语单词大全
  20. 谈谈工作 - 神州数码篇

热门文章

  1. python控制电机_树莓派Python控制步进电机
  2. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
  3. Java IO流之对象流
  4. 【JavaSE03】Java中分支语句-概念
  5. 食堂就餐刷卡系统源码_敲重点,刷卡机要拆啦!!
  6. 按照这步骤来刷题,两个月你亦能成为王者
  7. 算法之动态规划初步(Java版)
  8. 边缘计算用java_物联网技术和边缘计算
  9. 红米电流电压测试软件,你也是27W家族?Redmi K20 Pro充电测试
  10. 相对于硬件计算机软件就是,计算机的软件是将解决问题的方法,软件是相对于硬件来说的...