从事图像处理这个行当也已经有一段时间了,对于一个自动化毕业的本科生,确实是磕磕绊绊的走到现在了,前期的基础图像处理还基本上能够轻松上手,越到后面的机器学习算法,用到的数学知识也就越深了,所以越到后面会越困难的。现在回想下之前的图像处理基础算法,其实是可以归纳到数学各个领域的。下面简单介绍下一些基础图像处理算法,当然主要是讲自己对其的归类理解,有不对的之处,大伙一起探讨。如果想要这些算法的具体实现,给推荐几个博客(百度的),我也是从这些类似的博客起步的:
http://www.cnblogs.com/drizzlecrj/archive/2008/02/25/1077494.html
http://blog.csdn.net/xizero00/article/details/6631209
主要的基础图像处理算法有:灰度化,二值化,投影法,差影法,图像采样,增强,分割,边缘提取,匹配等。
下面讲讲这些算法最基础实现时按照数学知识归类:
1. 初等代数类:
①.灰度化:一般灰度化是用加权平均的,这个在我们小学都可以解决了,f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j));
②二值化:其实二值化就是一个分段的0-1函数;
③差影法:这类的帧差发,前景提取法,都是一个减法,当然如果有背景建模之类的,那就背景建模的算法就属于高等代数或者概率统计的知识了;
④图像锐化:一般的图像锐化算法也是相邻像素点之间的初等代数运算,运算如下:
设f(i,j)像素为(r1, g1, b1) , f(i-1,j-1)像素为(r2,g2,b2), g(i,j)像素为(r,g,b),则
r = r1 + 0.25 * |r1 - r2|
g = g1 + 0.25 * |g1 - g2|
b = b1 + 0.25 * |b1 - b2|
⑤图像的叠加,浮雕效果等也都是属于初等代数的;
2.概率统计类:
①.投影法:像直方图统计之类的,是属于统计类的;
②.匹配算法:当然匹配算法也可以用线性代数,高等代数做,但是像方差匹配之类是属于概统的;
③图像采样:一听采样就知道是概统的,其中有图像区域采样,随机采样,分布采样,上/下采样;但是一般的采样算法都要结合代数知识进行应用,比如对图像感兴趣区域进行提取,可能还要用到插值算法进行归一化之类的;
3.高等代数:
①边缘提取:这主要用到的是一阶二阶微分,卷积等知识,这些都是高等代数中的基础;
②图像滤波:卷积滤波,高通滤波;
这有一片关于图像卷积实现方法的文章,讲的很好:
http://blog.sina.com.cn/s/blog_4bdb170b01019atv.html
4.几何学:
这部分主要是在于图像中物体的形态特征的描述,像圆,直线,曲线,方形等几何图形的特征描述算子,了解这些可以进行物体的特征提取判别;
还有就是角度,使用正余弦定理结合线性代数,可以进行图像线性匹配;
5. 线性代数:
其实个人认为线性代数也是属于高等代数,线代的矩阵问题也是可以转换为高等代数的方程计算的,当然高等数学的方程,转换为矩阵的话,计算起来会更加形象化,还会有很多简化算法;
①PCA降维:这个是基础的人脸识别算法,很好的引用了矩阵的特征值,特征向量等知识,是经典算法;
②匹配:结合几何等特征,可以对图像进行线性匹配;
③非线性的线性化,通过类hogh等变换,可以将高维非线性数据,线性化进行处理,这样可以提高效率,简化算法。
在图像基础处理算法中很多其实是各种数学知识的综合,要灵活应用各种数学知识才能更加高效率的对图像数据进行处理。这也足见数学知识对于图像处理的重要性,但是一些很简单的图像处理算法,其实用很简单的数学知识就能解决,所以学起来也要有信心,从简单到困难,一步一步脚踏实地的来。
以上属于个人的一点看法,如果不对,请各位武林高手指正补充。