我希望能够生成可以随机填充/覆盖空间的样本点(就像附图中那样)。我认为他们有一种叫做“准随机”的方法可以生成这样的样本点。然而,这距离我的知识有些远。有人可以提出建议或帮助我找到一个可以实现这个功能的库吗?或者建议如何开始编写这样的程序?
更新: 我尝试使用Halton准随机序列中的一些代码并与下面朋友发布的伪随机结果进行比较。在我看来,Halton方法的结果更好。我想分享以下一些结果;
更新: 我尝试使用Halton准随机序列中的一些代码并与下面朋友发布的伪随机结果进行比较。在我看来,Halton方法的结果更好。我想分享以下一些结果;
#include "halton.hpp"
#include "opencv2/opencv.hpp"
int main()
{
int m_dim_num = 2;
int m_n = 50;
int m_seed[2], m_leap[2], m_base[2];
double m_r[100];
for (int i = 0; i < m_dim_num; i++)
{
m_seed[i] = 0;
m_leap[i] = 1;
m_base[i] = 2+i;
}
cv::Mat out(100, 100, CV_8UC1);
i4_to_halton_sequence( m_dim_num, m_n, 0, m_seed, m_leap, m_base, m_r);
int displaced = 100;
for (int i = 0; i < 100; i=i+2)
{
cv::circle(out, cv::Point2d((m_r[i])*displaced, (m_r[i+1])*displaced), 1, cv::Scalar(0, 255, 0), 1, 8, 0);
}
cv::imshow("test", out);
cv::waitKey(0);
return 0;
}
我对OpenCV有一点了解,所以我在OpenCV(Mat)的矩阵上绘制了这段代码。 "i4_to_halton_sequence()"是我提到过的库中的函数。
结果并不是很好,但可能在我的工作中会有所用处。有人有其他想法吗?