图片旋转算法.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图片旋转算法

表格识别(三)图像旋转算法 发布- HYPERLINK \t _blank wangyangysfs | 查看-191 | 发表时间-2010-1-28 ????? 决定把题目改成 表格识别之···· ,不用科研训练之几几几了,这样更能体现内容。嘿嘿,昨天看了下javascript,不对,应该是今天凌晨,越看越爽,编程真美。我很喜欢实践,动手去做东西。 刚才看了个视频,叫“看你妹之网瘾战争”,真不错,内容和制作很好。里面讲了个垃圾,怎么会有杨永新这样的人,真XXXX。好了,不扯了。回归正题: ? ???????上一篇(Hough变换,地址: HYPERLINK /post/15.html /post/15.html?)中提到, 待识别文档被扫描成图像的过程中,或多或少地会出现某种程度的倾斜。为了保证后续识别过程的顺利准确,我们有必要通过算法测量图像的倾斜角度,并进行快速的倾斜矫正。上一篇文章里,我们已经实现了用Hough变换通过测量表格线的倾斜角度而间接的得出了图像的倾斜角度,现在,我们需要利用这个角度将图像旋转到不倾斜的位置,以实现倾斜矫正。 ? ???????写到这,发现嘴馋难忍,于是打算拖陈俊峰出去买点吃的,恩,就先写到这,回来继续。O(∩_∩)O哈哈~ ????? 回来了!呼呼·····陈俊峰是个好人!我们继续: ? 传统的图像旋转方法: ????? 设图像绕任意点 C(x0,y0 )旋转θ角度,如图所示: ? 我们可通过以下几个步骤来实现该旋转变换: (1)将指定的任意旋转中心C(x0,y0)平移到坐标原点O,变换矩阵为Ts1 (2)使图像绕坐标原点逆时针旋转θ角,变换矩阵为Tr (3)使旋转中心从坐标原点平移回原来的位置C(x0,y0)。变换矩阵为Ts2 ? 所以图像绕任意点C(x0,y0)的旋转过程为将每一象素点的齐次坐标的行向量右乘变换矩阵: [x,y,1]=[x,y,1] · Ts1 · Tr · Ts2 =[x,y,1] · T 其中: ? 所以: [x,y,1] = [x,y,1] · T = [(x-x0)cosθ+(y-y0)sinθ+x0 ,-(x-x0)sinθ+(y-y0)cosθ+y0?, 1] 即: x = (x - x0)cosθ + (y - y0)sinθ + x0 y = - (x - x0)sinθ + (y - y0)cosθ + y0 ? 利用上式(我们标记它为式一),就可以实现图像的旋转,但是,这种算法需要对每个前景像素点都作一次复杂的含正/余弦函数的乘法运算,而??角函数和乘法运算都是十分耗时的,计算量会非常大,因此,我们需要对算法进行改进。 ? 改进的快速图像旋转方法 ??????由于图像是线性存储的,一幅图像就是一个象素点阵列,象素点之间的相对位置关系是确定的。如下图所示,图像定义在矩形域PAPBPCPD中。任意象素点P(x,y)和与其同列的第一行象素点PR(xR,yR),和与其同行的第一列象素点PL(xL,yL),以及位于第一行第一列的象素点PA(xA,yA)在几何上是矩形的四顶点关系。 ? ? 在旋转之前,矩形的一个顶点坐标可以由其它三个顶点坐标来确定: x = xR + (xL - xA) y = yR + (yL - yA) ? 由于旋转变换是线性变换,矩形的形状并不因旋转而发生变化。如上图右所示。因此,旋转后上式(我们标记它为式二)仍然成立! ? ?????? 所以利用图像第一行和第一列的象素的旋转结果就可以计算出其它所有象素的旋转后的位置。因此旋转一幅图像,只需对第一行和第一列的象素按(式一)进行旋转变换,对除第一行和第一列以外的象素用(式二)进行简单的加减运算即可,这样就避免了对整幅图像的所有象素都作复杂且耗时的矩阵相乘运算。据说,这样做效率提高了500多倍! ? ????? 我们现在说一下如何正确的旋转我们的图像。经Hough变化检测直线算出直线的极坐标角度θ0。后,可确定图像需要旋转的角度 ? 当θ0π/2 时分为三种情况: ? 1.?当θ0π/4时:(如下图) ? ? 可知图像需要逆时针旋转θ0 ? 2. 当θ0π/4时:(如下图) ? 可知图像需要顺时针旋转π/2-θ0 3. 45度角时正反转都行。 ? 当θ0π/2 时情况与此类似。这里就不再赘述了。 ? 好的,现在给出C#的实现代码: 一些说明: 1. 函数的入参为图像的二值矩阵(这里用布尔值)和需要旋转的弧度数的100倍 2. 函数返回的是一个经过旋转的图像二值矩阵 ? ?  HYPERLINK /post/16.html \l viewSource \o view source view source  HYPERLINK /post/16.html \l prin

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档