分类目录归档:不是技术

opencv for rectangle image recognition

我决定启动这项在心中停留了好几年的想法。

辅助性的输出应当是:熟悉opencv的开发以及图像检索的各种算法的优劣。熟悉Python。熟悉Object-C的开发。

目标先不要定太高,先从一个有限的标准图片库进行检索开始:

  • 库里面有300~2000张长方形的彩色图片。
  • 检索的图片源来自互联网或者相机。
  • 待检索的图片中可能包含有长方形区域,匹配库中的某一图片(的主要区域,边缘部分有可能不一致,主要区域上可能被污损)。括号内的难度递增。
  • 待检索图片主要区域可能有色偏。
  • 待检索图片主要区域可能有沿曲面的变形。
  • 待检索图片主要区域可能有轻微的平面几何变形。
  • 检索结果可以包含一个小集合3~10个库内图片,并附带其匹配得分。

继续阅读

怎样把pdf文件拆分?

真是一个好问题。

于是找各种pdf splitter之类的方案。

才想起来自己多年之前就有了答案。利用pdf打印机,使用标准的PDF阅读器的打印功能,将目前页打印到新的pdf文件中去……

COBOL

看了几天COBOL,也在仿真器上面编译运行过一些代码。

 

一些体会,

这确实是给商业用的语言。我想起来POS上的应用开发,实际上也是使用字符串为基础的数字去进行数学运算。这个COBOL的本质是一样的。保存一个数字型数据的根本,就是一个字符串,同样的空间,如果是在结构体中,可以被一个字符串的内容所覆盖。

继续阅读

TIOBE排名

整理技术资料时发现16年初打印的TIOBE编程语言排行,于是到tiobe.com上看看最新的并打印下来对比着看。

前五的位置算是雷打不动的JCCCP,Java-C-C++-C#-Python。有些出乎我意料的是,C#相当的坚挺,记得去年初的资料上我打了个问号,有点怀疑它后续会不会有足够的市场使用率。

恰好相反,市占率不降反升。PHP其实也没有变化,只是6~7之间浮动。得益于大量形式的开源CMS的存在吧。

JavaScript,作为前端重要的存在,一直停留在7~8的位置有点意外。需要重新审视JS真正的贡献了。

有点意外的是R,从另外也反映了大数据以及数据分析数据可视化的前景大好。放两年前,这语言是足够的小众啊。

Scratch进入20,这是编程入门的好语言,比起以前的Basic、Logo和Pascal当然要有吸引力了。

Objective-C 我估计就是一步步地衰落了。swift倒是有投入的可能。

Go则稳定在前20。

Erlang虽然经常有不错的应用,但是场景实在是偏,所以在30多徘徊。

如果不想做前五的语言,我的建议是R、Swift和Go。

 

第一人称视觉遥控车备忘

目前遥控车加摄像头的有,但多为低端的手机+遥控车模式。也有使用VR眼镜+遥控车+摄像头+专用遥控器的产品。

我们的特点在于,遥控车为专业车模(比如蚊车),这种价格偏高,有专业的受众群。

摄像头应装入车体内,透过挡风玻璃摄录前方影像。

摄像头与VR眼镜为一套电子系统,原车与遥控器为另一套电子系统。这样双系统的做法成本略高,但可充分利用原来这两者的成熟度。

第一人称视觉之后,专业赛道效果就变得更重要,整天在客厅里面兜只令效果变得低端高端分不清。

追求的原则如下:

  • 贴近于真实驾车的视觉反馈
  • 贴近于真实驾车的操作反馈
  • 系统稳定
  • 成本合理
  • 方案易于对现有车模进行改造

