Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/71440949
Matlab中可以使用graythresh(Img)函数设置二值化的阈值,再用im2bw转化为二值图像。在Matlab中,可以使用bwlabel()和bwlabeln()函数来标记二值图像的连通区域。需要注意的是:所谓的连通区域标记是指对二值图像中白色像色而言,即值为1的像素进行标记,而黑色像素看作是背景颜色。当然,Matlab中还有个regionprops()函数可以用于统计图像区域的属性,如面积大小,重心位置。关于bwlabel()、bwlabeln()和regionprops()的用法,请查看相关博客吧
本博客Matlab代码将实现的功能:将图像转为二值图像,分割出感兴趣的区域,并用“红色矩形线框”标记连通区域的面积,用“蓝色点”标记连通区域的重心位置,为了减少噪声的干扰,代码中将连通区域面积(像素个数)不足100的区域认为是噪声点,并将其删除(即置为背景黑色)。本人用PS制作了一个GIF动画图,以便大家观看效果图:
clc;clear all;close all
%% 清空变量,读取图像,并显示其属性
clear;close all
src = imread('rice.jpg');
%显示原始图像
figure,
subplot(2,2,1),imshow(src),title('原图')%用ostu方法获取二值化阈值,进行二值化并进行显示
level=graythresh(src);
bw=im2bw(src,level);
subplot(2,2,2),imshow(bw),title('二值图像')%运用开操作消去噪点
se = strel('disk',2);
openbw=imopen(bw,se);%对白色点而言
subplot(2,2,3),imshow(openbw),title('开运算后的效果图')%获取连通区域,并进行显示
% L = bwlabel(openbw,8);
[L,num] = bwlabel(openbw,8);
RGB = label2rgb(L);
subplot(2,2,4),imshow(RGB),title('用rgb颜色标记不同区域')%获取区域的'basic'属性, 'Area', 'Centroid', and 'BoundingBox'
% stats = regionprops(openbw, 'basic');stats = regionprops(openbw, 'BoundingBox' ,'Area','Centroid' ,'PixelList' ); %统计白色的连通区域
centroids = cat(1, stats.Centroid);%%
noiseArea=100;
figure,imshow(openbw),title('2')
hold on
for i=1:size(stats)imshow(openbw)rectangle('Position',[stats(i).BoundingBox],'LineWidth',2,'LineStyle','--','EdgeColor','r'),plot(centroids(i,1), centroids(i,2), 'b*'); %每个连通区域的重心位置area = stats(i).Area; %连通区域的面积if area<noiseArea %若当前连通区域面积小于噪声点的面积,则该区域设置为0pointList = stats(i).PixelList; %每个连通区域的像素位置rIndex=pointList(:,2);cIndex=pointList(:,1);pointList = stats(i).PixelList; %连通区域的像素坐标openbw(rIndex,cIndex)=0; %连通区域的面积不足100,置为背景颜色endpause(1);saveas(gcf,sprintf('img/%d',i),'jpg') %保存图片
end
hold off
Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域相关推荐
- matlab形态学图像处理之strel函数
strel--structuring element 运用各种形状和大小构造元素,基本语法为 SE = strel(shape, parameters) shape 是指定希望形状的字符串,param ...
- OpenCV删除面积小的区域 实现图像二值化分割 标记连通区域
OpenCV删除面积小的区域 实现图像二值化分割 标记连通区域 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/781 ...
- matlab 形态学 颗粒_数字图像处理Matlab-形态学图像处理(附代码)
这是一篇基于matlab,数字图像处理的形态学研究与实现的文章,希望能对你产生帮助. 我还写了一套<数字图像处理>(冈萨雷斯版本)的学习笔记,欢迎关注我的csdn同名主页,一起学习成长~ ...
- 形态学滤波 matlab代码,matlab形态学滤波
对经拉普拉斯算子滤波后的 图像用零灰度值进行二值化会产生闭合的.连通 的轮廓...形态学图像处理 术语 ? 1. 集合论术语(Definition) 形态学处理语言中,二值...... 对此 ,采用平 ...
- [数图] 实验八 形态学图像处理
一.实验目的 1.利用 MATLAB 研究二值形态学图像处理常用算法: 2.掌握 MATLAB 形态学图像处理基本操作函数的使用方法: 3.了解形态学的基本应用. 二.实验内容 1.编程实现二值图像的 ...
- MATLAB【数字图像处理】 实验五:形态学图像处理
目录 一.实验目的 二.实验环境 三.实验内容 题目 相关知识 核心代码 实验结果 四.实验小结 一.实验目的 1.了解形态学的基本理论和方法. 2.掌握对图像进行开.闭.膨胀.腐蚀的方法. 二.实验 ...
- 数字图像处理——形态学操作(二值图像篇)
形态学操作 内容简介 1. 预备知识--结构元 2. 形态学基本操作 2.1 腐蚀和膨胀 2.2 开操作与闭操作 2.3 击中和击不中变换(hit and miss transform) 3. 基本的 ...
- Matlab数字图像处理学习记录【7】——形态学图像处理
形态学图像处理 一.预备知识 1.1 集合论中的基本概念 1.2 二值图像.集合和逻辑运算符 二.膨胀与腐蚀 2.1 膨胀 2.2 结构元素的膨胀 2.3 strel函数 2.4 腐蚀 三. 腐蚀和膨 ...
- MATLAB 数字图像处理GUI二值图像实验
电信19-2 翁大弟 摘要 图像信息是人类获取信息的重要来源及利用信息的重要手段,数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展:二是广泛的农牧业.环境.军事.工业等方面的应用需求 ...
最新文章
- 傅里叶(FFT)+小波变换+数据压缩
- SAP PP 成品工单批次号跟所消耗的半成品批次号一致
- 构造函数(包含this关键字的简单应用)
- centos7之破解root密码
- 【Python】30天进阶Python!这个Github项目你值得拥有!
- uaa 授权_使用UAA OAuth2授权服务器–客户端和资源
- 野生前端的数据结构基础练习(4)——字典
- 关于jQuery的细节
- WHERE+HAVING
- 王坚数博会演讲实录:“计算经济”是社会发展的新动力
- 人生的一切问题,归根结底就是这三点:无知!恐惧!延迟!
- Windows 2003 server下载
- pgadmin4 如何改成中文版
- 计算机网络第三章:数据链路层
- Windows 10 微软拼音输入法无法输入中文标点符号
- 港科夜闻|香港科技大学校长叶玉如教授,新加坡国立大学曾运雄博士:发现阿尔茨海默病新疗法...
- 第十二届蓝桥杯 2021年省赛真题 (Java 大学B组) 第一场
- 在SQL中limit 函数的使用
- Iptables—包过滤(网络层)防火墙
- 用python实现植物大战僵尸(游戏截图+动态演示+源码分享)