边界提取_MATLAB
下面是利用腐蚀算法进行边界提取,即原图减去腐蚀后的图得到边界
1 f=imread('D:/picture/ZiXia.jpg'); 2 figure; 3 subplot(2,2,1); 4 imshow(f); 5 title('原图'); 6 f=rgb2gray(f); 7 f=im2bw(f);%图像二值化 8 subplot(2,2,2); 9 imshow(f); 10 title('人脸二值图像'); 11 se=strel('square',3);%选取3*3正方形结构元素 12 Ie=imerode(f,se);%对原图像进行腐蚀, 13 Iout1=f-Ie;%原图像减去腐蚀结果 14 subplot(2,2,3); 15 imshow(Iout1); 16 title('直接边界轮廓提取') 17 Iout2=bwperim(f,4);%用bwperim提取边界 18 subplot(2,2,4); 19 imshow(Iout2); 20 title('用bwperim提取边界')
可以看到两种方法得到的提取结果都很不错。
下面介绍几个函数
函数一:im2bw
1 2 3 4 5 6 7 8 9 10 11 | im2bw:基于阈值,将图像转变成二进制图像。 BW = im2bw(I, level):将灰度图像I转变成二级制图像BW level:阈值等级,取值范围【0,1】 BW: 逻辑型 如果I中像素亮度比I*level大,则该值变为1,否则为0 通俗讲,就是阈值设置的大的话。原图只会保留下很亮的部分! |
函数二:strel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Matlab中函数strel在操作结构元素应用,用于膨胀腐蚀及开闭运算等操作的结构元素对象 具体用法:SE = strel(shape,parameters) 创建由指定形状shape对应的结构元素。其中shape的种类有 arbitrary' 'pair' 'diamond' 'periodicline' 'disk' 'rectangle' 'line' 'square' 'octagon 参数parameters一般控制SE的大小。 例子: se1 = strel( 'square' ,6) % 创建6*6的正方形 se2 = strel( 'line' ,10,45) % 创建直线长度10,角度45 se3 = strel( 'disk' ,15) % 创建圆盘半径15 se4 = strel( 'ball' ,15,5) % 创建椭圆体,半径15,高度5 |
函数三:imerode
1 2 | Matlab用imerode函数实现图像腐蚀。用法为: Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象 |
函数四:bwperim函数
1 2 3 | BW1 = imread( 'circbw.tif' ); BW2 = bwperim(BW1,8); Bw1是提取的图像对象,8指的是八邻域,默认邻域类型为4邻域 |
作者:你的雷哥
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!