引入

近期看到2015年数学建模A题太阳影子定位中的第四问,需要根据附件中视频里的直杆的太阳影子的变化确定拍摄地点。其实确定拍摄地点这个问题并不是十分困难,因为有前三问的铺垫,我们已经得出了太阳影子长度和观测地点的经纬度、时间、直杆高度四个参数之间的关系;所以我们只要知道了直杆太阳影子的长度就可以通过问题2中的优化模型求解出拍摄地点的经纬度了。但是本题难就难在,如何确定视频中直杆的太阳影子的长度?
----

求解

首先想到的是:将视频处理后,能否通过手动标示像素点来确定直杆的太阳影子的长度,因为可以手动标示的工具较多,如AE中的动态跟踪PS中的像素点提取Matlab里的ginput。虽然可以有效的解决直杆的太阳影子长度的测量,但是笔者认为这种人工手动测量的方法的误差较高,且逐个进行测量特别麻烦,且误差可能不够大。不符合笔者比较懒得性格,所以在这里给出自己的一种解法

1.视频的逐分提取

这部分比较简单。

2图像的预处理

图像二值化处理。

3.通过Hough变换

Hough变换是图像处理中从图像识别几何形状的方法。它利用点与线的对偶性,将原始图像空间的给定曲线通过曲线表达形式变为Hough参数空间中的一个点。所以原始图像给定曲线的检测问题就转化为在Hough参数空间的峰值问题,即检测整体特性转化为检测局部特性[7]。
欧式空间中一条直线上的点在Hough参数空间中为一条正弦曲线;欧式空间中同一条直线上的多个点在Hough参数空间中为一个正弦曲线簇且曲线簇相交于一点,称此点为峰值点。而Hough参数空间下的峰值点,则对应了欧式空间下的一条直线。
如图所示,

直线l方程为:
\[ xcosθ+ysinθ=ρ \]
在欧式空间中数据点的表示为(x,y),而在Hough参数空间内表示为(ρ,θ),P点即为Hough参数空间中的峰值点,它所表示的含义即为欧式空间的l直线。
下面给出Hough变换的算法:
(1)初始并网格化Hough参数空间
(2)对于欧氏空间中的每个(x,y)执行步骤3;
(3)for θ=-90° to 180°,执行ρ=xcosθ+ysinθ与H(ρ,θ)=H(ρ,θ)+1
(4)设立阈值,寻找参数空间的峰值点。参数空间每一个峰值点对应欧式空间中一条直线。

其中每一个网格颜色代表能量高低,颜色越亮表明能量越高,反之能量越低。能量越高的地方,即为所需求解的峰值点。得到峰值点后,通过编程反变换到原图像的RGB值空间中,即可识别出峰值点所对应的直线;直杆影子图像所检测出的直线如图所示:

已知直杆的高度\(h_真\)为2m,通过Hough变换得到了直杆的像素高度\(h_像\)为664.9218像素,同样直杆影子长度\(L_真\)通过Hough变换得到的直杆影子像素长度\(L_像\)为一组像素数据,根据比例关系:
\[\frac{L_真}{L_像}=\frac{h_真}{h_像}\]可以计算出直杆影子的真实长度。

利用Hough变换识别图像中的直线的更多相关文章

  1. Matlab实现Hough变换检测图像中的直线 分类: 图像处理 2014-06-14 22:07 641人阅读 评论(0) 收藏

    Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...

  2. Matlab实现Hough变换检測图像中的直线

    Hough变换的原理: 将图像从图像空间变换至參数空间.变换公式例如以下: 变换以后,图像空间与參数空间存在下面关系: 图像空间中的一点在參数空间是一条曲线,而图像空间共线的各点相应于參数空间交于一点 ...

  3. 利用百度文字识别API识别图像中的文字

      本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...

  4. Hough变换在opencv中的应用

    霍夫曼变换(Hough Transform)的原理 霍夫曼变换是一种可以检测出某种特殊形状的算法,OpenCV中用霍夫曼变换来检测出图像中的直线.椭圆和其他几何图形.由它改进的算法,可以用来检测任何形 ...

  5. Zybo智能小车识别图像中的文字

    智能小车识别图像中的文字 [TOC] 运行平台 这次的内容是基于Xilinx公司的Zybo开发板以及其配套的Zrobot套件开发 Zybo上面的sd卡搭载了Ubuntu12.04LTS的linux版本 ...

  6. hough变换是如何检测出直线和圆的?

    (I)直线篇 1 直线是如何表示的?对于平面中的一条直线,在笛卡尔坐标系中,常见的有点斜式,两点式两种表示方法.然而在hough变换中,考虑的是另外一种表示方式:使用(r,theta)来表示一条直线. ...

  7. Python 利用pytesser模块识别图像文字

    使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the ...

  8. Android调用OCR识别图像中的文字

    // CharacterExtractor.java // Copyright (c) 2010 William Whitney // All rights reserved. // This sof ...

  9. hough变换检测直线和圆

    图像测量和机器视觉作业: 提取图像中的直线和点的位置坐标,将其按一定顺序编码存入一文本文件,并在原图像上叠加显示出来. 下午实验了一下: 程序环境:vs2013(活动平台为x64)+opencv3.1 ...

随机推荐

  1. HDU 1850 Being a Good Boy in Spring Festival(博弈·Nim游戏)

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  2. mybatis进行分页,使用limit

    这里记录两个思路: 首先是写一个不能执行的代码. <select id="query" parameterType="map" resultType=&q ...

  3. linux命令学习笔记(47):iostat命令

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...

  4. linux 进程学习笔记-暂停进程

    <!--[if !supportLists]-->Ÿ <!--[endif]-->暂停进程 int pause() 其会挂起当前进程直到有信号来唤醒或者进程被结束. 随便提一下 ...

  5. CodeForces - 1000E :We Need More Bosses(无向图缩点+树的直径)

    Your friend is developing a computer game. He has already decided how the game world should look lik ...

  6. 「UVA557」 Burger(概率

    本题征求翻译.如果你能提供翻译或者题意简述,请 提交翻译 ,感谢你的贡献. 题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 复制 3 6 10 256 输出样例# ...

  7. CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现

    CRC16算法系列文章: CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CR ...

  8. BZOJ4408:[FJOI2016]神秘数

    浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...

  9. 人工智能实践:linux 和 python 基础简介

    linux下的目录 绝对路径:是以根目录(" / ")为起点的完整路径,以你所要到的目录为终点. 相对路径:是你当前的目录(" .")为起点的路径,以你所要到的 ...

  10. iview之select选择框选中内容后有空格的问题

    导致原因: option组件格式化造成的.此处</Option>在另一行,只要和输出内容一行,就不会有空格了. <Select :label-in-value="true& ...