基于CUDA的遥感影像SLIC分割
2017-07-26 12:43
911 查看
基于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的JPEG解码
- 基于CUDA的GPU优化建议
- 基于CUDA的OpenCL开发环境搭建与入门程序示例
- Ubuntu14.04 64位配置Caffe 教程(基于CUDA7.5)
- Elam的caffe笔记之配置篇:基于CentOS6.5 python3.6 CUDA8.0 cudnnv5.1 opencv3.1 下的caffe配置
- Ubuntu16.04下CUDA9.0+CUDNN7可用的tensorflow安装包,基于GCC 5.3.0
- ubuntu16.04+cuda8.0+cudnn5.1+caffe 安装(基于独立主机&集成显卡&GTX1080Ti)
- [菜鸟每天来段CUDA_C]基于共享内存的位图与syncthreads的使用
- 小白玩Caffe——基于Ubuntu14.04+CUDA8.0+cudnn5.1的Caffe安装与MNIST实验
- 基于Ubuntu 14.04.2安装cuda-7.0-27
- 基于Windows的CUDA安装 (Setup CUDA on Windows)
- 基于CUDA的图像亮度直方图统计
- ubuntu16.04安装NIVIDIA显卡驱动,cuda8.0,cuDNN6.0以及基于Anaconda安装Tensorflow-GPU
- 基于ubuntu14.04 cuda7.5 cudnn5.1caffe 配置
- 记在CUDA2011编程比赛之后——基于CUDA的最短路径并行算法
- 基于C++11 CPU多线程的 奇偶排序(没有CUDA)
- C++调用CUDA(基于VS2015) matlab调用CUDA 以及matlab调用C++ 学习记录
- 基于 NVRTC 和 CUPY 的 Python CUDA 扩展
- 基于Ubuntu16.04和Cuda8.0上安装OpenCV3.1.0
- 基于Ubuntu14.04系统的nvidia tesla K40驱动和cuda 7.5安装笔记