我想生成可以随机填充/覆盖空间的样本点(如附图中所示)。我认为他们有一种称为“准随机”的方法可以生成这样的样本点。但是,这离我的知识有点远。有人可以提出建议或帮助我找到可以做到这一点的图书馆吗?或者建议如何开始编写这样的程序?
在图像中,256 个采样点应用于给定空间,随机放置在整个给定空间。
更新:我只是尝试使用Halton Quasi-random Sequence中的一些代码,并与下面朋友发布的伪随机结果进行比较。在我看来,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()”是我上面提到的库中的函数。
结果并没有更好,但可能会以某种方式用于我的工作。有人有其他想法吗?