计算机视觉编程
本专栏旨在介绍计算机视觉方面的知识与算法,并提供编程实现,主要编程语言使用python,希望能给大家介绍各种非常有趣的计算机视觉方面的算法,帮助大家了解常用的如图像检索,图像分类,识别等算法的实现。
MingChaoSun
潜心技术,不离不弃!
展开
-
论文阅读记录: Automatic Image Colorization sig16
sig论文阅读记录Let there be Color!: Joint End-to-end Learning of Global and Local Image Priorsfor Automatic Image Colorization with Simultaneous Classification ( siggraph 2016 )原创 2016-06-03 16:26:16 · 7208 阅读 · 3 评论 -
CUDA编程(十)使用Kahan's Summation Formula提高精度
CUDA编程(十)使用Kahan’s Summation Formula提高精度之前我们用CUDA完成了矩阵乘法,但是当然会存在很多问题,除了速度问题,GPU浮点数运算的精度也很差,本篇博客从出现误差的原理(浮点数大数吃小数)分析,使用了Kahan's Summation Formula在一定程度上解决了CUDA运算float精度不够的情况。原创 2016-04-10 16:11:14 · 10812 阅读 · 15 评论 -
CUDA编程(九)并行矩阵乘法
CUDA编程(九)矩阵乘法在之前我们一直围绕着一个非常简单的求立方和的小程序学习CUDA,不过这个立方和的小程序没有什么实际意义,这篇博客我们用CUDA并行了矩阵乘法,问题也比较简单,基于上一个立方和程序的经验,完成这个程序也不算太难,但是运行结果存在很多问题,毕竟我们还没有开始优化,不过除了速度问题,GPU浮点数运算的精度也成了一个大问题,不过这些之后都会慢慢解决。原创 2016-04-09 17:44:16 · 44612 阅读 · 22 评论 -
CUDA编程(八)树状加法
CUDA编程(八)树状加法上一篇博客我们介绍了ShareMemory和Thread同步,最后利用这些知识完成了block内部线程结果的加和,减轻了CPU的负担,结果还是比较令人满意的,但是block的加和工作是使用一个thread0单线程完成的,这点还是有待改进的。那么这个单线程的加法部分如何解决呢?我们知道GPU上的程序只有并行才能发挥其优势,所以我们自然想到这个加法能不能并行呢?答案当然是可行的原创 2016-04-08 14:29:53 · 10231 阅读 · 11 评论 -
CUDA编程(七)共享内存与Thread的同步
CUDA编程(七)共享内存与Thread的同步在之前我们通过block,继续增大了线程的数量,结果还是比较令人满意的,但是也产生了一个新的问题,即,我们在CPU端的加和压力变得很大,所以我们想到能不能从GPU上直接完成这个工作。我们知道每个block内部的Thread之间是可以同步和通讯的,本篇我们将让每个block把每个thread的计算结果进行加和。所以本篇博客我们将研究CUDA架构中Threa原创 2016-04-07 19:28:49 · 23743 阅读 · 11 评论 -
CUDA编程(六)进一步并行
CUDA编程(六)进一步并行在上一篇博客中给大家介绍了一个访存方面非常重要的优化,我们通过使用连续的内存存取模式,取得了令人满意的优化效果,最终内存带宽也达到了GB/s的级别。之前也已经提到过了,CUDA不仅提供了Thread,还提供了Grid和Block,本篇博客通过使用block进行了进一步的并行,得到了比较令人满意的结果原创 2016-04-06 15:27:56 · 15860 阅读 · 17 评论 -
CUDA编程(五)关注内存的存取模式
CUDA编程(五)关注内存的存取模式除了通过Block继续提高线程数量来优化性能,这次想给大家先介绍一个访存方面非常重要的优化,同样可以大幅提高程序的性能,即通过尽可能的连续操作内存,减少内存存取方面的时间浪费。通过最终的结果我们可以看到,看似不起眼的一个小改进(尽可能的去连续操作内存),竟然有这近7倍的性能提升,所以希望大家记住这个优化。原创 2016-04-05 19:08:59 · 10142 阅读 · 13 评论 -
CUDA编程(四)并行化我们的程序
CUDA编程(四)并行化我们的程序 上一篇博客主要讲解了怎么去评估CUDA程序的表现,博客的最后我们计算了在GPU上单线程计算立方和的程序的内存带宽,发现其内存带宽的表现是十分糟糕的。 这篇博客主要讲解了怎么去使用Thread去简单的并行我们的程序,虽然我们的程序运行速度有了50甚至上百倍的提升,但是根据内存带宽来评估的话我们的程序还远远不够,甚至离1G/S的水平都还差不少,所以我们的优化路还有很长。原创 2016-03-31 19:00:15 · 13049 阅读 · 7 评论 -
CUDA编程(三)评估CUDA程序的表现
CUDA编程(三)评估CUDA程序的表现这篇博客主要讲解了怎么去获取核函数执行的准确时间,以及如何去根据这个时间评估CUDA程序的表现,也就是推算所谓的内存带宽,总的来说有了这些准备,我们接下来就可以去优化程序了,但是优化过程也是十分复杂与漫长的,这里同样介绍了一个优秀CUDA程序应具有的特征以及通常的优化步骤。原创 2016-03-31 13:37:08 · 12769 阅读 · 2 评论 -
CUDA编程(二) CUDA初始化与核函数
这次给大家介绍CUDA的初始化和如何在显卡上运行程序,即先将数据从内存复制到显存,再写好运算的核函数,之后用CUDA调用核函数,完成GPU上的计算,之后将结果复制回内存,释放掉显存的整个过程。原创 2016-03-30 19:39:10 · 22485 阅读 · 13 评论 -
CUDA编程(一)第一个CUDA程序
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。原创 2016-03-28 22:52:04 · 61841 阅读 · 2 评论 -
高斯滤波
高斯滤波图像滤波之高斯滤波(Gauss filter)概述:高斯滤波:高斯滤波在图像处理概念下,将图像频域处理和时域处理相联系,作为低通滤波器使用,可以将低频能量(比如噪声)滤去,起到图像平滑作用。高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤原创 2016-02-04 14:49:35 · 57284 阅读 · 7 评论 -
图像平均及其在降噪方面的应用
图像平均及其在降噪方面的应用图像平均以及图像平均在应对椒盐/高斯/相机噪声方面的对比分析概述:图像平均操作是减少图像噪声的一种简单方式。我们可以简单地从图像列表中计算出一幅平均图像。假设所有的图像具有相同的大小,我们可以将这些图像简单地相加,然后除以图像的数目,来计算平均图像。算法步骤:对列表中的数字图像进行图像平均的处理顺序如下:a.输入或者获取文件名列表原创 2016-02-03 11:02:34 · 10789 阅读 · 2 评论 -
高斯噪声
高斯噪声图像噪声之高斯噪声(gauss noise)概述:高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声与椒盐噪声相似(Salt And Pepper Noise),高斯噪声(gauss noise)也是数字图像的一个常见噪声。椒盐噪声是出现在随机位置、噪点深度基本固定的噪声,高斯噪声与其相反,是几乎每个点上都出现噪声、噪点深度随机的噪声。算法步骤:通过概率论里关于正态分布的有关知原创 2016-02-02 21:34:49 · 71657 阅读 · 2 评论 -
椒盐噪声
椒盐噪声图像噪声之椒盐噪声(Salt And Pepper Noise)概述:椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种因为信号脉冲强度引起的噪声,产生该噪声的算法也比较简单。算法步骤:我们使用信噪比(Signal NoiseRate)衡量图像噪声,图象的信噪比应该等于信号与噪声原创 2016-02-02 11:25:07 · 32922 阅读 · 3 评论 -
python基于dlib的face landmarks
python基于dlib的face landmarkspython使用dlib进行人脸检测与人脸关键点标记Dlib简介:首先给大家介绍一下DlibDlib是一个跨平台的C++公共库,除了线程支持,网络支持,提供测试以及大量工具等等优点,Dlib还是一个强大的机器学习的C++库,包含了许多机器学习常用的算法。同时支持大量的数值算法如矩阵、大整数、随机数运算等等。Dlib同时还包含了大量的图形模型算法。原创 2015-11-22 10:51:31 · 41169 阅读 · 35 评论 -
k-means像素聚类
使用K-means进行像素聚类python通过使用K-means对像素聚类以此进行图像分割K-means聚类简介:K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。因此,简单来说Kmeans是一种将输入数据划分为k个族的简单原创 2015-11-26 10:06:12 · 22544 阅读 · 5 评论 -
图像直方图与直方图均衡化
图像直方图与直方图均衡化图像直方图以及灰度与彩色图像的直方图均衡化图像直方图:概述:图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。图像直方图图形化显示不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度范围为[0~255]之间,对于RGB的彩色图像可以独立显示三种颜色的图像直方图。同时直方图是用原创 2016-01-29 12:47:11 · 45526 阅读 · 3 评论 -
python图像数组操作与灰度变换
Python图像数组操作使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理numpy简介:NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量、矩阵、图像等)以及线性代数函数。数组对象可以实现数组中重要的操作,比如矩阵乘积、转置、解方程系统、向量乘积和归一化。这为图像变形、对变化进行建模、图像分类、图像聚类等提供了基础原创 2016-01-27 11:03:32 · 27887 阅读 · 3 评论 -
python基本图像操作
Python基本图像操作使用python进行基本的图像操作与处理前言:与早期计算机视觉领域多数程序都是由 C/C++ 写就的情形不同。随着计算机硬件速度越来越快,研究者在考虑选择实现算法语言的时候会更多地考虑编写代码的效率和易用性,而不是像早年那样把算法的执行效率放在首位。这直接导致近年来越来越多的研究者选择 Python 来实现算法。今天在计算机视觉领域,越来越多的研究者使用 Python 开展研原创 2016-01-26 14:01:25 · 17061 阅读 · 6 评论