以目前看来,一些问题:

  • 后视镜是否需要,之前是上帝视觉玩的遥控车,现在变成第一人称视觉,后视镜在驾车时就变得重要了。我倾向于使用光学后视镜,但如此小的尺寸下要做到清晰度高的反光镜片成本不低,需考虑细节方案。这目前还是一个次要的问题。鉴于一些赛车并不装配后视镜而在玩具车上设计有效后视镜的成本过高,考虑不予增加。
  • 马达对摄像头系统有所干扰。这个需要两套系统之间使用适当的信号屏蔽手段,但需避免降低各自系统的信号传输能力。
  • 车上的两套系统采用同一个电池。可避免一个设备两套电源系统导致电量的木桶效应。
  • 电池可独立替换。
  • 一键式开关遥控车。
  • 考虑电池贴近汽车底部的无线充电方案,可将充电底盘设计成赛道边上的车库。
  • 视频是使用模拟还是数字,效果 > 成本。
  • 需考虑信号传输距离,图像信号和控制信号的传输距离应相若。另外,信号的穿透能力是否有所考虑?
  • 双目摄像头如果效果并不能比单摄像头更优,则还是先用单摄像头。
  • 考虑已有蚊车的改造方案。
  • 增加透明的挡风玻璃/塑料片
  • 已有车模只考虑其自身的可靠性,对于新增的摄像头模块,需要增加保护机制。电动玩具车的碰撞激烈,容易造成损坏。
  • 目前马达电池发热严重,需考虑降低电池内阻或者增大马达阻力。

关于赛道

  • 目前的蚊车赛道也是可拼接的,但都是按套销售,可考虑零件进一步零件化和标准化。另外,边栏可增加景物接口,以方便增强第一人称视觉下的赛车体验。

角色名称的影响范围

之前所说的,就是用NLP的方式提取了角色名称的文本及位置。

我想用聚类来分析,然后这是一维的数据,发现聚类还真是略有尴尬。

不过不要紧,算法就是各种用途都可以。

聚类之后,得出中心点,聚类范围,聚类点数,这就是这个一维空间上角色的影响范围了。

得到一个角色的影响范围,再得到另一个角色的影响范围,我就可以再设计一个公式去计算这两个角色的亲密度/相关度。

这个数据有什么作用?至少能帮助编剧或者演员演不到主角的时候选一个合适的配角以保障出场率吧。

JSPHP NLP工作流

这个JSPHP NLP工作流的标题有点拗口,但目前仍难以作为独立服务发布,后面再取一个好听的名字吧。

高大上一点就是,我考虑的是如何利用有限的web空间/运算资源,实现规模略大的运算

我去年买了这个无限量存储的PHP web hosting,放弃了用了好几年的VPS。原因是VPS被攻击风险越来越大,用于VPN效果又不好,而多放几个网站存储上就有点累了。

但是纯粹的host缺点也是很明显的,我不能再在PHP下面自由添加一些扩展库了,更多的时候,只能使用纯粹的PHP进行运算。另外,单个PHP页面运算资源也是有限的,超时、内存限制等都不能自由修改。

不过是缺点也是挑战,于是当我考虑用这个host来进行一些NLP运算和统计工作的时候,我不得不考虑将运算过程进一步分解成若干个独立的小任务,这些小任务运算时间和资源都有一定限制。将这些小任务串联起来的工作,就落在前端的javascript上。

问题来了,为什么不在javascript上完成一切?

继续阅读

Notepad++里面的正则

其实用起来还好,唯一需要注意的是对GB*编码的支持不力,最好转成UTF-8再进行操作。

跟以前整理的UE里面的正则是类似的。

学到一些新的技能,因为在文本分词统计中发现一些名词出来的数量太少,于是找了找原文,发现原文里面既有简体也有繁体,另外还有错字别字。哪吒写成那吒之类。于是数据统计出来便失真了。

但不细看原文很难知道它哪里写错了,于是要用正则来检索。

比如我搜“八臂哪吒”要比“八臂”要少很多,但是后者肯定不是一个常用的词语,如果不在原文中查找具体位置中出现的问题,就要这么搜:“八臂(?!哪吒)”

这样就很快定位出不一样的八臂所在。