我对感兴趣的区域感到困惑

时间:2013-09-01 20:49:57

标签: matlab image-processing roi

我正在研究感兴趣区域教程集here,并且有一些事情让我无法理解。

创建用于设置ROI的二进制掩码的示例是

img = imread('pout.tif');
h_im = imshow(img);
e = imellipse(gca,[55 10 120 120]);
BW = createMask(e,h_im);

我知道椭圆imellipse用于创建ROI对象。因此,按照自己的页面here,我会详细了解它,但是在该页面上没有解释gca是什么?它所说的是它是一个hparent并指定椭圆的HG父级。我不明白这可以请一些人详细说明。我可以用别的东西代替gca吗?什么是gca?

同样在此行中,imshow函数已分配给h_im,然后进一步使用。当我使用示例图像安装时,我得到了这个值h_im = 1.740099,因此h_im是一个双倍值。

这里进一步使用BW = createMask(e,h_im);我理解这些是参数含义:

  

BW = createMask(h,h_im)返回与图像h_im大小相同的掩码   在ROI对象h内有1s,在外面有0s。这个语法是   当包含ROI的轴包含多个图像时需要。

图像的大小是1.740099吗?测量哪个单位?

当我在Matlab中写下最后一行时,我收到了以下错误:

>> BW = createMask(h,h_im);
??? Invalid or deleted object.

Error in ==> imroi>imroi.parseInputsForCreateMask at 78
            h_ax = ancestor(obj.h_group,'axes');

Error in ==> imroi>imroi.createMask at 264
            [obj,h_im] = parseInputsForCreateMask(varargin{:});

为什么我收到此错误?

谢谢

1 个答案:

答案 0 :(得分:2)

gca是一个将句柄返回到当前轴的函数。类似地,h_im是imshow创建的图像对象的句柄。您可以阅读有关使用Mathworks here中的句柄的更多信息。

检查句柄时看到的数字与图像的属性(大小等)无关 - 值可能与对象类型有关,但基本上它们是Matlab用来跟踪打开的标识符图形对象。因此,当您调用imellipse时,您将把一个句柄传递给椭圆将出现的轴,并返回e中的另一个句柄。

e = imellipse(gca,[55 10 120 120]);

或者代替gca,您可以使用另一个指向不同轴的手柄。例如,如果你有:

a1 = subplot(1,2,1), h1 = imshow(img1)
a2 = subplot(1,2,2), h2 = imshow(img2)

然后您可以使用a1a2代替gca,具体取决于您想要创建roi的图像。

如果你关闭包含图像和椭圆的图形,那些句柄将被删除 - 这就是你得到错误'无效或删除对象'的方法。一旦你使用了createMask并返回了你想要的面具,就可以关闭这个数字。