zoukankan      html  css  js  c++  java
  • matlab 提取图像轮廓(图像边缘提取)

    利用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;

    程序运行结果:

     
  • 相关阅读:
    closure
    运算符优先级
    css妙用
    BFC (块级格式化上下文)
    display:table-cell 详解
    line-height深入理解
    margin collapse
    探究 CSS 解析原理
    python入门
    spring与线程安全
  • 原文地址:https://www.cnblogs.com/wojianxin/p/11442832.html
Copyright © 2011-2022 走看看