基于CUDA的遥感影像SLIC分割
来源:互联网 发布:淘宝试用报告草稿在哪 编辑:程序博客网 时间:2024/06/10 05:28
基于CUDA的遥感影像SLIC分割
SLIC算法原理
SLIC算法原理网上有很多帖子,这里就不展开了,推荐一个比较好的,感兴趣的可以看一下:
http://www.cnblogs.com/supersponge/p/6546082.html
官网:https://infoscience.epfl.ch/record/149300
基于CUDA的遥感影像SLIC分割
现有的高分遥感影像,空间分辨率高,具有更为清晰的轮廓、纹理信息,能够提取更为精确的地物信息。然而基于像素的特征无法的到更具自然含义的统计信息(特征的表达粒度不够),基于此的分类结果往往会出现椒盐噪声的现象,无法有效获取高分遥感影像中的地物信息。针对高分遥感影像信息提取,目前流行的是面向对象的方法,即先对遥感影像进行分割,得到分割对象,再提取地物信息。分割对象作为高分遥感影像信息提取的基本基元,相对于像素而言,粒度更大,能够描述更具有统计意义的自然信息(如空间上下文等),还能有效避免分类结果中的椒盐噪声现象。但其分割的结果通常受到噪声的影响、分割的尺度难以确定(自适应),现有的分割方法中还存在很大的问题。
以上只是说明高分遥感影像分割的必要性,而遥感影像因为巨大的数据量,分割算法的效率一般都比较低,基于GPU的并行是一种比较好的解决方法,可以极大的提高分割的效率。基于CUDA的并行计算,其关键在于核函数,而核函数的精髓则在于根据线程的序号来分配计算任务,让每一个线程都对应一个计算任务(像素),因此需要设计合适的并行策略,将遥感影像的所有像素,分配到每个线程上去(根据计算能力确定)。
并行策略设计
并行策略设计参考源码SLIC_CUDA
遥感影像SLIC分割并行策略:
线程格网的的宽度为超像素的个数,设置让每个线程块处理一个超像素,但超像素内像素数目可能大于线程块内允许的最大线程数,因此,一个超像素内像素可能由多个线程块完成,线程块数目与超像素宽度、线程块最大线程数以及超像素高度决定。
int h = maxThreadsPerBlock / SpxWidth;int nBlockPerClust = SpxHeight/h;dim3 blockPerGrid(num_Spx, nBlockPerClust);dim3 threadPerBlock(SpxWidth, std::min(SpxHeight, h));
线程块内线程结构:
每个线程块都对应一个超像素内的像素,要为每一个像素都分配其对应的类别。而SLIC算法每个像素都需要计算的聚类中心数为9个,线程块内部,先寻找到该线程块所有像素对应的9个聚类中心,聚类中心分别对象线程块左上角的9个像素的索引,然后计算像素到每个聚类中心的距离(一般是五维空间的距离),选择距离最小的聚类中心作为该点的标记。
遥感影像SLIC分割结果
- 基于CUDA的遥感影像SLIC分割
- 文献《基于图分割的高分辨率遥感影像建筑物变化检测研究》的阅读笔记
- 基于SLIC分割的特征点检测
- 基于SLIC的细胞分割与检测
- 基于ArcGIS的遥感影像批量裁剪
- 基于矢量数据的大数据量遥感影像裁剪方法
- 基于GDAL的遥感影像显示(C#版)
- 基于GDAL的遥感影像显示(C#版) .
- 基于GDAL的遥感影像显示(C#版)
- 史文中:基于遥感影像的变化检测技术必不可少
- 基于GDAL的栅格数据/遥感影像IO (非分块)
- 基于OpenCV和GDAL的遥感影像处理程序
- 遥感影像的黑边
- 大幅面遥感影像多尺度分割与尺度转换-初探
- Qt 每日小结——基于GDAL的遥感影像显示
- 遥感影像的“全色”和“多光谱”
- 遥感影像的人工神经网络分类
- 遥感影像显示相关的技术总结
- 四大组件之service
- 各种mysql版本下载
- HDFS常用命令
- 使用ide开发一个servlet,该servlet显示当前helloworld以及当前日期(MyEclipse)
- span标签里的内容过长设置隐藏(CSS)
- 基于CUDA的遥感影像SLIC分割
- 1002. A+B for Polynomials (25)
- Java集合--简单讲解
- leetcode 646. Maximum Length of Pair Chain
- 配置了 Spring AOP 但会调用两次的问题解决方法
- java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
- java学习实现日历
- 1003. Emergency (25)
- Nutch2.3.1+HBase单机版