您当前位置: 首页 » 音视频_图像相关 »

图像处理

分类目录归档: 图像处理

2022计划定一下

虽然我一直都是将自身技能分为软技能和硬技能,并且按照一定规则来进行计划,不过还是有必要重新考虑一下侧重点,这么几年下年,折腾来折腾去,东搞搞西弄弄,一直没有很好的执行一个系统性或者专业化的自身知识技能体系。但维度有一点很明确的是,自身工作方向一定要和自己的目标知识建设是存在较大关联或重合的,这方面做的还是不错,所以大部分时间都没有跑题跑的太偏了。

硬技能

  • 学历、院校、就职单位
    • 可遇不可求,有些事情已经定型了不行了。
  • 性格
    • 江山难改本性难移,只能说尽量保持克制和改善。不忘初心也很重要
  • 为人处世
    • 最讨厌乌烟瘴气、帮派和小圈子,除非有必要,小圈子是一个不错的选择,但是小圈子很容易会和前两者有很强的关联性。还是需要一定程度上的假装合群
    • 站队,不站队远比站队还严重。一直以来都不站队,或者抗拒站队,在一个比较强调控制的团队或组织里面,很容易被弄,最后过得也很惨,不过也从侧面反映了,这种团队和组织没必要长待,长久不了;事实却是证明了,不管多少年过去,这种组织或机构要么都死掉了,要么勉强维持着现状。
    • 有时候少一点有意而为,很多时候明知道这样做的结果会如何。但自己偏偏不信邪,并且带着好奇心的故意做一些事情,反过来观察大家的反应,尽管确实很有效果,也相对客观准确的能观察到信息,但实际上不太理想,容易变成掘地自焚。
  • 管理 & 洞察
    • 尽管不喜欢也不想做管理岗位,也不愿意去做。主要还是不愿意和人打交道,不想去搞那些麻烦的人和事,也不想承当责任。
    • 但事与愿违,年纪上去了,就该适当的考虑扩宽自身的路子。所以管理岗的一些同事,他们的行为风格是一个较好的学习习惯,和观察机会。透过他们可以间接学习一些成与败的经验。
    • 从小到大洞察能力是不需要做任何评价的,这一个点是先天有优势,但还需要注意一下,不能让自身主观兴趣过多的去主导洞察的目标和信息的获取。先收集信息,后整理和分类。然后适当的对洞察结果做出相应,稳优先,切莫太急躁,因为现在认为干扰信息也挺多的。

软技能

  • 知识深度
    • 这里需要明确,这里提到的知识深度不同于公司层面,因为公司层面更多是通过所谓的知识深度来淘汰人的一个借口罢了。
    • 这里更多是结合现阶段自身岗位情况,和未来目标可达岗位情况去指定的知识深度学习计划
      • 编解码
        • 目标:<了解>编码原理,能够通过码流的一些现象来判断大致的问题
        • 知识范围(粗略,待二次细化):
          • <了解> x264预处理过程
          • <了解> x264图像分割的过程(预测、宏块划分)
          • <了解> x264熵编码特点(非了解算法内部)
          • <选择了解> x264 码控等相关模块
        • check point(2-3年完成):
          • 产出工具或matlab脚本,演示预处理过程
          • 产出工具,可视化预测、宏块信息(先帧内,后帧间)
  • 知识广度
    • 这里需要明确,这里提到的知识深度不同于公司层面,因为公司层面更多是通过所谓的知识广度来淘汰人的一个借口罢了。
    • 这里更多是结合现阶段自身岗位情况,和未来目标可达岗位情况去指定的知识广度学习计划
      • 策略器
      • 目标:搞清楚现有的一些策略器,对媒体“流畅”和“质量”的影响有哪些,如何做到的。
      • 知识范围:
        • <了解> 采集 <-> 前处理 策略通路
        • <了解> 前处理 <-> 编码 策略通路
        • <了解> 编码 <-> 编码 策略通路
        • <了解> 编码 <-> 网络 策略通路
        • <了解> 总控 <-> 各子控 策略通路
      • check point(1-2年把大致流程搞清楚):
        • 产出详细图(正在做)

留意几类人

  • 没自知之明,自以为是;关系不便搞僵,不过距离要保持住
  • 自私的人,这些人靠利益维系
  • 小圈子,小帮派。凡是”小“这个东西就很成问题
  • 虚的人
  • 看似很好打交道,其实很难的人

【MacOSX、iOS、跨平台编译】在跨平台编译时MacOSX Serria/XCode是我遇到bug最多的平台

