图像倾斜(共5篇)
图像倾斜 篇1
目前国内针织物厂家在针织物品生产的过程 中,需要对其花纹、纵向密度和横向密度等进行检测。针织物结构的测量是针织物行业质量检测中针织物结构的测量是针织物行业质量检测中不可或缺的一项,尤其在受到一定的拉力的情况下测量的针织物纵向密度是每个厂家必须做的质量检测工作。检测多采用机器视觉图像处理技术,而实际针织物的图像由于某些原因存在一定程度的倾斜,若倾斜角度过大,将会严重影响测得数据的真实性。
目前做图像倾斜矫正方面的研究有很多,如车牌倾斜矫正、文字、文档的倾斜矫正等,研究针织物图像倾斜矫正的比较少[1,2]。而针织物表面松软,能向各方向上延伸,弹性大,是有线圈组成的,所以纹理结构没有机织物明显,并且在外界的受力情况下容易发生形变,从而造成研究针织物的倾斜度矫正、密度等造成较大困难。目前国内外有研究机织物图像倾斜矫正的[3,4,5],大连理工大学的温智捷就对机织物进行了研究,他利用二维傅里叶变换研究的机织物图像的倾斜[6]。
本文在一维傅里叶变换求纵密的基础上进行深入研究,根据针织物自身的特性,结合坐标旋转公式得出了一个实用的算法,达到了针织物倾斜自动校正的要求。
1 机织物倾斜矫正方法
目前,研究机织物的倾斜矫正的方法有两种,一种是利用Hough变换进行机织物倾斜矫正,另一种是利用二维傅里叶变换进行机织物倾斜矫正。机织物的倾斜矫正方法可以为针织物倾斜矫正研究提供参考。
在机织物图像中,它有着很有规律的纹理信息,经、纬纱间隔固定,分布均匀,并且直线感强,不容易弯曲或被褶皱。目前使用Hough变换测倾斜度是结合着上述提到的层次Hough变换,在提取纬纱信息后进行Hough变换,通过求取累加器矩阵的均方差来求得倾斜度。Hough变换虽然有抗噪声性能强等优点,但是它的基本算法有着相当复杂的运算量,所以一般要对其进行预处理。
2 针织物图像倾斜矫正
机织物的两种倾斜矫正方法,它们对于机织物来讲是比较合适的,特别是傅里叶变换法。但应用于针织物就不见得比较好了,针织物韧性很大,线条相对机织物来看,要粗并且也不是特别直,在加拉力和无压力的情况下,收缩、伸展比较大。针织物由于是线圈组成的,在用料上,很多是用毛线织的,由于毛线有线绒,所以针织物的图像噪声要更大一些。如果使用上述的傅里叶变换,则需要注意刚才提到的针织物是线圈排列的检测,而机织物是经纬纱的检测,他们的周期性是不同的,并且由于针织物韧性大,线圈排列并不能很接近直线,而且该方法用的是二维傅里叶变化,相比一维,运算量大大增加。所以上述的傅里叶方法需要进行改进才能适用于针织物。本文结合着图像旋转与一维傅里叶变换得出了一套针织物倾斜度矫正的方法,下面就探讨一下具体的算法。
3 针织物图像倾斜自动矫正方案
3.1 一维傅里叶变换纵横密求法
在针织物图像摆正的时候对图像f(x, y)逐列相加,并对其和进行一维傅里叶变换,得到频谱F(u);对f(x, y)逐行相加,并对其和进行一维傅里叶变换,得到频谱F(v),即
从频谱|F(u)|中分析得出峰值所对应的u作为图像中的纵密,从频谱|F(v)|中求得峰值所对应的v作为图像中的横密[1]。
3.2 用纵密频谱进行自动矫正方案
本文首先从旋转后的图像中心提取一小矩形图,然后对其按一般求纵密的方法求其傅里叶变换的频谱。由于针织物图像具有纵横均匀相错的特点,从-15°到+15°旋转经过傅里叶变换后会出现相应的规律,对其进行研究后发现,它可以很好地判断出矫正的角度。
本实验所选用的相机是180万像素(1 280×1 024),相机所拍的针织物的实际大小为3.72 cm×2.98 cm,而对应图像的像素为1 280×1 024,可以求出两个相邻行或列的像素之间的距离为0.002 906 25 cm。首先采集一幅小角度偏斜的针织物图像(倾斜角度15度以内),本实验从原图中提取像素为512×600大小的图像做分析,如图1(a)所示,旋转-15°后提取像素为342×450小矩形图,如图1(b)所示。
将图像以图像中心为中心点从-15度到+15度进行旋转,每旋转一度就从以旋转后的图像中心为中心,提取出大小为500×450的矩形图f1(x, y),x∈(1,499),y∈(1,499)。对于不同的织物,在此小矩形图中的纵横线圈数不一样,通过实验对不同针织物检测后发现在通常的情况下,此小矩形的纵向线圈数不会超过15,横向线圈数不会超过20。
对提取的矩形图f1(x, y)逐列相加,并对其和进行一维傅里叶变换,得到频谱|F1(u)|并对其分析。一维傅里叶变换求纵密,当图像无偏斜或偏斜很小时,|F1(u)|的峰值所对应的u就是纵密,故只需对|F1(u)|中的u从1到15进行研究即可,本文把u稍微扩大一点到17,然后按上述过程得到频谱图,如图2所示。
由于矩形图里的纵向线圈数不会超过15且大于3,故只需在3到15的范围内分析u。在3到15内找出每一个峰值对应的u的位置,分别计算出峰值与邻近的左右两点高度差,取其中的最小值作为最小邻近峰差值。在u为3到15的范围内比较所有最小邻近峰差值,取最大的那个作为最大峰差值,并记录出对应的横坐标。
将原图像从-15°到15°旋转,把每旋转一度得到的最大峰差值和相应的横坐标u记录下来,如表1所示,设横坐标为旋转度数,纵坐标为最大峰差值,可得到图3所示。
在图3中,用每一个峰值分别减去相应左右的谷值,把较小的差值作为峰谷值。
自动矫正倾斜织物图像的关键点在于找到最大的峰谷值,在平针织物图里,毛线是有规律的纵横均匀交错的,每一个线圈都是行列笔直的排列着。所以,如果一个无倾斜的针织物图从-15°到15°旋转,其小矩形的频谱也是以一定的规律变换着。当它旋转到0°时,峰谷值肯定会有一个巨大的变化,这个时候的峰谷值就是最大峰谷值。当最大峰谷值出现的时候,频谱图里相应的横坐标就是最佳矫正角度,在图2中横坐标代表着旋转角度值。图1(a)的矫正后的图像如图4所示,其最佳矫正角度是-4°。
用|F1(u)|去矫正倾斜织物图像的原理是一样的,但是实验表明用|F(v)|矫正的效果不好,这与针织物的组织结构有很大的联系。针织物的线圈不是圆的,尤其是受到拉力后,线圈的长度一般要大于它的宽度。所以,可能是由于这一点而使用不是很稳定。
为了体现这种自动矫正的方法的广泛性,我们在不同照明度的情况下用不同的织物做了大量实验,实验的结果也大体一样。
4 结语
由于机器视觉技术在处理图像时,需要对有倾斜的图像进行矫正预处理,而针织物的倾斜图像具有一定的特殊性,因此本文先利用一维傅里叶变化求针织物纵密频谱和横密频谱,根据各自的峰值特性进行自动倾斜矫正。本文针织物倾斜矫正的方法不仅可以得出最佳矫正角度,而且可以同时算出针织物的拉密度,可谓一举两得。该方法是利用傅里叶变换和旋转公式,根据针织物结构特点而得到的,在针织物行业里是尚属独有的。本文所采用的方法具有很大的普适性,可以在针织物的图像检测领域大量得到推广,具有广泛的实际应用价值。
摘要:倾斜的针织物图像在图像处理前需要对其倾斜进行矫正预处理,但由于针织物图像的特殊性,使其不能采用机织物等倾斜图像的矫正方法。针对这一难题,利用一维傅里叶变换求针织物纵密频谱和横密频谱。计算,然后根据各自频谱的峰值特性进行自动旋转倾斜矫正。给出了算法细节,同时还得到针织物的拉密度。实际研究表明,所采用的方法在针织物行业里尚属独有,运算量小,实时性高,具有很大的普适性,非常适合于在针织物的图像检测领域推广,具有广泛的实际应用价值。
关键词:一维傅里叶变换,倾斜,频谱
参考文献
[1]Liu Hong,Wu Qi,Zha Hongbin,et al.Skew detection for complex document images using robust borderlines in both text and non-text regions.Pattern Recognition Letters,2008;29(13):1893—1900
[2]Kwag H K,Kim S H,Jeong S H,et al.Efficient skew estimation and correction algorithm for document images.Image and Vision Computing,2002;20(1):25—35
[3]孙晓明,官伟波,王晋棠.基于傅里叶变换的针织物密度分析.江南大学学报(自然科学版),2008;2(2):172—175
[4]郑宇乐.基于图像分析的针织物组织结构模式识别研究.上海:东华大学,2008:80—85
[5]Semnani D,Vadood M.Improvement of intelligent methods for evaluating the apparent quality of knitted fabrics.Engineering Applications of Artificial Intelligence,2010;23(2):217—221
[6]温智捷.图像纹理特征表示方法研究与应用.大连:大连理工大学,2008:42—44
图像倾斜 篇2
一棵树
站在两盏路灯中间
左边的树叶被左边的灯照亮
右边的树叶被右边的灯照亮
还有许多叶子
藏在路灯与路灯之间的黑里
两盏路灯的距离
等于寂寥的长度
一张蛛网挂在树上
网住忽明忽暗的落叶
和来来往往的脚步
却漏掉了寂寥的灯光
趴在叶子里的昆虫不动声色
看着一束光
绕过树的阴影
伸出手来
轻轻试探另一束光的虚实
趁着夜黑风高
一只飞蛾
又一只飞蛾
成群结队地
也绕过树的阴影
把一盏路灯的光亮
搬运到另一盏路灯上
墙角的雨伞
自上一次约会之后
雨伞便离开那条巷子
带着夏夜的体温和心跳
待在墙角默默无语
不再喧哗的树叶
加深了黑夜的湿度
一片孤独的云
一颗潮湿的心
都含着太多的泪水
酝酿已久的雨
终究未能落下
雨伞收拢了心事
铺在地上的灯光
像一摊擦拭不掉的水渍
倚着渐渐风干的回忆
雨伞仍在惦念
那个曾在伞下躲雨的人
是否正被另一场雨淋湿
暖 冬
今年冬天
平均气温高于常年值
天气预报说这又是一个暖冬
人们换掉厚厚的冬装
也换掉为寒冷准备的形容词
身处冬天里的春天
行人依然行色匆匆
只是眼神里多了一份迷离
没有人注意到路边的树木
在经历许多冬天之后的这个冬天
又经历了什么
阳光急迫地将河水
从冰层下面唤醒
几片去年的树叶犹豫着
是继续留在枝头还是应该落下
这个冬天
与寒冷无关
甚至与冬天也无关
洗衣女子
坐在河边
洗衣女子在石板上
反复搓洗着手里的衣服
当远方的小桥上
有一束目光投了过来
她慌乱地将一朵浪花揉碎
野旷天低
树木站在河岸
女子把洗净的衣服
晾上树杈之后
总会望着水草独自发呆
目送泛起的泡沫
破灭或者被河水带走
双臂伸进微凉的河水
她捞不起水里的云彩
更捞不起沉于河底的心事
只能将上游漂过来的落叶
捉住并且扔进轻雾
洗衣女子转过身子
抓起最后一件衣服
用力拧着
仿佛要把这湿漉漉的清晨
一起拧干
窗口的风筝
很多人在广场上放风筝
我抬头就能从窗口
看到那些风筝
以蝴蝶的形状
以蜻蜓的形状
以各种各样的形状
利用虚拟的翅膀
一边模仿
一边在空中飘飞
尽管我坐在五楼的窗前
无法平视站在地面放风筝的人
但是我知道
他们的手里都攥紧绳子
一只风筝的高度取决于
绳子的长短
而不是目光
这个下午
我按照公文的格式逐步理顺了
自己与风筝以及飞翔的关系
我与风筝隔着一层玻璃
风筝与飞翔隔着一根线绳
倾 斜
山坡是倾斜的道路也跟着倾斜
我爬山时的身体也是倾斜的影子也跟着倾斜
树木是倾斜的树上的鸟鸣也是倾斜的从树叶缝隙漏下的阳光
也是倾斜的所有事物倾斜的角度
不尽相同
而我与地平线构成的斜角
约等于自己与人生的角度
我还要倾斜着
向上再攀爬一段距离
直到登上山顶
我才能将自己扶正
打坐的山
一座山
面对另一座山
已经打坐了上千年
一座山为另一座山
留着一条路
时而平缓
时而崎岖
每一座山
都是草木的须弥座
每一块石头里
都包含着禅意
树欲静而风不止
树木静不下来
就无法像石头一样成为山的一部分
风一直在动
只有山不动
一座山不动
另一座山也不动
病房里的时间
天棚是洁白的床单是洁白的护士的服装是洁白的时间也是洁白的洁白的让你
无法看清有多少细菌
隐匿于洁白得褶皱
进了病房才知道
其实每一天
都有一双无形之手
从我们的生命里
抽取一些东西
也许是时间
也许是包含在时间里的感情
有些病情无法诊断
有些创伤无法治疗
在病房
每一秒钟都如此宝贵
又如此难熬
躺在病床的我正在看着被抽走的时间
量化为五百毫升的药水
又通过一根塑料管
一滴一滴
图像倾斜 篇3
文本图像的倾斜校正可分割为倾角检测、旋转校正两个问题[1]。目前最常用的倾斜角的检测有: (1) 基于Hough变换的方法; (2) 基于交叉相关性的方法; (3) 基于投影特征的方法; (4) 基于Fourier变换的方法; (5) 基于K—最近邻簇的方法[2,3,4,5,6]。本文在总结以往算法的基础上, 对于包含文本和图像的图文图像, 我们根据文本呈现的周期性进行排除图像的干扰, 从而得到精确的倾斜角度。
1 太阳黑子周期性
太阳黑子是人们最早发现和最熟悉的一种太阳表面活动。因为太阳内部磁场发生变化, 太阳黑子的数量并不是固定的, 它会随着时间的变化而上下波动, 每隔一定时间会达到一个最高点, 这段时间就被称之为一个太阳黑子周期。太阳黑子的活动呈现周期性变化的, 沃尔夫 (R.Wolfer) 根据在过去的288 年 (1700 年~1987 年) 间每年太阳黑子出现的数量和大小的观测数据推算出11 年的周期规律。我们可以在matlab中结合FFT数据分析仿真得到其最大周期[7,8]。在本文中, 我们在此基础上和Radon变换结合, 从而检测出最大倾角。
2 相关技术
Radon变换是用来计算图像在某一指定角度射线方向上投影的变换方法, 也就是将图像在某一方向上做线性积分。
设f (x, y) 为一个二维函数, 则Radon变换定义如下:
快速傅里叶变换 (fast Fourier transform) , 即利用计算机计算离散傅里叶变换 (DFT) 的高效、快速计算方法的统称, 简称FFT。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少, 特别是被变换的抽样点数N越多, FFT算法计算量的节省就越显著。
3 图文图像倾斜校正
文本图像的倾斜校正可分割为倾角检测、旋转校正两个问题, 重点在于倾斜角的检测。我们利用太阳黑子的周期性的检测方法, 得到图文图像的周期和功率, 根据文本和图像呈现出的不同特性, 我们将图像筛选掉, 然后进行倾斜检测, 此时不再受到图像的干扰, 可以得到很精确的倾角。
具体步骤如下:
(1) 为了得到图文图像的各个部分, 我们将图像进行分块处理, 但此时分的块数不宜过多, 否则文本的周期性不明显;
(2) 将所有的子块进行Radon变换, 得到各个子块的最大倾角;
(3) 我们将“步骤 (2) ”得到的数据作为原始数据, 利用快速傅里叶变换FFT进行数据分析;
(4) 利用奈奎斯特采样频率的方法得到数据的功率和频率的关系曲线;
(5) 画出功率和周期 (频率的倒数) 的关系曲线图, 从而找到最大的功率和周期, 根据子块功率的最大值及该处的周期筛选掉不符合要求的子块;
(6) 将符合周期性的子块保留, 利用拉东变换进行倾角检测, 然后旋转校正。
4 实验仿真
该实验在matlab中进行, 我们通过扫描得到一张含有图像和文本的图文图像。
(1) 对原始图像进行划分子块处理, 得到的效果图如下:
(2) 通过快速傅里叶变换进行数据分析, 我们得到各个子块的最大功率如下图所示:
(3) 包含文本较多的子块, 其功率比较大和且在该处周期性也比较明显, 我们用数学分析的方法得到这些子块。需要保留和需要排除掉子块的示意图如下:
(4) 将所有保留的子块合成, 通过旋转校正得到最后的结果图, 如下图所示:
5 结束语
本文对图文图像的倾斜检测和校正进行了讨论和研究, 提出了一种新的图文图像的倾斜检测方法, 大量实验结果表明, 该方法简单实用, 计算时间短, 具有较好的性能, 同时对今后进行图文图像的倾斜检测奠定了良好基础。
摘要:对于图文图像的倾斜校正研究有别于纯文本图像, 因为它不仅仅包含文字, 还包含图像。单纯的文本图像的倾斜检测是不能够精确的判断出图文图像的的倾斜角度, 从而不能完成正确的校正。为此, 我们提出了一种新的方法, 利用Radon变换和快速傅里叶变换的结合检测出文本的周期性, 而图像无周期, 从而将没有周期性的图像排除掉, 这样可以很精准的得到倾斜的角度, 以减少校正的误差。
关键词:太阳黑子,Radon变换,快速傅里叶变换,周期性,倾斜校正
参考文献
[1]杨淑莹.VC++图像处理程序设计 (第2版) [M].北京:清华大学出版社;北京交通大学出版社, 2005.1
[2]汪同庆, 朱永权, 王洪.基于游长平滑的文档图像倾斜校正[J].计算机工程, 2004, 01:141-143.
[3]王有伟, 刘捷.手写体数字识别中一种新的倾斜校正的方法[J].计算机工程, 2004, 11:128-129+137.
[4]王姝华, 李佐, 蔡士杰.基于最小二乘法的文档图像倾斜检测方法[J].计算机应用与软件, 2001, 09:43-46.
[5]李政, 杨扬, 颉斌, 王宏.一种基于Hough变换的文档图像倾斜纠正方法[J].计算机应用, 2005, 03:583-585.
[6]孙楠, 刘志文.一种改进的中文文档图像倾斜检测方法[J].计算机仿真, 2006, 09:184-187.
[7]HONSINGER CHRIS WJONES PAUL.Method for image skew detection[P].:US8160393, 2012-04-17.
倾斜的雨伞作文 篇4
――题记
“嘀嗒嘀嗒”雨滴正在那里跳着舞,跳出属于他们的声音。然而,在一个很偏僻的小巷里,妹妹对姐姐说着今天她在学校发生的趣事,姐姐撑起那把并不大的伞。姐姐在右,妹妹在左。姐姐的左手和妹妹的右手一起打着这把并不大的伞。
两个人慢慢的走着……姐姐把小伞倾斜着,不偏不倚的遮过了妹妹的左肩。妹妹感觉到了自己的身体完全在伞里了,于是跟立刻站到姐姐面前,姐姐还以为她要让她抱呢!还没反应过来,妹妹又站到了姐姐的左边。妹妹看到了姐姐的右肩已经打湿了,心里像是被什么揪了一下。
妹妹拿起了那把伞,妹妹对姐姐说:“姐姐,你也累了,不如?我给你打伞如何?这样你就可以休息一下了,我也想体会一下打伞的乐趣,好不好嘛?”妹妹摇晃着姐姐的右臂。姐姐无奈,只好答应了:“好吧,就这一次哦!累了的话,你就给我,听到了没有?” “嗯嗯,知道啦!”
妹妹打着那把伞,心里一直想着:“朝右倾斜点吧!不然姐姐就会感冒的!”妹妹把伞向右倾斜,终于,没有雨点滑落在姐姐的衣服上了。妹妹内心平静了。姐姐似乎感觉到了什么,蹲了下来,看着她那并不大的妹妹。妹妹也看着慢慢蹲下来的姐姐。
妹妹假装问道:“姐姐?怎么了么?有事么?没事的话,我可就继续打伞了哦!”姐姐也回答道:“妹妹,我打伞了吧?你手应该也麻了,你休息一下,我替你打!” “没关系的,你看!我手什么事也没有啊?!姐姐,我们就继续走吧!”姐姐无奈。一把抱起了打着伞的妹妹。
说道:“要不?我抱着你,你打伞如何?”我还想挣脱的,只不过,看着姐姐脸上那恳求的表情。我放弃了……回答道:“好吧!就抱一会儿……”姐姐答应了,心想:怎么可能?当然是要把你抱回家我才放手了啊!再说了,这里离家又不远了!
妹妹手机打着那把并不大的伞,姐姐抱着打着伞的妹妹。在姐姐眼中,妹妹是自己的所有;在妹妹眼中,姐姐是自己的全部。
图像倾斜 篇5
关键词:点云数据,扭曲文本,倾斜检测,空间倾斜,平面倾斜,倾斜校正
0 引言
随着信息技术快速发展,信息化成为人们提高办公效率、生活品质的重要途径。电子文档具有保存方便,并易于在互联网中传输等特点,因此将纸质文档转换为电子文档的技术越来越重要。目前通过电子设备来进行这种转换的方法主要是通过摄像头获取文本资料数字图像,经过一系列的图像预处理、OCR(光学字符识别)等将其转化为电子文档。而在这种转换过程中,文本的倾斜会对整个转化过程产生不利的影响,因此图像的倾斜校正在图像的预处理中始终占据一个非常重要的地位。实际采集文本数字图像时,若整个文本处于一个斜面上时或者拍摄角度不对而出现射影文本情况,导致采集的文本图像出现像素的堆积,影响OCR识别率。同样若文本为具有一定厚度的书籍时,采集文本数字图像时会由于书籍的厚度出现文本扭曲,无法直接进行倾斜校正处理。
传统的二维文本图像倾斜校正算法主要分为以下几类:基于Hough变换的方法、基于投影的方法、基于K-最近邻方法以及基于Fourier变换方法。文献[1,2]中基于Hough变换的方法使用图像空间目标像素的坐标去计算参数空间中参考点的可能轨迹,是目前用得较多的一种倾斜角检测方法,但对扭曲文本图像因无法准确提取文本线而出现难以处理的情况。文献[3]以文字行之间存在一固定的行间距为基础再使用基于投影的方法来确定倾斜角度,同样无法处理扭曲文本。文献[4]使用基于投影轮廓的方法来求得倾斜角度,之后对整幅图片进行等角度旋转,而非像素的旋转,经此方法校正后的扭曲文本图像很难再接着进行扭曲恢复等处理,影响最终的OCR识别率。文献[5]使用近邻法则是找出所有中心点的K个最邻近点,计算每对近邻的矢量方向并统计生成直方图,直方图的峰值对应着整幅图像的倾角,同样对原始扭曲文本校正效果一般。文献[6]基于Fourier变换方法则以Fourier空间密度最大的方向对应于倾斜方向。虽然该方法倾斜校正较为精确,但由于空间复杂度很高,计算的时间长,因此在实际中使用较少。
由以上文献可知,传统的二维倾斜校正算法无法有效处理原始扭曲文本的倾斜。而本文将三维处理技术应用于文本图像倾斜校正领域,提出一种基于点云数据的扭曲文档倾斜校正方法,能有效处理扭曲文本的倾斜状况,并通过实验进行了验证。
1 算法思路
若文本模型存在噪点,会对后续的处理产生极大的影响,因此需要先对文本点云模型进行去噪。去噪后将倾斜检测分为两步:空间倾斜检测与平面倾斜检测。空间倾斜检测通过提取模型边界特征点,采用鲁棒方法求得文本模型边界所在平面的法向量,最后通过与一平行于Z轴的单位向量之间的叉乘、内积等计算出空间倾斜角,并进行判断,若倾斜则采用空间旋转算法进行旋转校正。平面倾斜检测时,由于文本模型是扭曲、非平面的,因此先对文本模型进行平面投影。接着提取投影的边界特征点,采用空间最小二乘法对其进行空间线性拟合,计算出其平面倾斜角,进行平面倾斜校正。图1是本文的算法流程图。
2 点云去噪
在三维扫描仪获取结构光的投影并进行处理的过程中,不可避免地会产生一些噪点数据,这些噪点数据将会对后续的处理产生较大的干扰作用,因此必须先对其进行点云去噪。由于三维扫描仪都有配套的处理软件,可以对采集的模型数据进行初步分割,去除那些不需要的部分。但有时个别单点或者微量点云会由于人眼无法观察到而导致人工清除失败,因此进行去噪的主要目的就是去除那些遗漏的离群点。本文采用的方法是基于K-近邻的散乱点云去噪算法。
2.1 K-近邻搜索
文本模型是由无数个孤立的点组成的,因此我们读入到内存中的数据点都是混乱的、无序的,这和传统的BMP位图有着显著区别。所以在对模型进行其他处理前,必须先将模型中的散乱点通过某种结构关联起来,建立数据点之间的空间拓扑关系。本文采用K-近邻结构[7]。
目前最常用的K-近邻计算方法有八叉树法、空间单元格法和K-d树法。其中前两种方法都是基于空间包围盒的划分,后一种方法则用来查找相距最近的两点。本文采用空间单元格法进行K-近邻计算。首先设P=Pi(i=0,1,…,n)是文本点云模型S上的一个采样点集,将S中与当前点Pi距离最近的k个数据点称为点Pi的K-近邻,记作Nb(p)。接着读入文本模型数据点集,将整个点集的坐标存入三个一维数组中,得到模型点集在X、Y、Z三个坐标轴方向上的最大值与最小值,然后根据极值信息,k值及点的总数n,计算出子立方体边长L。同时将文本点云模型划分成m'×n'×l'个子立方体,记录每个子立方体所包含的数据点以及每个点所在的立方体索引号,并删去不包含任何点的子立方体。最后通过子立方体内点的信息遍历数据点进行K-近邻搜索。
定义三个方向上最小坐标为:Min_x、Min_y、Min_z;最大坐标为:Max_x、Max_y、Max_z,则式(1)文本点云模型的子立方体的长度L:
其中β为调节立方体编程L大小的比例因子;n为数据点的总个数;k为可调整的近邻点的个数。那么由式(2)可以推导出子立方体在三个坐标上的个数:
同样由式(3)可推导出当前点P(x,y,z)在子立方体中三个坐标方向的索引号:
在此为每一个立方体子空间建立一链表。该表存储每个子立方体内的所有点,并统计该子立方体内点的个数,其结构如下:
求取当前点的K个近邻点的步骤为:
1)根据当前点的坐标值,确定其所在子立方体的索引号,同时将此子立方体视为初始搜索区域;
2)计算当前点到所在立方体六个面的最短距离ds;
3)计算当前搜索区域点的总个数N1,若N1不小于K,则接着计算当前点与搜索区域内其他点的最大距离dmax。若dmax小于ds,取前k个点为当前点的K近邻点,否则以当前区域为中心向周围扩展建立新的搜索区域;
4)为每一个数据点建立一个k邻近表。该表保存每个点的k个邻近点以及它与邻近点的距离,其结构如下:
2.2 邻域平均算法
建立好散乱点之间的空间拓扑关系之后,就可以使用二维图像处理中的滤波算法对点云模型进行去噪处理。遍历模型搜索每个数据点的K-近邻,采用邻域平均法进行去噪。具体算法描述如下[8]:
1)读入三维文本模型点云数据;
2)建立散乱点云之间的空间拓扑关系;
3)搜索当前点Pi的K-近邻Nb(p);
4)计算当前点Pj与其各K-近邻点之间的距离,取其平均值Dmid(pi)可由式(4)求出:
5)判断该平均距离Dmid(pi)是否大于设定的阈值D,若超过,则认为该点是噪点,将其删除;
6)重复3)~5),直到处理完所有的数据点。
3 倾斜检测
首先对文本模型可能发生的倾斜情况进行分类,在此共分为三大类:空间单倾斜、平面单倾斜、空间平面双倾斜。以图2(a)所示图像为例,文本点云模型在空间上存在倾斜,同时如图2(b)所示,模型在平面上也存在倾斜,因此模型属于空间平面双倾斜类。图中曲面部分为扭曲文本模型,平面部分为一垂直于Z轴的对照平面,用于观察文本模型在空间中倾斜状况。因此结合分类情况以及文本模型本身特点,将对文本点云模型的倾斜检测分为两步:空间倾斜检测与平面倾斜检测。
3.1 空间倾斜检测
由于本文研究的文档模型是扭曲的,也就是说其所有的点并不落在同一个平面上。因此,需要先选择某一斜切面为切入点,通过它来研究完整文本模型的特征。结合实际情况,选择文本模型左右边界所在的平面为我们所需要的平面。确定平面后,采用曲面边界提取算法采集模型的边界特征点。
点云去噪阶段已获得当前点p的K近邻点集X={x0,x1,…,xk-1},设X的中心点v,可由式(5)计算[9,10]:
建立一过p点、以为平面法向量的平面L。设p=(xp,yp,zp),v=(xv,yv,zv),则平面L的方程表达式由式(6)表示:
其中A=xp-xv,B=yp-yv,C=zp-zv,D可由式(7)计算:
把X中的点投影到L平面上,得到一投影点集X'={x'0,x'1,…,x'k-1},接着在L上建立一以p为原点的坐标系。设αi为向量pxn(n=1,2,…,k-1)与向量px0之间的夹角,若其中有一个角度满足|αi-αi+1|>β,i=1,2,…,k,αk=α1,β是预先设置的一阈值,则视p为边界点。
得到模型的边界特征点集之后,通过限制边界点的X值与Y值得到模型左右边界特征点,如图3所示。
通过鲁棒的方法求得左右边界所在平面的法向量[11]。由式(8)计算平面法向量m的分向量(mx,my,mz):
这里的N是特征点集中的顶点总数,(xi,yi,zi)是第i个特征点的位置坐标,next(i)=(i+1)mod N是点i的下一个顶点序号。取模运算保证了第(N-1)号顶点的后一个顶点是顶点0。这种方法在计算法向量的每一个分量过程中,只需对每一条边使用一次乘法运算,而且不需要做共线测试。
得到m向量后先将其单位化,得一单位法向量m'。接着选取一平行于Z轴的单位向量n(0,0,1),并由式(9)计算向量m'与n的夹角:
计算出夹角后设一阈值D=0.5°,若夹角位于(-D,D)内,则认为模型在空间中无倾斜,否则继续对两个向量进行叉乘运算,得到一新向量即空间旋转所需要的转轴,并使用空间旋转算法对其进行空间旋转。
图4(a)中曲面部分为原始模型,平面为一垂直于Z轴的对照平面,图4(b)为空间校正后模型,黑色线条为上文中所提到的向量m'、n以及它们叉乘后得到的向量。
3.2 平面倾斜检测
经过空间倾斜检测及校正,此时整个文本模型垂直于Z轴。先将文档模型垂直投影到Z=0平面上,投影到此平面上后的模型Z坐标值皆为0,可减少计算量,提高检测精度。
投影后采集投影四条边界的特征点,使用基于最小二乘法的空间线性拟合算法,对模型的四条边界进行线性拟合,分别计算上下两条直线与左右两条直线的斜率,并判定两对倾斜角的差值是否在一个范围(-1°,1°)内。结果可能存在三种情况:
1)若每对倾斜角的差值都在范围内,则对两对边界直线的倾斜角取两轮平均值,这样可以得到一个高精度的倾斜角;
2)若其中一对差值在范围内,另一对差值不在范围内,则取差值在范围内的一对的平均值为倾斜角;
3)若两对边界线斜率均不在,则提示模型不合格。
基于初期采集模型时已经过选择与处理,因此后两种情况较少。
设空间内方向向量为s=(m,n,p)且过(x0,y0,z0)点的直线方程由式(10)表示[12,13]:
当点(xi,yi,zi)不在直线上时,分别记其在x方向、y方向、z方向的误差为(εi2,εi2,εi3)。作为最佳拟合直线,必须同时考虑这三个方向的误差。根据最佳平方逼近原理,最佳直线应满足式(11):
最小。因为各测量点在x方向、y方向、z方向的误差(εi2,εi2,εi3)服从正态分布,所以最佳直线也应满足式(12):
据此我们在约束条件式(11)式(12)下求由离散点(xi,yi,zi),i=1,2,…,N,所确定的最佳直线。
3.3 空间旋转算法
本文使用的是由薛文风[14]提出的空间坐标旋转算法。设一个点通过轴(x0,y0,z0),其方向余弦为(nx,ny,nz)。其中θ为坐标点(x,y,z)绕该轴的旋转角度。则旋转后的点经式(13)计算:
当(x0,y0,z0)=(0,0,0)时,该轴通过原点绕任意轴旋转的变换关系表达式比较长,而且需要浮点数来表示,所以在程序编写时,最好在计算表达式之前先把sinθ和cosθ算出,以提高程序的执行速度。值得注意的是,当进行空间检测得到所需数据后,若存在倾斜需先进行空间倾斜校正,以免干扰平面倾斜角的计算。
4 实验结果
本算法在Visual Studio 2005环境下采用C++语言实现,测试环境为:IntelCoreTM7 cpu;内存8 GB;操作系统为Windows 7的机器上进行。本文先使用三维扫描仪对5本不同厚度的书籍共采集了50个书籍点云模型,其中空间域平面倾斜角皆在(-45°,45°)范围内。所用书籍均为16开普通中文书。接着使用普通摄像头采集了50幅BMP图像,拍摄摄像头像素为500万,图像的获取均在光照均匀的环境下进行,忽略噪声的干扰。
表1将传统的Hough变换法、投影法与本文方法对重度扭曲文本倾斜检测精度进行了对比分析。传统的Hough变换法、投影法与K近邻法总体检测正确率都低于50%,而本文方法对三种情况的正确率都达到95%以上。此处的正确率是指经倾斜校正后视觉上无倾斜的文本图像个数与参加测试的样本个数之比。由实验结果可知传统的二维倾斜校正方法只能对扭曲程度较轻的文本进行有效校正,对于厚度较大、扭曲程度较高的倾斜文本处理能力很差。而本文方法则具有很大的适用范围,对于以上情况均有很高的校正正确率。
用本文算法对选取模型进行倾斜校正,部分实验效果对比图如图5-图7所示。其中图5为扭曲文本空间单倾斜对比图,图6为扭曲文本空间平面双倾斜校正效果对比图,图7为非扭曲文本倾斜校正效果对比图。
5 结语