精华内容
下载资源
问答
  • matlab 轮廓 边缘提取

    2015-12-15 11:22:03
    matlab 轮廓 边缘提取 可用
  • matlab 提取图像轮廓(图像边缘提取

    万次阅读 多人点赞 2019-09-01 17:00:06
    利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下: close all;clear all;clc; % 提取图像轮廓提取图像边缘 I = imread('yifu.jpg'); c = im2bw(I,graythresh(I)); ...

    利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下:

    close all;clear all;clc;
    % 提取图像轮廓,提取图像边缘
    I = imread('yifu.jpg');
    c = im2bw(I,graythresh(I));
    figure;
    subplot(131);imshow(I);
    c = flipud(c);   %实现矩阵c上下翻转
    b = edge(c,'canny');
    [u,v] = find(b);   %返回边界矩阵b中非零元素的位置
    xp = v;  %行值v赋给xp
    yp = u;  %列值u赋给yp
    x0 = mean([min(xp),max(xp)]);  %x0为行值的均值
    y0 = mean([min(yp),max(yp)]);  %y0为列值得均值
    xp1 = xp-x0;
    yp1 = yp-y0;
    [cita,r] = cart2pol(xp1,yp1);
    q = sortrows([cita,r]);  %从r列开始比较数值并按升序排序
    cita = q(:,1);  %赋角度值
    r = q(:,2);  %赋半径模值
    subplot(132);polar(cita,r);  %画极坐标下的轮廓图
    [x,y] = pol2cart(cita,r);
    x = x+x0;
    y = y+y0;
    subplot(133);plot(x,y);axis equal;

    程序运行结果:

    展开全文
  • 本资源是Matlab图像处理程序——去噪、边缘增强、边缘提取,直接是.m文件,可直接运行,但里面并未附加图片资源,大家需要使用自己的待处理图片
  • 边缘检测的各种MATLAB代码,有多种算法,包括CANNY,SOBEL等等,效果很好,方便理解!
  • 点云边缘提取MATLAB

    热门讨论 2014-09-17 16:18:54
    MATLAB下点云边缘提取,点云数据需要保存为TXT,然后放在同一目录下运行。
  • 该资源是Matlab图像处理——小波变换去噪声、边缘提取,直接是.m文件,可直接运行。里面并未附加图像资源,需要使用自己待处理图像。
  • Matlab 代码,该程序功能实现对图像进行边缘提取,计算周长。
  • 数学建模挑战赛的代码,边缘提取,然后使用函数拟合
  • matlab中如何提取边缘轮廓的坐标

    千次阅读 2020-03-30 21:35:01
    matlab中如何提取边缘轮廓的坐标 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的...

    matlab中如何提取边缘轮廓的坐标

    已用形态学提取方法提取的边缘轮廓,现在相求的矩形边缘的长度和宽度,或者求出四个角的坐标,请大神指点
    已用形态学提取方法提取的边缘轮廓,现在相求的矩形边缘的长度和宽度,或者求出四个角的坐标,请大神指点

    展开全文
  • 图像分割时,经常需要实现对边界的跟踪,从而实现对区域的提取。输入是一幅图像,输出是提取的该图像的轮廓
  • Matlab实现图像的轮廓提取

    万次阅读 2018-05-10 22:18:47
    以二值图像circles.png(黑色背景白色前景)为例,根据掏空内部点算法,运用Matlab编程实现二值图像的轮廓提取。 I=imread('circles.png'); [M,N]=size(I); buffer=I; for i=2:M-1 for j=2:N-1 if(I(i,j)==255&...

    以二值图像circles.png(黑色背景白色前景)为例,根据掏空内部点算法,运用Matlab编程实现二值图像的轮廓提取。

    I=imread('circles.png');   
    [M,N]=size(I);
    buffer=I;
    for i=2:M-1
        for j=2:N-1
           if(I(i,j)==255&I(i-1,j)==255&I(i+1,j)==255&I(i,j-1)==255&I(i,j+1)==255&I(i-1,j-1)==255&I(i-1,j+1)==255&I(i+1,j-1)==255&I(i+1,j+1)==255)%÷‹Œß8∏ˆµ„æ˘Œ™∞◊…´
                buffer(i,j)=0;
           end
        end
    end
    subplot(1,2,1);
    imshow(I);
    subplot(1,2,2);
    imshow(buffer);
    
    展开全文
  • 基于matlab边缘提取的几种方法的比较

    万次阅读 多人点赞 2016-06-13 21:35:48
    1、Matlab简述 Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言。有人称它为“第四代”计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高...

    1、Matlab简述

    Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言。有人称它为“第四代”计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化界面设计、便捷的与其它程序和语言接口的功能。随着Matlab语言功能越来越强大,不断适应新的要求并提出新的解决方法,可以预见,在科学运算,自动控制与科学绘图领域,Matlab语言将长期保持其独一无二的地位。

    2、几种常用的边缘检测算子

    边缘是图像的最重要的特征,。边缘是指周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。边缘检测主要是灰度变化的度量、检测和定位。有很多种不同的边缘检测方法,同一种方法使用的滤波器也不尽相同。图像边缘检测就是研究更好的边缘检测方法和检测算子。

    边缘检测的基本思想首先是(1)利用边缘增强算子,突出图像中的局部边缘,(2)然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。由于噪声和模糊的存在,监测到的边界可能会变宽或在某点处发生间断。因此,边界检测包括两个基本内容:

    i.         用边缘算子提取出反映灰度变化的边缘点集

    ii.        在边缘点集合中剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线

    常用的检测算子有微分算子、拉普拉斯高斯算子和canny算子。

    在Matlab图像处理工具箱中,提供了edge函数利用以上算子来检测灰度图像的边缘。

    2.1微分算子法

       经典的边缘提取方法是考察图像的每个像素的某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘,称为微分算子法

    导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值较高,因此我们将图像的导数算子运算值作为相应的边界强度,所以可以通过对这些导数值设置阈值,提取边界的点集。

    一阶导数是最简单的导数算子。已知在点f(x,y)处,梯度grad(F(x,y))的幅度为:



    它们分别求出了灰度在x和y方向上的变化率,但是要对每一个像素进行以上的运算,运算量较大,所以在实际应用中常用小区域模板卷积运算来进行近似计算。模板运算的想法是将赋予某一个像素的值作为它本身灰度值和相邻象素灰度值的函数。运用中,对x,y方向各用一个模板。

    2.1.1 Sobel算子

    Sobel算子是滤波算子的形式来提取边缘。X,Y方向各用一个模板,两个模板组合起来构成1个梯度算子。X方向模板对垂直边缘影响最大,Y方向模板对水平边缘影响最大。


    图1 Sobel算子模板

    2.1.2 robert算子

       Robert算子是一种梯度算子,它用交叉的差分表示梯度,是一种利用局部差分算子寻找边缘的算子,对具有陡峭的低噪声的图像效果最好:

    模板如图:

                      

        

    图2 Robert算子模板


    2.1.3 prewitt算子 

       prewitt算子是加权平均算子,对噪声有抑制作用,但是像素平均相当于对图像进行地同滤波,所以prewitt算子对边缘的定位不如robert算子。模板如图;

         

    图3 prewitt算子模板

    代码如下:

    原始图像为三位编织复合材料二维截面图,对原始图像进行前期处理

    i=imread('d1.jpg');

    i2=im2double(i);

    ihd=rgb2gray(i2);

    [thr,sorh,keepapp]=ddencmp('den','wv',ihd);

    ixc=wdencmp('gbl',ihd,'sym4',2,thr,sorh,keepapp);

    figure,imshow(ixc),title('消噪后图像 ');

    k2=medfilt2(ixc,[7 7]);

    figure,imshow(k2),title('中值滤波');

    isuo=imresize(k2,0.25,'bicubic');

      

    %sobert、robert和prewitt算子检测图像边缘

    esobel=edge(isuo,'sobel');

    erob=edge(isuo,'roberts');

    eprew=edge(isuo,'prewitt');

    subplot(2,2,1);

    imshow(isuo);title('前期处理图像');

    subplot(2,2,2);

    imshow(esobel);title('sobel算子提取');

    subplot(2,2,3);

    imshow(erob);title('roberts算子提取');

    subplot(2,2,4);

    imshow(eprew);title('prewitt算子提取');


     图4 微分算子边缘检测结果

    2.2 Laplacian算子
       拉普拉斯高斯算子是一种二阶导数算子,将在边缘处产生一个陡峭的零交叉。前面介绍的几种梯度法具有方向性,不能对各种走向的边缘都具有相同的增强效果。但是Laplacian算子是各向同性的,能对任何走向的界线和线条进行锐化,无方向性。这是拉普拉斯算子区别于其他算法的最大优点。

    对一个连续函数,它在位置的拉普拉斯算子定义如下:


    在图像边缘检测中,为了运算方便,函数的拉普拉斯高斯算子也是借助模板来实现的。其模板有一个基本要求:模板中心的系数为正,其余相邻系数为负,所有系数的和应该为零。


          5 Laplacian算子模板

    2.3  Canny边缘检测法

         Canny边缘检测是一种比较新的边缘检测算子,具有很好的边缘监测性能,在图像处理中得到了越来越广泛的应用。它依据图像边缘检测最优准则设计canny边缘检测算法:

    (1)       首先用2D高斯滤波模板进行卷积以消除噪声

    (2)       利用导数算子找到图像灰度地沿着两个方向的偏导数,并求出梯度的大小:  

    (3)       利用(2)的结果计算出梯度的方向

    (4)       一旦知道了边缘的方向,就可以把边缘的梯度方向大致分为四种:水平、竖直、45度方向、135度方向。通过梯度的方向,就可以找到这个像素梯度方向的邻接像素。

    (5)       遍历图像,若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,那么这个像素值置为0,即不是边缘。

    (6)       使用累计直方图计算两个阈值,大于高阈值的一定是边缘,小于低阈值的一定不是边缘,介于之间的,看这个像素的邻接像素中有没有超过高阈值的边缘像素,如果有的话那么它

    就是边缘了,否则它就不是边缘。

    调用Laplacian算子、canny算子检测法检测图像边缘的程序如下:

    elog=edge(isuo,'log');

    ecanny=edge(isuo,'canny');

    subplot(1,2,1);

    imshow(elog);title('log算子提取');

    subplot(1,2,2);

    imshow(ecanny);title('canny算子提取');

    图6 canny算子、Laplacian算子检测结果

    3.边缘检测结果比较

    Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确。

    Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素。

    Prewitt算子检测方法对灰度渐变和噪声较多的图像处理效果较好。但边缘较宽,而且间断点多。

    Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区。

    Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。

    参考文献

    [1] 赵春晖.现代图像处理技术及Matlab实现[M].北京:人民邮电出版社,2001.

    [2] 阮秋琦.数字图像处理学[M].北京:电子工业出版社,2001.

    [3] 何斌.数字图像处理[M].北京:人民邮电出版社,2001


    I=imread('lena.bmp');%  提取图像

    BW1=edge(I,'sobel'); %SOBEL算子进行边缘检测

    BW2=edge(I,'roberts');%Roberts算子进行边缘检测

    BW3=edge(I,'prewitt'); %prewitt算子进行边缘检测

    BW4=edge(I,'log'); %log算子进行边缘检测

    BW5=edge(I,'canny'); %canny算子进行边缘检测

    h=fspecial('gaussian’,5);

    BW6=edge(I,’canny’);

    subplot(2,3,1), imshow(BW1);

    title(‘sobel edge check’);

    subplot(2,3,2), imshow(BW2);

    title(‘sobel edge check’);

    subplot(2,3,3), imshow(BW3);

    title(‘prewitt edge check’);

    subplot(2,3,4), imshow(BW4);

    title(‘log edge check’);

    subplot(2,3,5), imshow(BW5);

    title(‘canny edge check’);

    subplot(2,3,6), imshow(BW6);

    title(‘gasussian&canny edge check’);%此为用高斯滤波后Canny算子边缘检测结果

    (注意:代码中有一些标点是中文模式,若输入代码后标点显示红色,则为中文标点,改回来就行了)


    展开全文
  • MATLAB对图像处理的填充边缘检测轮廓特征提取。 主要函数:及其功能说明如下: imfill函数与bwperim函数:* 1、使用边缘检测和形态学检测细胞 此示例说明如何使用边缘检测和基本形态学检测到相对于背景的对象。 2、...
  • 包含了MATLAB基础简介,图像轮廓线提取和图像分割技术。内含m文件代码,黏贴即可运行。
  • 使用matlab对图像轮廓进行提取

    万次阅读 多人点赞 2019-01-26 21:56:17
    然后转为二值图像使用bwperim()函数进行轮廓提取 同样我们可以借助edge()函数进行边界检测,算子可以选择canny,soble等等。  算子是什么呢? 简单的说就是一种运算方式,一种关系,一种映射。 广义的讲,...
  • Harbin Institute of Technology 图像工程导论 课程名称 图像工程导论 设计题目图像检测直线提取 院 系 班 级 设 计 者 学 号 哈尔滨工业大学教务处 图像工程导论任务书 二一五年 柒月 哈尔滨工业大学 课题详细描述 ...
  • 文章目录二值图像轮廓提取灰度图像边缘检测 二值图像轮廓提取 根据掏空内部点算法,运用Matlab编程实现二值图像的轮廓提取。(以二值图像circles为例) I = imread('circles.png'); subplot(1,2,1),imshow(I); [M,N]...
  • 点云轮廓边缘检测
  • Matlab实现:图像边缘提取

    万次阅读 2018-08-24 23:17:13
    1、 边缘提取算法 方法一:一阶微分算子 Sobel算子 Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,Sobel算子对边缘定位不是很准确,图像的边缘不止一个像素。 Roberts算子 ...
  • Sobel算子提取图像边缘-Matlab源程序1.rar 编程实现sobel算子,提取一幅图像的边缘信息
  • 二值图的轮廓边缘提取matlab

    千次阅读 2019-02-21 20:44:24
    我是把二值图放进去了,然后提取出来轮廓 也就是边缘。效果不错。 下面的代码转换二值图的地方不需要,但是对我的结果没什么影响。 大家有什么意见可以提出来 im=imread('05.jpg'); imshow(im); title('原图');...
  • Sobel算子图像边缘提取Matlab代码

    热门讨论 2008-10-05 22:11:08
    在图像处理中,使用Sobel算子进行边缘提取Matlab代码。
  • I1 = double(I1); [Gx,Gy]=gradient(I1);  G=sqrt(Gx.*Gx+Gy.*Gy)/255;    I2 = rgb2gray(G); figure,imshow(G); I2(I2 I2(I2>=30/255)=1; U= findContours(I2);%轮廓提取
  • matlab实现了边缘亚像素提取算法
  • Halcon图像边缘提取轮廓识别

    千次阅读 多人点赞 2020-08-30 14:56:29
    1、图像边缘提取原理 2、边缘提取算子介绍 3、图像的亚像素边缘提取 4、亚像素轮廓的特征分析 5、xld的分割及直线拟合 6、圆及椭圆的拟合 7、中心线的提取 1、图像边缘提取原理 网上搜索图像边缘提取,有很多详细的...
  • 然后转为二值图像使用bwperim()函数进行轮廓提取 同样我们可以借助edge()函数进行边界检测,算子可以选择canny,soble等等。 算子是什么呢? 简单的说就是一种运算方式,一种关系,一种映射。 广义的讲,对任何...
  • matlab中通过腐蚀与膨胀提取物体边缘,可直接下载使用。
  • 该代码使用matlab实现,代码结构清晰完整,方便大家学习
  • 执行快速准确的亚像素边缘检测,基于改进的zernike矩方法,有需要的可以下载~~
  • 边界轮廓提取(边缘提取)实例

    千次阅读 2020-10-25 17:15:10
    边缘提取,指数字图像处理中,对于图片轮廓的一个处理。对于边界处,灰度值变化比较剧烈的地方,就定义为边缘。也就是拐点,拐点是指函数发生凹凸性变化的点。二阶导数为零的地方。并不是一阶导数,因为一阶导数为零...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,088
精华内容 835
关键字:

matlab边缘提取轮廓

matlab 订阅