如何将图片摆正

勤奋的小游侠 2009-05-23 02:01:02
有一张bmp图片,内容是一叠倾斜的书,如何将图片按书的水平线摆平?
书与书之间的边界不明显,断断续续的,与背景的边界也不太明显,整个画面都是比较模糊的,但人眼是很容易识别出的。
因为自己是第一次学习图像处理方面的编程,希望各位高手给个算法或者思路指导一下。
...全文
949 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
勤奋的小游侠 2009-06-23
  • 打赏
  • 举报
回复
结帖了,我的问题相对我来说还是较复杂了点,除了角度问题还有二值化问题,而这两个问题只是预处理之前的步骤.
现在大概有个方向了:二值化先尝试局部二值化算法,尽量保存好边界,再用霍夫变换查找直线.差不多看了一个月的资料,粗粗写了几个检测程序,效果不太好.先做那一个算法和步骤有点乱,现在定下心来按这个方向做.谢谢各位了.分不多.
勤奋的小游侠 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zhangyan_wt 的回复:]
我的建议是,彩色图像灰度化,水平方向边缘检测,二值化,连通域提取,选择宽高比大的连通域进行直线拟和,找出需要旋转的角度,最后把原图旋转这个角度。

无论怎样算法二值化都应该是比较好的选择,不要怕丢失信息,这个过程只是帮你找这个角度,最后还是要在原图的基础上旋转的。
[/Quote]
灰度化,二值化都做了,得到的图形大概如下:
---
---
- -- --
-
----
横线代表书脊的线, 即原本的线断成了线段,且不长.
我现在还不清楚水平方向边缘检测和直线拟和是如何实现,向请教你
勤奋的小游侠 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jiangsheng 的回复:]
是啊
如果你的图像是基本圆的,Hough变换是找不出旋转角度的。
[/Quote]
图像不是圆的,可以说是一排的平行线吧.只是边界不清
zhangyan_wt 2009-06-11
  • 打赏
  • 举报
回复
我的建议是,彩色图像灰度化,水平方向边缘检测,二值化,连通域提取,选择宽高比大的连通域进行直线拟和,找出需要旋转的角度,最后把原图旋转这个角度。

无论怎样算法二值化都应该是比较好的选择,不要怕丢失信息,这个过程只是帮你找这个角度,最后还是要在原图的基础上旋转的。
勤奋的小游侠 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qujun2004 的回复:]
引用 10 楼 lovesmiles 的回复:
看过了霍夫变换,可能和我的问题不同,霍夫变换是只有二色的才可以是吗?


很久以前研究过Hough变换,现在有点忘记了。可以把你的图片二值化,再应用Hough变换。

个人感觉LZ所说的应用场合要求比较高的,似乎是要求根据图像内容来对图像进行处理。这样就没法指定一个具体的旋转角度,
而是要每次得到图像后根据图像的内容来进行旋转。简单地应用Hough变换肯定不够,Hough变换是可以找到…
[/Quote]
你说得很对,我做的题目对我来说真的很难.我提的问题只是其中的一部份.一叠书脊确实有很多条平行线,而且是24位的图片,经过其它的变换转成二色图会失去很多信息.边界也模糊.
zhangyan_wt 2009-06-11
  • 打赏
  • 举报
回复
如果是这样的图像的话,在这个基础上做Hough变换好一些,hough变换不怕线断。

我的办法要求直线连续,如果能够调整二值化算法使得直线连续的话,可以在这个基础上搜索连通域,找出其中一个宽很大但高很小的连通域,就是这条直线了,把这个连通域内的点的坐标(x,y)都收集起来,按照y=kx+b的方程进行最小二乘法拟和,算法网上查吧,求出来的k就是斜率了。然后按照这个角度旋转就好了。
kwovex 2009-06-04
  • 打赏
  • 举报
回复
学习
wrhwww 2009-06-01
  • 打赏
  • 举报
回复
先边缘检测,然后用Hough变换得到旋转角度..然后旋转..
蒋晟 2009-06-01
  • 打赏
  • 举报
回复
是啊
如果你的图像是基本圆的,Hough变换是找不出旋转角度的。
Seth 2009-05-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lovesmiles 的回复:]
看过了霍夫变换,可能和我的问题不同,霍夫变换是只有二色的才可以是吗?
[/Quote]

很久以前研究过Hough变换,现在有点忘记了。可以把你的图片二值化,再应用Hough变换。

个人感觉LZ所说的应用场合要求比较高的,似乎是要求根据图像内容来对图像进行处理。这样就没法指定一个具体的旋转角度,
而是要每次得到图像后根据图像的内容来进行旋转。简单地应用Hough变换肯定不够,Hough变换是可以找到直线,但如果图像
中含有一条以上的直线的话,Hough变换怎么知道以哪条直线为准呢。
勤奋的小游侠 2009-05-31
  • 打赏
  • 举报
回复
看过了霍夫变换,可能和我的问题不同,霍夫变换是只有二色的才可以是吗?
勤奋的小游侠 2009-05-30
  • 打赏
  • 举报
回复
谢谢,霍夫变换学习中...
梅文海 2009-05-25
  • 打赏
  • 举报
回复
如果前景和背景能够比较清楚的分开,那么直接用直线拟合即可,如果不是太明显,那么还是用霍夫变换,这样直线就全部出来了
最后做一个旋转就搞定了
勤奋的小游侠 2009-05-23
  • 打赏
  • 举报
回复
谢谢1楼和2楼的建议,我先明白"霍夫变换"的原理再上来
勤奋的小游侠 2009-05-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aaaa3105563 的回复:]
帮顶··
[/Quote]谢谢
勤奋的小游侠 2009-05-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xsc2001 的回复:]
自己直接把图象旋转一下不就行了,把各个象素值按倾斜角度沿X轴旋转就行了。
[/Quote]
是这样的,人眼手工操作很容易实现,问题是想实现计算机自己识别这种情况.因为并不是处理一张,还有类似的图片要处理.
danxuezx 2009-05-23
  • 打赏
  • 举报
回复
http://download.csdn.net/source/1159570
蒋晟 2009-05-23
  • 打赏
  • 举报
回复
在CSDN搜索"霍夫变换"或者“Hough Transform”
aaaa3105563 2009-05-23
  • 打赏
  • 举报
回复
帮顶··
xsc2001 2009-05-23
  • 打赏
  • 举报
回复
自己直接把图象旋转一下不就行了,把各个象素值按倾斜角度沿X轴旋转就行了。

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