Opencv3学习笔记(C++&Python双语)---阈值化操作
理论描述参考教程《学习opencv3》
图像处理过程中经常会遇见这种情况:我们已经完成了多层处理步骤并需要做出一个最终决定,或者将高于或低于某一值的像素置零同时其他的像素保持不变。OpenCV 中的函数cv: :threshold() 实现了这些功能 ,其原理是对于数组中每个值,根据其高于或低于这个阙值做出相应的处理,给定一个数组和阙值。根据个人喜好,也可以把阀值化操作理解成一个用1 x 1 的核进行卷积,对每个像素进行一次非线性操作。随着我们继续学习本章,在接触了其他史复杂的卷积操作之后,这个观点的效果将非常清楚。计算机视觉领域中的很多方法都可以解释为一系列卷积运算,最后一次操作通常是阈值化处理。
cv.threshold() 这个函数的第一个参数就是原图像,原图像应该是灰度图。第二个参数就是用来对像素值进行分类的阀值,第三个参数就是当像素值高于(或者小于)阀值时,应该被赋予新的像素值。OpenCV提供了多种不同的阀值方法,这是有第四个参数来决定的。函数有两个返回值,使用Otsu’s算法时,第一个返回值是阈值,第二个返回值就是阈值操作后的图像。
在实际情况下改如何确定预知呢,Otsu’s算法可以自动确定最优阈值。
与cv.threshold()函数不同,cv.adaptiveThreshold()在整个过程中,阈值可以自动变化。相对于一般的阙值化操作,当图像中出现较大的明暗差异时,自适应阙值是非常有效的。这个函数仅处理单通道8位或浮点型图像,并且要求源图像和目标图像不同。
python代码