matlab 提取图像轮廓(图像边缘提取)

Posted wojianxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
技术图片

程序运行结果:

技术图片?

技术图片
 

以上是关于matlab 提取图像轮廓(图像边缘提取)的主要内容,如果未能解决你的问题,请参考以下文章

关于用matlab处理图像的问题,如何将下进行边缘提取,得到比较清晰的轮廓,最好是能寻找到偏心孔的坐标

图像边缘和轮廓特征的提取方法

如何用matlab实现对边缘检测后的图像的边缘细化和曲线拟合?

MATLAB教程案例28图像的边缘提取——cannysobelLaplacian以及图像亚像素级边缘提取

MATLAB应用实战系列(四十五)-matlab任意图形轮廓坐标提取含源代码

求助:MATLAB处理图像,已提取边缘,也得到了边缘的二值矩阵,提取坐标是用【m,n】 = find(BW==1)