剑指offer:大恒图像
大恒图像:成立于1991年,专注于视觉部件、视觉系统及互联网医疗相关产品研发、生产和营销的高科技企业。
旗下产品信息:
1.图像采集卡
摄像机等输入的模拟图像信号经过A/D转换,或将数字摄像机的输出信号,通过计算机总线传输到计算机内存或显存,计算机可以对现场采集的图像进行实时处理和存储。
2.数字摄像机
1)传感器:摄像机核心部件(摄像机常用的感光芯片:CCD、CMOS)
-
CCD(电荷耦合器件)三种结构:全帧转移、帧传输、行转移
-
CMOS(互补金属氧化物半导体):除感光部分外,还有放大器和读出电路部分,整个CMOS传感器还集成了寻址电路、放大器和A/D。
2)图像采集方式
图像采集方式主要是指:什么时候开始采集?、 曝光的长度?、 如何结束采集?
- 开始采集通常有软件采集和外部硬件信号触发采集二种。软件采集是计算机向摄像机发出开始采集命令,可以是单帧采集或多帧连续采集;外触发采集是通过外部触发信号启动采集,信号可以是上升沿或下降沿触发或电平触发。
- 曝光时间,软件命令采集是通过对寄存器编程设置实现不同长度的曝光;外触发采集的沿触发方式也是通过寄存器编程设置实现,电平触发则是用触发的电平的持续时间控制的。
- 采集结束控制主要针对软件采集,单帧采集结束后自动清除采集命令,连续采集要由计算机发出命令清除设置的采集命令。
3)数据输出方式
USB、1394a、1394b、Camera Link和GigE
4)如何选择合适的数字摄像机
- 定义待检目标的最小特征和检测视场,由此确定摄像机的分辨率
- 根据目标运动速度和通过率,确定摄像机的帧率(行频)
3.光源
(1)光源本身的特性,如光源的光谱分布,在被照射面上的亮度分布,光源使用中的温度特性和寿命等。
(2)光源与被照射物体的相互作用。光源照射在物体上,会发生反射、吸收和透射三种相互作用,不同材质的物体,三种作用产生的现象不同,同一种物体上缺陷部分和其他部分,三种作用产生的现象也不同。如在表面检测中,我们可以粗略的把目标上的缺陷分成二类:
- 一类是几何形状缺陷,诸如:凹坑、划痕、裂纹、毛刺、凸起、擦伤、碰伤等
- 另一类是表面强度(或密度)缺陷,如:氧化、生锈、污点、污迹等
前者使表面反射发生变化,后者使表面反射和吸收都发生变化。只有仔细研究光源与被照物相互作用的特点,才能确定光源及照明方式。物体的色彩是光吸收的另一个例子。全波段的白光照射到物体表面,一些波长的光被物体表面吸收,一些波长的光被表面反射,物体呈现出与反射光相同频谱的颜色。利用这个道理,我们可以使用黑白摄像机,选择特定波长的光源,突出物体表面待检测部分与其它部分的灰度差,实现可靠、稳定的检测。
(3)光源的结构。光源可以做成各种形状结构,每种形状发出光的特点不同。如:漫反射光,可以在目标平面上获得均匀的光照;直射光,通过反射和产生阴影显示边缘和表面结构,但光源或目标的移动和倾斜都会明显的影响图像亮度和对比度。另外,光源可以放在被照物体的上方或者下方,可以有各种角度和高度,通过不同形状和照明方式的组合,利用诸如产生阴影、产生高亮区域或无反射区域的方法,使目标上的感兴趣区域与其它区域有尽可能大的区别。
设计光源系统,最终目的是:最大程度地增强感兴趣特征的对比度,抑制和减少目标上其它部分的影响,抑制外部环境的影响。
自我介绍:
1.简单介绍学历和专业:
2.工作/项目经验(重点):
- 总结下工作中主要负责的几点及取得的成绩
- 展开来有条理性的加以说明,但一定要与应聘岗位相关联。
3.自我评价:
- 优点:抗压能力、自学能力、解决问题的能力(提问-分析-搜索-提取-重构-内化-核实-更新)
- 缺点:眼高手低、执行力有待加强
- 做人做事:做人——3种方式;做事:预演复盘。
- 对于人生的思考:随心而为,思维重要论。
技巧:
1.时间把控
自我介绍最好控制在2-3分钟。就像你看电视广告一样,把自我介绍当广告来设计,必须在有限的时间勾起观看者的购买欲望。
2.内容把控
注意介绍自己最擅长的一定要与应聘的岗位密切相关,主要是围绕专业特长来介绍。除专业特长以外的特长,如果特别突出可以介绍,但要点到为止。
3.有清晰的职业逻辑关系
职业有三期:学习期、成长期、成熟期。职场学习期和成长期,简单介绍,但不能省略,因为学习期标志着你做事的方法,成长期代表着专业提升和管理提升的方式。重点讲成熟期,成熟期能否做成事情,做成了什么事情,在什么环境下做成的,都代表着一个职场人的智慧和职业成熟度。而这三期的职业转换要有明确的逻辑关系。自我介绍-面试问题现在-将来-过去包括工作模式、优点、技能,突出成就、专业知识、学术背景等。但有一点必须紧记:话题所到之处,必须突出自己对该公司做出的贡献,如增加营业额、减低成本、发掘新市场等。
4.表达能力的控制
不管内容如何精彩绝伦,若没有美丽的包装,还是不成的。所以在自我介绍当中,必须留意自己在各方面的表现,尤其是声线。切忌以背诵朗读的口吻介绍自己。最好事前找些朋友作练习对象,尽量令声线听来流畅自然,充满自信。 身体语言也是重要的一环,尤其是眼神接触。这不但令听众的专心,也可表现自信。曾有一项报告指出,日常的沟通,非语言性的占了70%。所以,若想面试成功,便应紧记注意一下你的身体语言。
Q&A
一、C++
1.谈谈你对static|const的理解?
- const就是只读的意思,只在声明中使用;
- static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
2.你是如何理解继承、多态和组合?请举例说明它们的应用。
- 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程。————代码重用
- 多态:多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。—————接口重用
- 组合:描述整体与部分的关系,一个对象是另一个对象的组成部分。
3.你是如何理解堆和堆栈?请分别说明在那些情况下,对象实例处于堆或堆栈中?
-
栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
-
堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
4.你是如何理解进程和线程?如何实现线程间同步和进程间通信的问题?
- 进程的用户空间是相互独立的,一般是不能相互访问的,进程间通信讲的就是怎样在两个程序之间传递信息。——分布
- 同一进程下的多个线程可以共享空间资源,多线程间就存在同步的问题。
5.如何理解MFC消息机制?谈谈对DLL和COM的理解。
-
根据消息的来源而定,1.鼠标键盘系统内部控制消息等原生消息,是由操作系统捕获,然后送到当前线程的消息队列中处理,经过线程函数翻译,再执行相应函数,或再分发给窗口。2.通过SendMessage,SendThreadMessage等发送的消息,直接进入线程的消息队列,然后处理,3通过SendMessage发送到窗口的消息,直接调用窗口的消息处理函数,不经过线程。
-
在多重继承上dll满足不了同名问题,而com是可以;从本质上说,COM跟DLL并没有什么区别,它提供一系列的接口(Interface)给开发者,并且在被调用时只在内存中保留一份拷贝。不同的是,COM的组织结构跟DLL是不一样的。COM试图提供给开发者一个清晰的库结构。我们知道,DLL其实就是一些函数的组合,更进一步说,如果我们导出的DLL是一个类,那么它也就是一个类结构。这种层次结构是模糊的。COM要求每一个导出类必须继承一个接口类。也就是说,我们要导出一个具有一定功能的类(比如说算术类Math),我们必须定义它的接口(InterfaceOfMath)。
二、Linux
1.描述linux的开机到登陆界面的启动过程
- 开机BIOS自检
- MBR引导
- grub引导菜单
- 加载内核kernel
- 启动init进程
- 读取inittab文件,执行rc.sysinit,rc等脚本 * 启动mingetty,进入系统登陆界面
- 描述linux下软链接和硬链接的区别。
2.linux shell中单引号和双引号或不加引号的区别
3.linux运行级别0-6
- 0 为停机,机器关闭。
- 1 为单用户模式,就像Win9x下的安全模式类似。
- 2 为多用户模式,但是没有NFS支持。
- 3 为完整的多用户模式,是标准的运行级。
- 4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
- 5 就是X11,进到X Window系统了。
- 6 为重启,运行init 6机器就会重启。
4.描述linux下文件删除的原理
Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。
5.描述linux下软链接和硬链接的区别
- 软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。
- 硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode
三、图像处理与机器视觉的理论基础和算法知识
1.机器视觉系统一般由哪几部分组成?试详细论述之。
- 图像获取:是将被检测物体的可视化图像和内在特征转换成能被计算机处理的一系列数据。该部分主要包括,照明系统、图像聚焦光学系统、图像敏感元件(主要是CCD和CMOS)采集物体影像。
- 图像处理和识别:视觉信息的处理主要包括滤波去噪、图像增强、平滑、边缘锐化、分割、图像识别与理解等内容。经过图像处理后,图像的质量得到提高,既改善了图像的视觉效果又便于计算机对图像进行分析、处理和识别。
- 输出显示和控制:主要是将分析结果输出到显示器或控制机构等输出设备
2.图像灰度变换主要有哪几种形式?各自的特点和作用是什么?
- 全域线性变换,在曝光不足或过度的情况下,图像灰度可能局限在一个很小的范围内。这时在显示器上看到的将是一个模糊不清、似乎没有灰度层次的图像。用一个线性单值函数,对帧内的每一个像素做线性扩展,将有效的改善图像的视觉效果。
- 分段线性变换:将灰度区间分成两段乃至多段分别做线性变换。分段线性变换的优点是可以根据用户的需要,拉伸特征物体的灰度细节,相对抑制不感兴趣的灰度级。
- 非线性变换:可以实现图像灰度的非线性变换,例如,对数变换,当希望对图像的低灰度区有较大的扩展而高灰度区压缩时,可以采用此变换。它能使图像灰度的分布均匀,与人的视觉特性相匹配。
3.图像特征提取的原则是什么?
- 可靠性,同类的图像其特征值比较接近;
- 各异性:不同类别的图像其特征提取应具有明显的差异;
- 独立性:各个特征量之间应该彼此不相关;
- 精简性:应该具有量少的特征量。
4.论述图像识别的基本概念。常见的判别函数有哪些?
- 指通过对图像中各种不同的物体特征进行定量化描述之后,将所期望获得的目标物进行提取,并且对所提取的目标物进行一定的定量分析。
- 图像识别是人工智能的一个重要领域。利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。常见的判别函数有:线性判别函数、最小距离判别函数、最近领域判别函数、非线性判别函数。
5.运动目标检测概述
6.视觉跟踪综述
四、OpenCV
1.CV
Image processing and vision algorithm
2.HighGUI
GUI, Image and video I/O
3.CXCORE
basic structures and algorithms, XML support, drawing functions.
The Truth
一、简单的自我介绍
关于课题、关于简历上写的内容、做过的与机器视觉有关的项目
二、笔试
1.简单的C、C++阅读程序题
2.两道问答题:
- sendmessage 和 postmessage 区别
- MFC中模块对话框和非模块对话框
3.关于机器视觉应用的一段翻译
参考文献:
6.阮一峰的网络日志进程与线程的一个简单解释