获取所需区域的坐标,以用作roipoly的参数

时间:2017-03-12 15:51:40

标签: matlab image-processing

我想将斑马线设为我的投资回报率。功能' roipoly'让我定义一个感兴趣的区域并返回一个二元掩码(这是我下一步所需要的:vision.blobAnalysis)。

在视觉上,这就是我想要实现的目标:
enter image description here (是的,有一个覆盖ROI的可见矩形。)

Roipoly的参数变化不同:

BW = roipoly(I,c,r)和BW = roipoly(x,y,I,xi,yi)。如果我没有弄错c,r和x,y,xi,yi是坐标。

我应该使用以下哪一项?如何提供坐标参数?另外,如果你知道其他选择来实现同一目标,请赐教。 :)

1 个答案:

答案 0 :(得分:0)

您可以使用getrect选择带鼠标的矩形,然后将所选坐标转换为roipoly输入格式。

我使用函数insertShape绘制一个红色矩形 (如果您无权访问所请求的工具箱,则可以使用其他方法)。

我使用的是BW = roipoly(I, c, r)版本,它将图片大小设置为图片I

这是我的代码:

%Read input image.
I = imread('autumn.tif');
h = figure;
imshow(I);

%Specify rectangle with mouse
rect = getrect(h);

%Draw red rectangle (replace pixels data with red color).
J = insertShape(I, 'Rectangle', rect, 'Color', [220, 0, 0], 'LineWidth', 3);
imshow(J);

%Compute rows and columns parameters from selected rect, to expected format of roipoly:
% (x0,y0) is top left corner, and (x1,y1) is bottom right corner.
x0 = rect(1);
y0 = rect(2);
x1 = x0 + rect(3) - 1; %rect(3) is width of rectangle.
y1 = y0 + rect(4) - 1; %rect(4) is height of rectangle.

%Imagine drawing lines from (x0,y0) to (x1,y0) to (x1,y1) to (x0,y1), [and back to (x0,y0), which closes the polygon] 
c = [x0, x1, x1, x0];
r = [y0, y0, y1, y1];

BW = roipoly(I, c, r);
figure;imshow(BW);

结果(选择矩形后):
enter image description here

enter image description here