图像倾斜可以分为两种情况,一种是平面倾斜,这种情况下拍照设备与试卷平行,拍出来的图像只需要进行旋转即可完成矫正;另一种是Z轴倾斜,这种情况下拍照设备与试卷存在一定的角度,拍出来的图像要先进行透视变换,然后再进行旋转等操作才可以完成矫正。

图像倾斜矫正关键在于根据图像特征自动检测出图像倾斜方向和倾斜角度。

对于平面倾斜,先利用边缘(轮廓)检测算法算法找到图像的边界,然后利用 Radon变换法(基于投影的方法) 、 Hough变换法 、线性回归法等找到倾斜角度,然后再利用 仿射变换 进行旋转。

对于Z轴倾斜,先利用边缘(轮廓)检测算法找到图像的边界,然后利用 透视变换 把视平面上的点投影到现实平面,然后再利用仿射变换进行旋转。

边缘检测

边缘检测容易受到噪声影响,一般第一步都是用5*5的高斯滤波器去除噪声

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import numpy as np

import cv2

img = cv2.imread('./qingxie.png')

img = cv2.GaussianBlur(img,(3,3),0)#高斯模糊 去噪 以免影响边缘检测

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

edges = cv2.Canny(gray,50,250,apertureSize = 3)#边缘检测

cv2.imwrite("canny.jpg", edges)

原图:

边缘检测后:

cv2.Canny()函数的函数原型为:

edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])

第一个参数是输入图像,必须是单通道的灰度图;

第二个和第三个参数是minVal和maxVal;

apertureSize 为卷积核大小,默认为3;

L2gradient 参数设定求梯度大小的方程

(卷积核:卷积核具有的一个属性就是局部性。即它只关注局部特征,局部的程度取决于卷积核的大小。比如用 Sobel 算子进行边缘检测,本质就是比较图像邻近像素的相似性。)

其中maxVal用于检测图像中明显的边缘,但一般情况下检测的效果不会那么完美,边缘检测出来是断断续续的。所以这时候用minVal将这些间断的边缘连接起来。

可选参数中apertureSize就是Sobel算子的大小。而L2gradient参数是一个布尔值,如果为真,则使用更精确的L2范数进行计算(即两个方向的倒数的平方和再开放),否则使用L1范数(直接将两个方向导数的绝对值相加)。

python Canny参考资料

可以看到,在上述步骤后,内部线条也被检测了出来,下面就利用霍夫变换得到边缘(霍夫变换参考):

python图像倾斜校正_python 图像倾斜校正相关推荐

  1. python图像去污_python图像去雾总结

    本人qq号:226607573,欢迎互相讨论的伙伴们 毕设期间对python图像去雾的学习与总结 近年来,雾霾越来越严重,导致户外获取的图像严重退化,何如将户外获取的有雾图像复原成高质量的清晰图像,已 ...

  2. python 视频字符画_python图像、视频转字符画

    原博文 2018-01-16 22:15 − python图像转字符画需要用到matplotlib.pyplot库,视频转字符画需要用到opencv库,这里的代码基于python 3.5 图像转字符画 ...

  3. python三维数据增强_python图像数据增强——imgaug (三)

    之前两章展示了最基本的imgaug的基础用法,以及一个较为全面的各种增强方法的展示,这里我们介绍在分割问题中的数据增强方法. 在分类问题中,输入为一张图像,输出为一个类别,在这种问题中,我们只需要对图 ...

  4. python图像转矩阵_python 图像转矩阵,矩阵转图像

    1.图像转换为矩阵 matrix = numpy.asarray(image) Help on function asarray in module numpy.core.numeric: asarr ...

  5. python常用函数图片_Python图像,图片处理笔记

    1.python3已经用Pillow代替PIL,文件要close,图像要save 2.Image是PIL图像处理中的模块 from PIL import Image 2.1 Image.open() ...

  6. python种颜色循环_python图像主色调(主颜色)提取,在hsv空间k均值迭代实现

    #!coding=utf-8fromPIL importImage importrgb2hsv importrandom asran importhsvTRGB frompylab import* # ...

  7. matlab 倾斜矫正,matlab图像倾斜校正

    4 图像颜色畸变校正介绍图像颜色畸变现象可以是由摄像器材导致,也可以是由于真实环境本身就偏 色导致,还有的是由于图像放置过久氧化.老化导致.无论其产生的原因如何, 其校正方法都是类似的.如果用 Mat ...

  8. 倾斜校正-表格图像的校正

    方法一:直接寻找表格边框的倾斜角 如果表格中的水平边框能够很好经过预处理得到,那么通过定位这一边框.得到边框的起始点和斜率,就能得到相应的角度.通过角度就能够实现校正. 难点在于如何得到边框的起始点. ...

  9. python图像处理(十)——图像仿射变换、图像透视变换和图像校正

    一.图像仿射变换 1.原理 仿射变换(Affine Transformation 或Affine Map)是一种二维坐标(x, y)到二维坐标(u, v)的线性变换,转换过程坐标点的相对位置和属性不发 ...

最新文章

  1. 「SAP技术」交货单发货过账报错 - Material's product unit must be entered in whole numbers - 之对策
  2. ubuntu14.04 安装 bcm43142无线网卡
  3. Redis:redis和memcached 比较
  4. python3.72教程_python3教程_编程入门教程_牛客网
  5. 如何正确认识C语言在当今编程领域的地位
  6. libvirt-virsh命令
  7. 优秀的用户体验设计,从讲好一个故事开始
  8. Numpy安装+导入出错的解决方法
  9. 机器学习基础(十七)—— boosting
  10. Video for linux 2 example (v4l2 demo)
  11. 【R图秀-5】将薪比薪
  12. otool nm工具命令收集
  13. DTCC 回顾:技术破局,分布式数据库创赢未来
  14. smartUp手势插件Chrome
  15. win10无需密码退出天擎
  16. 自媒体攻略合集,教你如何做一名能赚钱的自媒体人
  17. 【SpringBoot深入浅出系列】SpringBoot之实现支付宝扫码支付(沙箱环境编码实现)
  18. 量化投资可转债策略--源代码
  19. PTW 高层人事变动:新任命首席运营官和首席产品官
  20. 【深度学习篇】---CNN和RNN结合与对比,实例讲解

热门文章

  1. js三座大山----(第一座山)
  2. Ubuntu系统下MRIcroN、FSL6.0.5、Freesurfer7.1.1、ANTs、MRtrix3、AFNI的安装详解——核磁共振数据处理必备
  3. html书写表单laber,HTML基础
  4. 靠着“反转”设计,这些短视频火了
  5. 多米诺DP(双向背包)算法总结
  6. 每个python文件就是一个模块、模块的名字就是_每个Python文件都可以作为一个模块,模块的名字就是 的名字_学小易找答案...
  7. 我将进化成一条狗(9)——基因治疗
  8. SMAA算法详解 - SMAABlendingWeightCalculationVS
  9. Easy Data Transform for mac (Excel和CSV编程文件转换工具) v1.11.1激活版
  10. 关于Realtek 8821ce wireless lan 802.11ac网络适配器无法使用