史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

比较bwboundaries和poly2mask的几何图形

MATLAB的用户Meshooo问一个在MATLAB的回答问题关于一个问题createMask相关函数。Meshooo观察到的输出之间的差异bwboundaries和创造的面具createMask

我想在更一般的术语描述问题的几何形状之间的冲突bwboundaries函数的几何poly2mask(使用函数createMask)。

这是一个简单的例子,说明了这种差异。首先创建一个小的二进制图像。

BW = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);

调用bwboundaries,周边像素的所有对象(孔)的形象。

B = bwboundaries (BW);

在这种情况下只有一个边界。提取和阴谋。

B = {1};Bx = B (:, 2);= B (: 1);情节(Bx)轴ij平等的轴([。59.5 .5 10.5])

如果我们现在通过Bx通过poly2mask,我们不得到完全相同的二进制掩模图像,我们开始。

BW2 = poly2mask (Bx、10、9)
BW2 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

要理解差异的原因,有助于理解bwboundaries将输入图像的前景像素点空间。这里有一个情节来说明:

情节(Bx)轴ij平等的轴([。59.5 .5 10.5]) hold(yy, xx) =找到(BW);情节(xx, yy,‘*’)举行传奇(“边界多边形”,“前景像素”)

现在让我们做一个情节显示像素单位面积的正方形。我将包括一些代码覆盖像素边缘的灰色线条。

imshow (BW,“InitialMagnification”,“健康”)举行x = [。59.5];k = .5:10.5 y = (k (k);情节(x, y,“颜色”,(。7。7。7]);结束y = [。510。5];k = .5:9.5 x = (k (k);情节(x, y,“颜色”,(。7。7。7]);结束情节(Bx,“r”)情节(xx, yy,‘*’)举行

现在你可以看到生产的多边形bwboundaries不完全包含对象的像素边境。事实上,大多数的像素只有一半在多边形(或更少)。

的线索来解释这种差异poly2mask。这个函数将图像像素点,但随着广场有单位面积。其算法是精心设计的治疗部分覆盖像素几何一致的方式。我写一些博客文章(POLY2MASK和ROIPOLY第1部分,第2部分,第3部分)早在2006年。这是一个从第3部分图,说明了算法处理部分覆盖的像素。

原来,有一种方法可以得到边界多边形bwboundaries这是一致的poly2mask几何学。这个想法是为了upsample二进制图像,这样产生的多边形bwboundaries外的像素中心而不是直接通过运行中心。

BW3 = imresize (BW 3“最近的”);B3 = bwboundaries (BW3);B3 = B3 {1};

现在转变和规模多边形坐标回原始图像的坐标系统。

Bx = (B3 (:, 2) + 1) / 3;= (B3 (: 1) + 1) / 3;imshow (BW,“InitialMagnification”,“健康”)举行x = [。59.5];k = .5:10.5 y = (k (k);情节(x, y,“颜色”,(。7。7。7]);结束y = [。510。5];k = .5:9.5 x = (k (k);情节(x, y,“颜色”,(。7。7。7]);结束情节(Bx,“r”)情节(xx, yy,‘*’)举行

你可以看到修改后的多边形内部的像素中心现在显然(Bx,)。这意味着当我们试一试poly2mask再一次,我们会得到与原始图像相同的面具。

BWout = poly2mask (Bx、10、9)
BWout = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BWout isequal (BW)
ans = 1

每个人都在北半球:春天快乐!




发表与MATLAB®R2014a

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。