大家好,欢迎来到IT知识分享网。
倾斜矫正原理及实现方式
实现步骤:
- 边缘检测,将图片转为灰度图,使用Canny边缘检测找到图片中的所有边缘
- 使用霍夫变换检测直线
- 计算角度:对于每一条直线计算其于水平线的角度,(可以用直线的极坐标表示中的角度得到)
- 角度平均:计算所有角度的中位数,用这个角度值来代表图片整体的倾斜角度
- 图片旋转:根据该角度对图片进行旋转
Canny边缘检测
Canny边缘检测的实现步骤
- 抑制噪声:通过高斯滤波对图像做平滑处理,滤除图像中的噪声,同时保留边缘的细节;
- 计算梯度的幅值和方向:使用sobel算子计算图像中每一个像素点的水平方向和垂直方向的梯度值,根据梯度值计算每一个像素点的梯度幅值和方向;
- 非极大值抑制:在计算得到的梯度幅值图上进行非极大值抑制,初步筛选边界;
- 双阈值方法:设置高阈值和低阈值,将图像中的像素点分为强边缘、弱边缘和非边缘。
像素值的梯度幅值超过高阈值称为强边缘,被看作是边缘;
像素的梯度值结余高阈值和低阈值之间,被看做是弱边缘,如果弱边缘与强边缘连接,则该像素视为边缘,否则将其抑制;
像素的梯度幅值小于低阈值,则该像素为非边缘。
在OpenCV中通过cv2.Canny(image, threshold1, threshold2, edges=None, apertureSize=None, L2gradient=None)
实现,
其中第一个参数表示输入的图像;
threshold1, threshold2
表示双阈值中的低阈值和高阈值;
edge
表示输出图片的大小;
apertureSize
表示sobel算子中卷积核的大小;
L2gradient
表示梯度如何计算,默认使用:
该参数设置为True,则计算梯度幅值使用:
非极大值抑制
图片倾斜矫正处理(Hough Transform)
霍夫变换
极坐标上的一个点对应直角坐标中的一条直线;
直角坐标中的一个点对应极坐标中的一条正弦曲线。
直角坐标映射为极坐标:
极坐标映射为直角坐标:
- Canny边缘检测后得到图像中所有边缘,遍历每一个边缘的像素点映射到极坐标系下。
- 该曲线经过的像素点的像素值+1
- 极坐标系下每一个元素的数值代表图像中共线的点的个数,
- 数值较大的点可以拟合为一条直线,将极坐标下的点的坐标反映射回直角坐标系下,对应一条直线。
图片倾斜矫正处理(Hough Transform)
图片倾斜矫正处理(Hough Transform)
图片倾斜矫正处理(Hough Transform)
图片倾斜矫正处理(Hough Transform)
https://www.bilibili.com/video/BV1Gv4y167t9/?spm_id_from=333.337.search-card.all.click&vd_source=91cfed371d5491e2973d221d250b54ae
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129715.html