Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用更多点定义imroi对象_Matlab - Fatal编程技术网

Matlab 使用更多点定义imroi对象

Matlab 使用更多点定义imroi对象,matlab,Matlab,简而言之: 我想知道,当使用ROI基类(实际上)时,是否可能增加该方法生成的点数(即增加灵敏度) 示例代码: 考虑以下代码,其中我: 1) 阅读并显示一些图像 2) 调用imfreehand绘制一个封闭的感兴趣区域 3) 调用getPosition获取一个Nx2数组,其中存储了定义我刚才绘制的徒手画对象的坐标 4) 调用scatter查看记录的实际坐标 clear clc close all %// Read and display image A = imread('coins.png');

简而言之: 我想知道,当使用ROI基类(实际上)时,是否可能增加该方法生成的点数(即增加灵敏度)

示例代码:

考虑以下代码,其中我:

1) 阅读并显示一些图像

2) 调用
imfreehand
绘制一个封闭的感兴趣区域

3) 调用
getPosition
获取一个Nx2数组,其中存储了定义我刚才绘制的徒手画对象的坐标

4) 调用
scatter
查看记录的实际坐标

clear
clc
close all

%// Read and display image
A = imread('coins.png');

imshow(A)

%// Set up imroi object
hROI = imfreehand(gca,'Closed',1);

%// Get its position as a Nx2 array
ROIPosition = getPosition(hROI);

%// Display the points retrieved by the getPosition method.
hold on

scatter(ROIPosition(:,1),ROIPosition(:,2),20,'r','filled')
放大绘制的ROI后,我得到以下结果:

我们可以看到,它缺少几个点来充分描述这个物体

换句话说,是否可以从
getPosition
方法中获取Nx2数组,其中N大于默认值(我不知道其值)?我在网上搜索了一下,但没有找到任何与这个问题有关的东西


谢谢

如果这还不算太晚,还有另一种方法可以通过在您创建的ROI对象的遮罩上使用
bwBounders()
来获取坐标

以下是一个例子:

A = imread('coins.png');
imshow(A)
hROI = imfreehand(gca, 'closed', 1);
bw = createMask(hROI);
B = bwboundaries(bw);
B = B{:};
hold on
scatter(B(:,2), B(:,1),20, 'r', 'filled')

如果点已排序,则可以在每对点之间循环并插值。若连续点之间的距离小于阈值,则为防止点簇拥挤,可以跳过此步骤。随着大小的增长,你必须将每一组点存储在一个单元格数组中,然后将它们全部与
cell2mat
合并。啊,是的@rayryeng,这是个好主意,我没有想到!如果你愿意的话,你可以把它作为一个答案贴出来。我当然会投赞成票:)