最近被安排来搞定android、ios、mac、windows下的webrtc、ffmpeg和x264的编译问题。

除了由于webrtc配置工程的问题在windows下我自己的搭建环境无法使用,最终求助于之前使用的虚拟机环境以外,android下的webrtc都比较顺利,同样也是编译anroid环境的和windows环境的ffmpeg,相对来说也是比较顺畅(虽然还是出现了一些坎坷)。

但在Mac环境下编译webrtc、ffmpeg和x264就没有那么幸运了。简直就是人间地狱,首先说明一下,这个Mac机原先是有其他开发者在上面编译成功过这三个工程的,到我之后就开始出现了一大堆问题(当然也有可能我用的是用户新帐号的缘故)。

 

人间地狱的开始

  • 先说一说编译webrtc遇到的坑爹问题。由于webrtc编译环境我们只输出静态库,并不输出一个framework或者app,所以并不需要关心太多app层面的问题(如证书相关)。虽知道在webrtc的gyp检查项目中会对证书冲突做检查,由于机器中存在多个证书,导致gyp阶段无法生成正确的编译配置参数。导致折腾了一周,最后才发现和证书有关。虽然这个问题和gyp有一定的关系,但也只是我对mac上编译和交叉编译的被坑的起点。

 

  • 接着是x264和ffmpeg编译时,由于给我的工程之前都是能够成功编译的,现如今拿过来,除了Mac平台可以通过以外,真机和模拟器都不行。折腾来折腾去几天,最后发现是clang去找依赖的时候找错了,找了mac的依赖环境,而不是去找iphoneos的依赖,然后怎么调都没用。很是坑爹,就拿网上的现成脚本来跑也是不行。

最后去查config.log,发现一堆错误,其中ffmpeg的错误还有一个叫做gas-preprocessor.pl的执行错误,由于是通过git直接从网上拿下来的脚本,在没有任何修改的情况下,通过sftp发到mac里面,给了执行权限之后通过命令行直接执行一点问题都没有,但通过configure执行时就一直报没有权限的错,怎么也想不明白;后来试着用curl拿文件,居然通了。当时我就估计如果不是字符集的问题,就是权限标记位的问题。

接着再继续修改关于依赖的问题,仅仅一个交叉编译工具clang,居然在不同的工程里面对同一个路径参数能够出现多种不同的行为,后来还特意看了一下clang是不是GNU开源社区的代码,通过–version看到的内容如下:

Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

可见这个坑是苹果自己的。可能是由于命令行的长度的不同,导致解析命令行的bug?或者其他什么坑爹问题?反正我是不知道了,近几年开始苹果的产品也不见得有多少优势了,正在被一点点拉小差距。如果不是为了混口饭吃,苹果的任何产品我真的不想去碰!

2017-03-20 | | linux-shell, shell, unix编程环境学习, 图像处理, 音视频_图像相关, 音视频编解码

【MacOSX、iOS、跨平台编译】在跨平台编译时MacOSX Serria/XCode是我遇到bug最多的平台已关闭评论

【opencv、颜色存储方式】imread的IMREAD_COLOR方式解码后是BGR方式存储

最近的项目中需要用到将RGB空间转换成HSV空间,转换后一直都感觉不对劲,最后才发现imread中的IMREAD_COLOR参数。

在opencv中的注释中提到IMREAD_COLOR方式是将数据尝试解码成BGR方式存储。

数据解码后,实际在上内存中的数据存储方式确实为BGR,通过imwrite或者imshow时,数据应该会被默认转换成实际的图像格式(没有看代码去考证,因为bmp就是BGR的序列)。

在进行色彩空间转换时,例如:BGR(或RBG) -> HSV时,如果将CV_BGR2HSV和CV_RGB2HSV混淆,最后的结果会引起色彩区域置换。所以就有问题了!

2016-11-30 | | 图像处理, 音视频_图像相关

【opencv、颜色存储方式】imread的IMREAD_COLOR方式解码后是BGR方式存储已关闭评论

【matlab、启动错误】在远程桌面中无法启动matlab问题

最近一直在通过远程桌面的方式使用笔记本,突然发现matlab死活都打不开,出现如下错误

555

 

起初以为安装出问题,后来网上看了下才知道是远程桌面的锅。直接用基本登录,问题解决。

2016-11-22 | | matlab, win, 图像处理, 数据结构 & 算法, 编码技巧, 音视频_图像相关

【matlab、启动错误】在远程桌面中无法启动matlab问题已关闭评论

