对于图片倾斜做矫正处理

一 霍夫变换

对于图片倾斜问题可通过霍夫变换进行矫正,霍夫变换主要是利用图片所在的空间和霍夫空间之间的变换,将图片所在的直角坐标系中具有形状的曲线或直线映射到霍夫空间的一个点上形成峰值,从而将检测任意形状的问题转化成了计算峰值的问题。即在图片所在的直角坐标系的一个直线,转换到霍夫空间便成了一点,并且是由多条直线相交而成,我们统计的峰值也就是该相交点的橡胶线的条数。

       这么难以理解,下面将用霍夫直线检测具体解释一下为什么可以将检测任意形状问题转化成计算峰值问题。对图片建立直角坐标系,则图片中如果存在一条直线,设为:y = k*x + b,此空间x、y 为未知数,k、b是参数;而霍夫空间便是将k、b看成未知数,x、y看成参数,因此霍夫空间便是b = -x*k + y,如果图片中有一条长的直线:y = k*x + b,那么肯定由很多个像素点(x0, y0)构成,但k、b是固定的,将这条直线上的像素点全部映射到霍夫空间中,(k, b)是一个固定的点,但(x0, y0)不同,所以在霍夫空间中便形成了多条直线汇聚于一点。如下图:

对于图片倾斜做矫正处理_第1张图片

因此得出结论:我们便是在霍夫空间中统计多个(k、b),对每一个(k,b)上的直线条数进行统计,计算出峰值最高的那个,也就是在图片所在直角坐标系中我们要检测的直线。此时在回看上面的那句话应该更容易理解了。

优点:Hough直线检测的优点是抗干扰能力强,对图像中直线的残缺部分、噪声以及其它共存的非直线结构不敏感,能容忍特征边界描述中的间隙,并且相对不受图像噪声的影响。

缺点:Hough变换算法的特点导致其时间复杂度和空间复杂度都很高,并且在检测过程中只能确定直线方向,丢失了线段的长度信息。由于霍夫检测过程中进行了离散化,因此检测精度受参数离散间隔制约。

二 通过人脸检测进行矫正

       针对所需要识别的身份证照片,可能会存在身份证图像倾斜的情况,所以要对照片进行旋转修正。主要通过dlib库识别人脸,根据人脸检测模型,找到人脸眼睛特征点,计算眼睛的倾斜角度,然后对照片进行旋转。

      

 

你可能感兴趣的:(算法,图像处理,python,计算机视觉,python,机器学习,人脸识别)