在Matlab中将一幅图像阈值分割二值化非常简单,若需要通过阈值th2二值化保留一些大面积的、且有灰度值含有大于th1的点的前景区域,而不需要小面积的区域(th1大于th2),这时会遇到这样的问题:当阈值选为th2时会把一些小面积区域也保留下来;若把阈值增大到th1,小面积的区域没了,但是原来大面积的区域又会减小;若要直接去掉阈值th2二值化图像中面积小于某一值的的区域,需要计算每个区域的面积,计算量大,而且有的区域中并没有含有大于th1的点。

下面利用数学形态学的方法来解决上述问题。

这里主要是采用数学形态学中的腐蚀与膨胀操作,采用均值滤波、灰度图像高阈值二值化、种子点选择、灰度图像低阈值二值化和选择滤波相结合的方法,具体来说:腐蚀过程采用均值滤波和高阈值对第一细分图像二值化,滤掉面积较小的区域,得到较大的区域,然后选择每个区域的种子点;膨胀过程采用低阈值对第一细分图像二值化,保留含有种子点的区域,其它的均过滤掉。经过腐蚀和膨胀操作后,得到所希望的结果,见下图。

程序如下:

wmf10=imread('mwf1.bmp');  %读取图像wmf1=wmf10(:,:,1);%由于是灰度图像,三个页面相同,故只对第一页面数据操作figure(1);subplot(121);imagesc(wmf1);colormap(gray);  %显示原图象h=fspecial('average',3); wmf1_filted=uint8(round(filter2(h,wmf1))); %均值滤波th1=0.94*max(max(wmf1)); %确定阈值th1wmf1th1=(wmf1_filted>th1);  %按阈值th1二值化[wmf1th1_label numth1_label]=bwlabel(wmf1th1,8);rc=zeros(2,numth1_label);  %选择种子点坐标for i=1:numth1_label[r c]=find(wmf1th1_label==i);rc(1,i)=r(2);rc(2,i)=c(2);endr=rc(1,:);c=rc(2,:);coe=1.4;th2=mean2(wmf1)+coe*std2(wmf1); %确定阈值th2wmf1th2=(wmf1>th2);  %按阈值th2二值化wmf1th2_select=bwselect(wmf1th2,c,r,8); %保留含有种子点的前景区域subplot(122);imagesc(wmf1th2_select);colormap(gray);

上述程序主要是采用了bwlabel和beselect函数,虽然没有直接使用Matlab的形态学操作的膨胀、腐蚀函数,但其实质过程和达到的效果是遵循形态学操作原理的,因而这也为形态学操作提供了其他的编程实现过程。有心的读者可以试试看,能否用dilate和erosion函数完成同样的任务。

基于MATLAB二值化图像的形态学处理相关推荐

  1. matlab二值化图像_小白啃骨头之图像识别

    小白啃骨头系列是通过案例的分享,描述7是怎么入门某类技术的.下面就请进入正题吧~ 相信大家对于有一些名词耳熟能详,可以谈天说地,但是真正想要用起来,却觉得门槛太高,望而却步.如今AI大火,凡是沾点边就 ...

  2. matlab 二值化图像反色,图像处理——灰度化、二值化、反色、饱和度、对比度...

    RGB RGB色彩模式使用RGB模型为图像中每个像素的RGB分量分配一个0~255范围内的强度值.RGB图像仅仅使用三种颜色,R(red).G(green).B(blue),就能够使它们依照不同的比例 ...

  3. MATLAB二值化图像

    直接上代码: RGB = imread('cat.jpg');   %读入图像 tu=im2gray(RGB);   %将图像转化为灰度图像 BW = imbinarize(tu);   %将灰度转化 ...

  4. 图像处理 基于Visual C++编程 学习笔记 (3)显示灰度图像和二值化图像

    灰度图imggray 有了上面的基础,灰度图就相当简单了 彩色图转灰度方法: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11  2.整数方法:Gray=(R*30+G*59+B*11) ...

  5. 二值化图像去除小黑点_python与图像工程(2020.10.11)

    一.think python--字符串str.列表list.字典dict.元组tuple的比较 在think python的学习中,第八.十.十一.十二章介绍了四种相似的数据类型:字符串.列表.字典. ...

  6. java 图像二值化阀值,阈值 二值化图像程序

    在Matlab中将一幅图像阈值分割二值化非常简单,若需要通过阈值th2二值化保留一些大面积的.且有灰度值含有大于th1的点的前景区域,而不需要小面积的区域(th1大于th2),这时会遇到这样的问题:当 ...

  7. 二值化图像的欧拉数_Android OpenCV(八):图像二值化

    图像二值化 简介 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程.在数字图像处理中,二值图像占有非常重要的 ...

  8. ZYNQ图像处理(4)——灰度图像转二值化图像

    1.二值化图像简介 前面已经完成了摄像头图像的采集和显示,以及RGB图像转灰度图.二值化图像在图像处理领域同样有广泛的应用,本节介绍如何用FPGA实现灰度转二值化图形.灰度实现二值化的原理很简单,只需 ...

  9. Opencv3.0--第二篇【双阈值二值化图像】

    数字图像处理最主要的就是对像素进行操作,然而Opencv提供了14中像素的操作方法,但是处理速度有所不一样,常用的可以用指针进行访问,本文采用的也是用指针进行访问,其次可以采用vector容器指针的方 ...

最新文章

  1. java中静态方法可以被继承_关于java:静态方法中的继承
  2. 19. 删除链表的倒数第N个节点
  3. Ubuntu解决Nvidia驱动缺失导致的HDMI无法输出问题
  4. Docker之docker简介及其优势
  5. fclose会写入硬盘吗 linux_Qt linux文件同步写入
  6. linkbot 中文教程系列 linkbot破解教程
  7. java websocket 生存期_Java WebSocket生命周期
  8. 验证方式二 html标签验证码,Django标签、转义及验证码生成
  9. spring AOP 代理(静态与动态+使用cglib实现)
  10. bzoj 4556 字符串
  11. 手把手教你使用EndNote X8 详细笔记
  12. 现在很迷茫怎么办啊?
  13. THULAC 词性表
  14. 基于NodeJS实现企业微信机器人推送
  15. 中继器系列:中继器增删改查
  16. 请说明Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
  17. 马云谈加班、996看法
  18. 微信公众号怎样运营涨粉?
  19. 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
  20. 一篇文章玩转 RNN 网络 原理

热门文章

  1. 判断map集合是否为空和是否为null
  2. 安然如一曲悠扬而又静谧的音乐
  3. android socketio,如何将Android应用程序连接到pythonsocketio后端?
  4. mysql 联合索引 唯一_mysql 联合索引和唯一索引
  5. Java实现输入前十七位身份证号码得出最后一位身份证号码
  6. python编写django项目中报错:HTTP 错误 : 500Internal Server Error
  7. 解决Ubuntu 环境下插入U盘没有反应
  8. Atl Com组件DLL非注册调用
  9. scrapy由浅入深(三) selenium模拟爬取ajax动态页面(智联招聘)
  10. 拼多多自动确认收货后还能退吗?退货申请期限是多久?