我正在开发一款图像处理应用程序,我遇到了一个问题:我想从给定的窗口生成一个随机子窗口。例如,给定一个5x5(像素)窗口,我想在给定的x,y位置生成一个具有给定宽度和高度的子窗口。目前,假设子窗口的宽度和高度始终相等是可以的。然而,原始窗口没有这个约束。
目前,我只是为我知道适合原始窗口的子窗口生成一个随机的宽度/高度。然后我会生成一个有效的x,y坐标,让该子窗口适应原始窗口。当前方法的问题在于它并不考虑较小的窗口更加丰富,因此更可能出现的事实。通过选择子窗口的随机尺寸(宽度/高度),我假设它们在宽度和高度方面的分布是均匀的,但事实上并非如此。
例如,假设我们得到一个5x5的窗口。存在25个可能的1x1子窗口,16个可能的2x2窗口,9个可能的3x3窗口,4个可能的4x4窗口和1个可能的5x5窗口。因此,我应该选择1x1窗口的概率大约为0.45(25/(25+16+9+4+1)),2x2窗口的概率大约为0.29,等等。
我不知道如何快速生成这些允许的子窗口,并且按照正确的分布进行选择,而不是粗暴地评估所有可能的窗口,然后从列表中选择一个。但我非常确信有一种更聪明的方法来解决这个问题,只是我不知道从哪里开始。
谢谢!
目前,我只是为我知道适合原始窗口的子窗口生成一个随机的宽度/高度。然后我会生成一个有效的x,y坐标,让该子窗口适应原始窗口。当前方法的问题在于它并不考虑较小的窗口更加丰富,因此更可能出现的事实。通过选择子窗口的随机尺寸(宽度/高度),我假设它们在宽度和高度方面的分布是均匀的,但事实上并非如此。
例如,假设我们得到一个5x5的窗口。存在25个可能的1x1子窗口,16个可能的2x2窗口,9个可能的3x3窗口,4个可能的4x4窗口和1个可能的5x5窗口。因此,我应该选择1x1窗口的概率大约为0.45(25/(25+16+9+4+1)),2x2窗口的概率大约为0.29,等等。
我不知道如何快速生成这些允许的子窗口,并且按照正确的分布进行选择,而不是粗暴地评估所有可能的窗口,然后从列表中选择一个。但我非常确信有一种更聪明的方法来解决这个问题,只是我不知道从哪里开始。
谢谢!