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

      

  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/henuliulei/p/11018549.html
Copyright © 2020-2023  润新知