我正在开发一个图像处理应用程序,我有一个问题,我想从给定窗口生成一个随机子窗口。例如,给定一个 5x5(像素)的窗口,我想在 x,y 的给定位置生成一个具有给定宽度和高度的子窗口。目前,可以假设子窗口的宽度和高度总是彼此相等。但是,原始窗口没有此约束。
目前,我只是为我知道适合原始窗口的子窗口生成随机宽度/高度。然后我生成一个有效的 x,y 坐标,允许该子窗口适合原始窗口。当前方法的问题在于它不尊重这样一个事实,即较小的窗口更丰富,因此更有可能发生。通过为子窗口宽度/高度选择随机尺寸,我假设它们在宽度和高度方面的分布是均匀的,而实际上并非如此。
例如,假设我们有一个 5x5 的窗口。有 25 个可能的 1x1 子窗口、16 个可能的 2x2 窗口、9 个可能的 3x3 窗口、4 个可能的 4x4 窗口和 1 个可能的 5x5 窗口。因此,我应该选择一个概率约为 0.45 (25/(25+16+9+4+1) 的 1x1 窗口,一个概率约为 0.29 的 2x2 窗口等。
我不确定如何从正确的分布中快速生成此类允许的子窗口,而不用蛮力评估所有可能的窗口,然后简单地从列表中选择一个,但我相当确定有一种更聪明的方法可以做到这一点,我只是不'不知道从哪里开始。
谢谢!