C++面试总结
- New、Delete和malloc、free的区别?
- New和Delete自动调用<u>构造函数</u>和<u>析构函数</u>
- 前者是<u>运算符</u>,后者是<u>函数</u>
- New和Delete自动调用构造函数和析构函数
- Delete调用<u>一次</u>析构函数,Delete []调用<u>多次</u>析构函数
- Delete针对new,Delete []针对New []
- 面向对象的三个特征?
- <u>封装</u>:将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。
- <u>继承</u>:指一种事物保留了另一种事物的全部特征,并且具有自身的独有特征。
- <u>多态</u>:当多种事物继承自一种事物时,同一种操作在它们之间表现出不同的行为。
- 对象和类之间的关系?
- 对象:一个实际概念(实物)
- 类:一个抽象概念(类型或属性)
- 类的实例化生成对象,对象的抽象化生成类
- 一个对象可以包含多个类,一个类只能对应一个实例对象
- 动态空间申请使用New和不使用
-
New:
创建需要指针接收,一处初始化,多处使用
销毁需要使用Delete
创建在<u>堆空间</u>,使用广泛可作为参数和返回值
频繁调用不适合New,一边作为全局变量使用
-
不使用New:
栈空间申请内存
频繁调用使用
- static的作用
- 在函数内被定义之后数值保持不变
- 模块内函数外,表示本地全局
- 修饰函数,智能在本地调用,并且使用extern也不能跨文件调用
- 类内定义static,只能在类外初始化,不能在类内初始化
- 不能使用this调用,因为属于当前文件而不是属于当前类
大华图像算法面试总结
- opencv各种滤波?
- 限幅滤波:
设置一个Thred,设本次采样值为V1,上一次采样为V
V1 = abs(V1-V)>Thred ? V:V1
差值大于阈值就等于上一次采样,否则等于自身
- 均值滤波:
平均值代替当前值
void meanFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)
{
memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );
for (int j=1;j<height-1;j++)
{
for (int i=1;i<width-1;i++)
{
smooth [ j*width+i ] = ( corrupted [ (j-1)*width+(i-1) ] +
corrupted [ (j-1)*width+i] +
corrupted [ (j-1)*width+(i+1) ] +
corrupted [ j*width+(i-1) ] + corrupted [ j*width+i] +
corrupted [ j*width+(i+1) ] +
corrupted [ (j+1)*width+(i-1) ] + corrupted [ (j+1)*width+i] +
corrupted [ (j+1)*width+(i+1) ] ) / 9;
}
}
}
- 中值滤波
中位数的值代替当前值
void medianFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)
{
memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );
for (int j=1;j<height-1;j++)
{
for (int i=1;i<width-1;i++)
{
char num[9];
int k = 0;
unsigned char window[9];
for (int jj = j - 1; jj < j + 2; ++jj)
for (int ii = i - 1; ii < i + 2; ++ii)
num[i+j]=corrupted[j+i*width];
sort(num,num+9);//sort函数可以自己重写
smooth[ j*width+i ] = num[4];
}
}
}
- 混合中值滤波
取上下左右拐角点+当前值得到中值V1
取上下左右+中间值得到中值V2
当前值V
V、V1、V2取中值
- 高斯滤波
取高斯模板去滤波
- 卡尔曼滤波
核心是使用正太分布,利用估计的正太分布和确定的正态分布去计算当前的正太分布
- 双边滤波
值域核函数+空间域核函数
[图片上传失败...(image-af0ebc-1538147338568)]
[图片上传失败...(image-ceb5e8-1538147338568)]
[图片上传失败...(image-ce4b77-1538147338568)]
1.SVM推导实现
2.项目改进和遗憾?
3.编写高通滤波器和直方图均衡化?
4.自己论文或者项目使用的算法细节
- Gabor滤波器
就是sin()函数和傅里叶函数的乘积
波长:3, 6
方向:0, 45,90 , 135
空间纵横比:0.5
带宽:高斯方差:2pi
- 灰度共生矩阵
灰度级量化0-15
四个特征:能量、熵、逆方差、相关性
特征可视化:使用5X5,步长为1的掩膜,计算5X5的特征
5.坏点检测算法
类型:亮点、暗点与色点三类
特点:比周围点亮很多的坏点 、比周围点暗很多的坏点、没有提供一个正确的像素值,但是并没有比周围点特别亮或者特别暗的像素
坏点和噪点的区别:噪点不确定性,坏点是固定的,颜色不确定
检测坏点:avg=sum(*),dif=(次max点 - 次min点),范围avg±dif,出了这个范围即定义为坏点
连续多帧判断,如果50%以上都出现这样的情况,就判断为坏点,否则为噪点,使用中值滤波去除。
1.相机防抖
- 运动估计,找出最优运动向量
(a) 灰度投影法
(b) 块匹配法
(c) 位平面匹配法
(d) 边缘匹配法
(e) 特征点匹配法
主要思想是这样的:在第一帧图像中选择一块特征明显的纹理Patch,然后在随后的每一帧图像中找到与该纹理Patch最相似的Patch,然后将找到的Patch“钉”到第一帧Patch的所在位置上。
- 运动补偿,根据运动向量补偿当前帧,去除抖动。
利用陀螺仪找到核函数,然后进行透视变换
1.图像降噪
- 图像增强
- 图像融合匹配
- 自动曝光
- 自动白平衡
- 自动对焦
15.常用插值方法
- 最近插值:
-
双线性插值:
假设已知点Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1),Q22=(x2,y2)Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1),Q22=(x2,y2),并且假设图像中每个像素点服从一个未知函数ff,使得像素值R11=f(Q11)R11=f(Q11),以此类推。那么如何求出点P=(x,y)P=(x,y)的像素值RPRP呢?首先做两次线性插值,分别求出点R1=(x,y1)R1=(x,y1)和点R2=(x,y2)R2=(x,y2)的像素值,然后再用这两个点再做一次线性插值,就可以求出点P=(x,y)P=(x,y)的像素值了。
其中opencv进行了代码优化
- 取消float为int
- 原图像和目标图像对齐
-
立方卷积插值:
权值计算方法使用三次多项式4X4个点
16.常用边缘检测算子
1.设计一个OCR引擎
- 版面分析:
- 预处理:
- 行列分割:
- 字符识别:
- 矫正识别结果:
1.数据预处理
- 去均值:
- 归一化:
- PCA降维度、白化(维度归一化):
1.图像表示几种方式
- 真彩色:RGB表示
- 假彩色:不同波段的色彩表示(YUV)
- 伪彩色:灰度到RGB的映射
20.最大熵分割
- 设定一个阈值T,分割背景A和目标B
- 分别计算A和B的熵
- MAX(H(A)+H(B))
- 其中
21.OTSU阈值分割
- 设定一个阈值T,分割背景A和目标B
- 计算方差
22.均值迭代
- 设定阈值T,背景A和目标B
- 计算A、B均值:
- 更新阈值
3.区域生长
- 给定一个种子点
- 使用Vector数据结构
- 使用八领域进行判断标准
- 不断迭代vector.push()和vector.pop()
4.图像去雾
5.特征检测
- SIFT检测
差分高斯金字塔(高斯模糊->LOG->DOG)
空间极值点检测(多尺度检测->泰勒二阶展开->Hessian矩阵)
特征描述子(确定半径->角度划分为八个方向0-45-90-135...->描述区域设置为4X4->最终描述为4X4X8)
- (a)在高斯模糊的时候可以采用分离高斯卷积,这样可以更好的保留边缘细节。
- SURF检测
构建高斯金字塔(图像大小不会变化,相同层核系数不同,不同层核大小不同)
特征点检测(二阶高斯使用盒滤波器代替计算Hessian矩阵)
特征描述子(利用Harr小波特征计算描述子,利用积分图计算Harr小波,4X4X4)
特征点匹配(不仅计算欧氏距离,还增加了一个Hessian矩阵的迹,如果方向相反则一定不匹配)
- Harris角点
利用滑动窗口
使用一阶泰勒公式展开,然后计算矩阵的特征值
6.畸变矫正模型
利用相机标定取纠正图像
7.相机标定
图像坐标系到像素坐标系(仿射变换)
[图片上传失败...(image-d6f652-1538214340234)]
相机坐标系到图像坐标系(透视变换)
[图片上传失败...(image-4b7efb-1538214340234)]
世界坐标系到相机坐标系(刚体变换)
[图片上传失败...(image-d90adc-1538214340234)]
畸变:径向畸变、切向畸变
[图片上传失败...(image-999faf-1538214340234)]
[图片上传失败...(image-dd9b20-1538214340234)]
网友评论