matlab 中 bwboundaries 函数 的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 中 bwboundaries 函数 的用法相关的知识,希望对你有一定的参考价值。
谁知道matlab中 bwboundaries 的用法,帮下小弟,小弟不胜感激.越详细越好.
参考技术A 格式:B = bwboundaries(BW,conn)(基本格式)作用:获取二值图中对象的轮廓,和OpenCV中cvFindContours函数功能类似。B是一个P×1的cell数组,P为对象个数,每个cell是Q×2的矩阵,对应于对象轮廓像素的坐标。
help 文档例子
I = imread('rice.png');%读入图像
BW = im2bw(I, graythresh(I));%转换成2进制图像
[B,L] = bwboundaries(BW,'noholes');%寻找边缘,不包括孔
imshow(label2rgb(L, @jet, [.5 .5 .5]))%显示图像
hold on
for k = 1:length(B)
boundary = Bk;
plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end%整个循环表示的是描边本回答被提问者和网友采纳
MATLAB应用实战系列(四十五)-matlab任意图形轮廓坐标提取含源代码
细心的伙伴不难发现上图的每个图形外面都画了一圈黑色虚线,不错,这些虚线就是根据图形轮廓提取的图像坐标绘制的。
之前有伙伴在咱们的QQ交流群中询问有关图像轮廓坐标提取的问题,今天就给大家念叨念叨。
今天给大家介绍两种提取轮廓坐标的方法。处理过程如下:读取想要处理的图像,将图像二值化,再通过图像边缘坐标提取函数直接进行提取即可。本文介绍两个函数涉及轮廓坐标提取的函数:
① bwboundaries,功能:提取图像的边界位置
clc;clear;close all;
I = imread(\'bird.jpg\'); % 读取目标图像
% RGB到二值图转换
if(size(I,3) == 3)
IG = rgb2gray(I);
bw = imbinarize(IG); % 二值化
elseif (islogical(I))
bw = I;
else
bw = imbinarize(I); % 二值化
end
% 法一
bw = imfill(~bw,\'holes\');
bound = bwboundaries(bw,8,\'noholes\');
x = bound{1}(:,2);
以上是关于matlab 中 bwboundaries 函数 的用法的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB应用实战系列(四十五)-matlab任意图形轮廓坐标提取含源代码
如何用matlab实现对边缘检测后的图像的边缘细化和曲线拟合?