C++ 如何在非规则感兴趣区域内选择随机均匀样本?

C++ 如何在非规则感兴趣区域内选择随机均匀样本?,c++,opencv,image-processing,matlab-cvst,C++,Opencv,Image Processing,Matlab Cvst,我试图从一幅由轮廓分隔的图像中从非规则区域提取N个样本,我确实有轮廓像素的位置。提取的样本必须服从随机均匀分布。这就是我所拥有的: 这就是我的愿望: 你知道怎么做吗? 干杯 在边界矩形上创建随机均匀分布,从该矩形绘制,并拒绝位于感兴趣区域之外的任何点 (结果不会像您的示例中的点那样反聚集,而是一次一件事。)我刚刚编辑了我的问题,因为我真的很想从我的ROI中选择N个样本,这是我真正的问题,你知道怎么做吗?@AlexanderDeLeonVI-你也可以创建一个包含形状内部的点的std::vect

我试图从一幅由轮廓分隔的图像中从非规则区域提取N个样本,我确实有轮廓像素的位置。提取的样本必须服从随机均匀分布。这就是我所拥有的:

这就是我的愿望:

你知道怎么做吗?
干杯

在边界矩形上创建随机均匀分布,从该矩形绘制,并拒绝位于感兴趣区域之外的任何点


(结果不会像您的示例中的点那样反聚集,而是一次一件事。)

我刚刚编辑了我的问题,因为我真的很想从我的ROI中选择N个样本,这是我真正的问题,你知道怎么做吗?@AlexanderDeLeonVI-你也可以创建一个包含形状内部的点的
std::vector
(可能使用
cv::drawContours
),然后从该向量中随机采样。@rayryeng-这可能是一个解决方案,我也尝试在代码中附加它,但我没有得到一个均匀分布的提取。我仍然在寻找另一种东西,不管它有多复杂,谢谢。@AlexanderDeLeonVI-我可以提出的另一个建议是,使用距离变换,其中来自内部轮廓的已采样点充当种子像素,其余值是到最近采样点的距离。距离越大,一个点离采样点越远。您也许可以使用距离作为某种形式的权重,并使用基于这些距离的加权采样从内部形状点采样。不管怎样,你所要求的并不容易。@AlexanderDeLeonVI:这是一个简单的解决方案;如果你不能让它工作,更复杂的方法不太可能成功。能否在矩形上生成均匀分布的点?你能区分投资回报率内的点和投资回报率外的点吗?