【matlab、c++、0.499】关于matlab和c++在浮点数转整数的问题 – 四舍五入

当用c/c++做浮点数转换成整数时,处理一般都很简单,丢掉小数位置保留整数部分(没有看过具体的汇编,不清楚如果浮点数表达的位置太大,以至于整数溢出的情况)。

 

而在matlab中,浮点数转换成整数时候,会有四舍五入的规则,即:

uint8(0.499) = 0

uint8(0.5) = 1

 

所以在用matlab时,需要注意到数值转换与c/c++的不同。

2016-07-04 | | matlab, 图像处理, 数据结构 & 算法, 编码技巧, 音视频_图像相关

【matlab、c++、0.499】关于matlab和c++在浮点数转整数的问题 – 四舍五入已关闭评论

【Matlab、安装问题、路径问题、环境问题】安装完matlab后,出现各种命令未定义的情况

首次安装完matlab时,在导入授权后,打开发现一堆警告,各种命令不可用,大致内容如下:

Warning: C:\Program Files\MATLAB\R2012a\toolbox\local\pathdef.m not found.
Toolbox Path Cache is not being used. Type ‘help toolbox_path_cache’ for more info
Undefined function or variable ‘ispc’.
Warning: MATLAB did not appear to successfully set the search path. To recover for this session of MATLAB, type “restoredefaultpath;matlabrc”. To find out how to avoid this warning the next time you start MATLAB, type “docsearch problem path” after recovering for this session.
Warning: Duplicate directory name: C:\Program Files\MATLAB\R2012a\toolbox\local.
Warning: Initializing Handle Graphics failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup,
which should be resolved as soon as possible. Error detected was:
MATLAB:undefinedVarOrClass
Undefined variable “graphics” or class “graphics.internal.initializeMATLABRoot”.
Warning: Initializing Java preferences failed in matlabrc.
This indicates a potentially serious problem in your MATLAB setup,
which should be resolved as soon as possible. Error detected was:
MATLAB:UndefinedFunction
Undefined function ‘usejava’ for input arguments of type ‘char’.
> In matlabrc at 113
Warning: Failed to add default profiler filters.
> In matlabrc at 168
>> rtwintgt -setup
Undefined function ‘rtwintgt’ for input arguments of type ‘char’.

>> help toolbox_path_cache
Undefined function ‘help’ for input arguments of type ‘char’.

 

实际上是安装的时候路径出错,用管理员模式启动,然后执行这个命令:

restoredefaultpath;matlabrc

matlab执行环境变量恢复以后,系统正常可用。

2016-06-07 | | matlab, 图像处理, 数据结构 & 算法, 音视频_图像相关

【Matlab、安装问题、路径问题、环境问题】安装完matlab后,出现各种命令未定义的情况已关闭评论

【图像处理、答题卡、图像识别】图像处理 之 初步分析答题卡上选择题的识别(一)

最近由于项目需要,需要做一个能够自动化阅客观题的东西,则答题方式为纸质答题卡。通过扫描仪或者其他方式,将图像拾取并转换成数字图像。

当然,我本身是拒绝的。实际上,在这一过程中,比较难几点有:

1,拾取后的图像如何做预处理、降噪、灰度化、二值化等问题

2,如何对图像进行抽象(识别)

 

好在目前关于纯粹识别的技术还是有的,所以就假定一个前提;即用户采集转变成的数字图像是噪点较少,且容易做灰度化和二值化的。

于是,在网上找到的一张某地区高考使用的答题卡(下图)。并对该答题卡做一个简单的分析。

 

datika_analyze

 

对该答题卡观察以后,发现答题卡顶部的黑块很可能被用作类似位置同步和校准用。于是得到了下列可能的结论:

1,有1和2字体的两个黑柱子,可能是用于某种标记(或者答题卡传输轨道同步)。

2,其他的小柱子之间的间距是分组,且不等距的。

3,通过结论1和2可得知,有可能能通过这些黑块生成答题卡坐标系,以此来进行图像变换或区域间的距离计算等。

 

通过以上的几个结论可以的出,实际上高考中使用的答题卡在进行识别(或批改)时,除了要找到学生涂黑的选项意外,还需要进一步的判断选项的有效、无效、未作答情况。看来判断答案的有效情况也将会是一个重点和难点。

2016-04-12 | | 图像处理, 思考

【图像处理、答题卡、图像识别】图像处理 之 初步分析答题卡上选择题的识别(一)已关闭评论