1.线性点运算
原始图像的灰度值我们可以使用f(x,y)来表示在(x,y)处的图像灰度值,我们经过点运算输出的图像灰度值则为:g(x,y).为了表示的方便,我们通常使用r来表示原始图像的灰度值,s用来表示处理后图像的灰度值。
线性点运算的公式如下:s=ar+b,如下图所示:
a和b取值的大小影响着我们输出灰度图像的性质,总结也在上图当中实现了。如果a为负值,那么图像当中的亮色区域将会变暗,暗色的区域将会变亮。
2.分段线性点运算
我们对自己感兴趣的区域分别进行相应的点运算,最后得到自己理想的效果,如下图所做的分段线性运算所示:
分段函数描述如下:
当然除了线性点运算,我们还有一种更加普遍的运算则是非线性点运算了,我们下面来看看
3.非线性点运算
一般常见的有对数变换,变换的公式为s=clog(1+r),其中的c仅仅是一个常数,变换后的图像如下:
这个方法主要用于降低对比度,将低灰度的地方进行扩展,高灰度的地方进行压缩,这样就得到了最终图像输出的结果。
2.幂次变换
变换的公式和图像如下:
但是很遗憾的是,我们的在opencv的开发当中一般不知道如何进行线性点运算,一般都是进行将整张图的灰度值增加多少或者减少多少的运算,而非线性或者非线性的运算,有点难堪,但是matlab实现起来却简单得多了。matlab的实现可以参考这篇博文:https://www.cnblogs.com/geeksongs/p/11037415.html