• 边界提取_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

    im2bw:基于阈值,将图像转变成二进制图像。
    
    BW = im2bw(I, level):将灰度图像I转变成二级制图像BW
    
    level:阈值等级,取值范围【0,1】
    
    BW: 逻辑型
    
    如果I中像素亮度比I*level大,则该值变为1,否则为0
    
    通俗讲,就是阈值设置的大的话。原图只会保留下很亮的部分!

    函数二:strel

    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

    Matlab用imerode函数实现图像腐蚀。用法为:
    Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象
    

    函数四:bwperim函数

    BW1 = imread('circbw.tif');
    BW2 = bwperim(BW1,8); 
    Bw1是提取的图像对象,8指的是八邻域,默认邻域类型为4邻域
    

      

  • 相关阅读:
    ANR----以及如何定位是前端问题还是后台问题?
    一个App或者web端,你怎么展开测试
    创业性公司,你以什么方式来进行对真机的成本降低 ?
    判断查找IP的两种方法
    接口测试(四)总结及小技巧笔记
    接口测试 (三)功能分类及配置文件引入
    接口测试(二) 优化项目分层及cookies值带入
    接口测试模块完整版
    接口测试入门
    unittest框架(惨不忍睹低配版)
  • 原文地址:https://www.cnblogs.com/henuliulei/p/11018549.html
Copyright © 2020-2023  润新知