主要内容

边界跟踪的图像

工具箱包括两个函数可以用来找到对象在一个二进制图像的边界:

bwtraceboundary函数返回的行和列坐标上的所有像素边界的一个对象在一个图像。您必须指定对象的边界像素的位置跟踪的起点。

bwboundaries函数返回的行和列坐标边界像素的所有对象在一个图像。

两个函数,二进制图像中的非零像素属于一个对象,和像素值0(零)构成的背景。

跟踪对象在图像的边界

这个例子展示了如何跟踪对象在一个二进制图像的边界bwtraceboundary。然后,使用bwboundaries,该示例痕迹图像中所有对象的边界。

读取图像并显示它。

我= imread (“coins.png”);imshow(我)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

将图像转换成一个二进制图像。bwtraceboundarybwboundaries只使用二进制图像。

BW = im2bw(我);imshow (BW)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

确定的行和列坐标像素边界对象的你想跟踪。bwboundary使用这个点作为起始位置的边界跟踪。

昏暗的=大小(BW)
昏暗的=1×2246 300
坳= -90(暗(2)/ 2);行= min(找到(BW(:,坳)))
行= 27

调用bwtraceboundary跟踪指定的边界点。参数的要求,您必须指定一个二进制图像,行和列坐标的起点,和方向的第一步。示例指定北(“N”)。

边界= bwtraceboundary (BW,行,上校,“N”);

显示原始灰度图像和使用返回的坐标bwtraceboundary绘制图像的边界。

imshow (I);情节(边界(:,2),边界(:1),‘g’,“线宽”3);

图包含一个坐标轴对象。坐标轴对象包含2图像类型的对象,线。

跟踪所有的硬币图像的边界,使用bwboundaries函数。默认情况下,bwboundaries发现所有对象在一个图像的边界,包括对象在其他对象。在这个示例中,使用的二进制映像的一些硬币含有黑色区域bwboundaries解释作为独立的对象。以确保bwboundaries只有硬币痕迹,使用imfill填补该地区在每个硬币。bwboundaries返回一个单元阵列,每个单元格包含对象的行/列坐标的图像。

BW_filled = imfill (BW,“黑洞”);边界= bwboundaries (BW_filled);

情节的边界上的所有硬币原始灰度图像使用返回的坐标bwboundaries

k = 1:10 b = {k}边界;情节(b (:, 2)、b (: 1),‘g’,“线宽”3);结束

图包含一个坐标轴对象。坐标轴对象包含12图像类型的对象,线。

为跟踪选择和方向的第一步

对于特定的对象,您必须小心在选择您选择的边界像素的起点和方向选择的第一步参数(北方、南方、等等)。

例如,如果一个对象包含一个洞,你选择一个像素在一个薄的一部分对象作为像素开始,您可以跟踪对象的外部边界或内部边界的洞,这取决于你选择的方向迈出了第一步。对了对象,你选择的方向参数并不重要的第一步。

说明,图中显示的像素像素开始时追踪薄对象的一部分,第一步是设置为北部和南部。连接设置为8(默认)。

第一步和方向的影响参数对边界跟踪