泊松盘采样在匹配上的应用

13 篇文章 1 订阅

先了解泊松分布,参考链接如下:
1、泊松分布 (Poisson-Disc)算法
2、泊松分布算法图解
3、有人知道泊松盘采样算法吗?看了几天没看懂?

概要

先说明一下功能,这个算法主要是将所有的点采样分布均匀(大概如下图),仔细看了很久理论,没太清楚(可能主要是文字的东西,理解费劲),然后看着那个动画看,直至把动画全看完了,才理解其精髓

在这里插入图片描述

泊松盘采样原理

看看下面泊松采样展示的,是不是像个盘子,里面圆半径为r,外面圆半径为2r。
然后随机取一个中心点,然后在r和2r范围内进行采样形成的采样点,采样点有红色、白色、黑色之分,策略分别如下
1、采样点如果周围r范围内有红点或者黑点,则变成白点,说明采样失败;
2、如果半径r范围内没有点则采样成功,变成红色点,说明这个点周围可能还可以进行采样,所以为待确认点;
3、如果在一个红色点的r-2r范围内随机采样K次都是白色点,则说明这个点周围没有办法生成一个合适点了,这个红点就变成黑色点,黑点为确认点,程序后面不会再以它为圆心进行采样了;
如果所有点都变成了黑色则采样完成,程序结束
在这里插入图片描述

泊松采样在匹配点抽稀策略上的应用

理解了上述原理,所以这里我打算把它用在匹配算法抽稀上,程序还在编写,其具体策略如下:

提前准备定义的,r半径(最小相隔像素距离)
1、读入所有的匹配点,放入容器all_Vec中,深度拷贝一个完整的容器1
2、定义容器2,主要功能是放所有删除点,与all_Vec容器相差,可以判别所有的任务是否都完成了
3、定义容器3,主要功能是放所有保留点,作为最后的返回容器值
4、以容器1为循环,选取第一个元素为开始点
5、定义容器4,主要功能是放入待确认点
6、将该点加入容器3中,将该点及半径r内所有点从容器1中删除
7、将所有删除点加入容器2中
8、将所有半径为r-2r范围内的点加入到容器4中
9、判断容器4中是否有元素
10、如果容器4中有点则将容器1中的元素清空,将容器4的所有元素赋值给容器1,并且重复4、5、6、7、8、9步骤
11、如果容器4中没有点则进行判断容器2和容器all_Vec中点元素做差,将容器2中与all_Vec容器中不存在的元素形成容器1
12、可以将步骤11写一个函数,返回bool类型,容器1用引用进行返回值,如果元素个数完全相等则返回true,结束程序,输出容器1中的值,如果为false,则循环进行4、5、6、7、8、9步骤

程序写出来是这样的,效果还不错
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值