基于MATLAB二值化图像的形态学处理
在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二值化图像的形态学处理相关推荐
- matlab二值化图像_小白啃骨头之图像识别
小白啃骨头系列是通过案例的分享,描述7是怎么入门某类技术的.下面就请进入正题吧~ 相信大家对于有一些名词耳熟能详,可以谈天说地,但是真正想要用起来,却觉得门槛太高,望而却步.如今AI大火,凡是沾点边就 ...
- matlab 二值化图像反色,图像处理——灰度化、二值化、反色、饱和度、对比度...
RGB RGB色彩模式使用RGB模型为图像中每个像素的RGB分量分配一个0~255范围内的强度值.RGB图像仅仅使用三种颜色,R(red).G(green).B(blue),就能够使它们依照不同的比例 ...
- MATLAB二值化图像
直接上代码: RGB = imread('cat.jpg'); %读入图像 tu=im2gray(RGB); %将图像转化为灰度图像 BW = imbinarize(tu); %将灰度转化 ...
- 图像处理 基于Visual C++编程 学习笔记 (3)显示灰度图像和二值化图像
灰度图imggray 有了上面的基础,灰度图就相当简单了 彩色图转灰度方法: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数方法:Gray=(R*30+G*59+B*11) ...
- 二值化图像去除小黑点_python与图像工程(2020.10.11)
一.think python--字符串str.列表list.字典dict.元组tuple的比较 在think python的学习中,第八.十.十一.十二章介绍了四种相似的数据类型:字符串.列表.字典. ...
- java 图像二值化阀值,阈值 二值化图像程序
在Matlab中将一幅图像阈值分割二值化非常简单,若需要通过阈值th2二值化保留一些大面积的.且有灰度值含有大于th1的点的前景区域,而不需要小面积的区域(th1大于th2),这时会遇到这样的问题:当 ...
- 二值化图像的欧拉数_Android OpenCV(八):图像二值化
图像二值化 简介 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程.在数字图像处理中,二值图像占有非常重要的 ...
- ZYNQ图像处理(4)——灰度图像转二值化图像
1.二值化图像简介 前面已经完成了摄像头图像的采集和显示,以及RGB图像转灰度图.二值化图像在图像处理领域同样有广泛的应用,本节介绍如何用FPGA实现灰度转二值化图形.灰度实现二值化的原理很简单,只需 ...
- Opencv3.0--第二篇【双阈值二值化图像】
数字图像处理最主要的就是对像素进行操作,然而Opencv提供了14中像素的操作方法,但是处理速度有所不一样,常用的可以用指针进行访问,本文采用的也是用指针进行访问,其次可以采用vector容器指针的方 ...
最新文章
- java中静态方法可以被继承_关于java:静态方法中的继承
- 19. 删除链表的倒数第N个节点
- Ubuntu解决Nvidia驱动缺失导致的HDMI无法输出问题
- Docker之docker简介及其优势
- fclose会写入硬盘吗 linux_Qt linux文件同步写入
- linkbot 中文教程系列 linkbot破解教程
- java websocket 生存期_Java WebSocket生命周期
- 验证方式二 html标签验证码,Django标签、转义及验证码生成
- spring AOP 代理(静态与动态+使用cglib实现)
- bzoj 4556 字符串
- 手把手教你使用EndNote X8 详细笔记
- 现在很迷茫怎么办啊?
- THULAC 词性表
- 基于NodeJS实现企业微信机器人推送
- 中继器系列:中继器增删改查
- 请说明Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
- 马云谈加班、996看法
- 微信公众号怎样运营涨粉?
- 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
- 一篇文章玩转 RNN 网络 原理
热门文章
- 判断map集合是否为空和是否为null
- 安然如一曲悠扬而又静谧的音乐
- android socketio,如何将Android应用程序连接到pythonsocketio后端?
- mysql 联合索引 唯一_mysql 联合索引和唯一索引
- Java实现输入前十七位身份证号码得出最后一位身份证号码
- python编写django项目中报错:HTTP 错误 : 500Internal Server Error
- 解决Ubuntu 环境下插入U盘没有反应
- Atl Com组件DLL非注册调用
- scrapy由浅入深(三) selenium模拟爬取ajax动态页面(智联招聘)
- 拼多多自动确认收货后还能退吗?退货申请期限是多久?