面试准备——相关知识

1、颜色空间

LAB颜色空间是基于人眼对颜色的感知,可以表示人眼所能感受到的所有颜色。L表示明度,A表示红绿色差,B表示蓝黄色差。L*a*b颜色空间用于计算机色调调整和彩色校正。它独立于设备的彩色模型实现。

HSV (色相hue, 饱和度saturation, 明度value), 也称HSB (B指brightness) 是艺术家们常用的。

HSL (色相hue, 饱和度saturation, 亮度lightness/luminance), 也称HLS 或 HSI (I指intensity) 与 HSV非常相似,仅用亮度(lightness)替代了明度(brightness)。

二者区别在于,一种纯色的明度等于白色的明度,而纯色的亮度等于中度灰的亮度。

YUV家族:YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。是YUV经过缩放和偏移的翻版。

YUV色彩模型来源于RGB模型,该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。

YCbCr模型来源于YUV模型,应用于数字视频。

 

2、仿射变换

平移、缩放、旋转、翻转、错切等操作。

仿射变换(affine transform)与透视变换(perspective transform)在图像还原、图像局部变化处理方面有重要意义。

其计算方法为坐标向量和变换矩阵的乘积,换言之就是矩阵运算。在应用层面,仿射变换是图像基于3个固定顶点的变换。

转加上拉升就是图像仿射变换。

根据变换前后三个点的对应关系来自动求解M。opencv:M=cv2.getAffineTransform(pos1,pos2),其中两个位置就是变换前后的对应位置关系。输 出的就是仿射矩阵M。使用函数cv2.warpAffine()。

透视(投影变换)透视变换是将图片投影到一个新的视平面。

透视变换能保持“直线性”,即原图像里面的直线,经透视变换后仍为直线。

需要的是一个3*3的矩阵。需要变换前后的4个点对应位置。

M = cv2.getPerspectiveTransform(pts1,pts2),或findHomography()求的对应性矩阵M

通过函数cv2.warpPerspective(img,M,(200,200))。

3、OpenCV

https://blog.csdn.net/weixin_42029090/article/details/80618208

1、Mat - 基本图像容器

2、图像基本操作(Mat操作)

1)滤波器掩码:filter2D(I, K, I.depth(), kern );

2)图像混合(addWeighted函数):addWeighted( src1, alpha, src2, beta, 0.0, dst);

3)点灰度变换:增益 和 偏置 参数来分别控制 对比度 和 亮度 。

double alpha;
int beta;
Mat image = imread( argv[1] );
Mat new_image = Mat::zeros( image.size(), image.type() );
for( int y = 0; y < image.rows; y++ )
{
    for( int x = 0; x < image.cols; x++ )
    {
        for( int c = 0; c < 3; c++ )
        {
            new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );
        }
    }
}

4)离散傅立叶变换:空间域(spatial domain)到频域(frequency domain)值。

5)基本绘图

6)随机数发生器

3、图像平滑处理

1)归一化块滤波器 (Normalized Box Filter)

blur( src,    //输入图像
      dst,    //输出图像
      Size( i, i ),    //定义内核大小( w 像素宽度, h 像素高度)
      Point(-1,-1))    //指定锚点位置(被平滑点), 如果是负值,取核的中心为锚点。

 2)高斯滤波器 (Gaussian Filter)

GaussianBlur( src,    //输入图像
             dst,     //输出图像
             Size( i, i ),    //定义内核的大小(需要考虑的邻域范围)。  w 和 h 必须是正奇数,否则将使用  和  参数来计算内核大小。
             0,    //: x 方向标准方差, 如果是 0 则  使用内核大小计算得到。
             0 )    //: y 方向标准方差, 如果是 0 则  使用内核大小计算得到。

3)中值滤波器 (Median Filter)

medianBlur ( src,   //输入图像
             dst,    //输出图像
             i );    //内核大小 (只需一个值,因为我们使用正方形窗口),必须为奇数。

4)双边滤波 (Bilateral Filter)

bilateralFilter ( src,  //输入图像
 dst,    //输出图像
 i,     //像素的邻域直径
 i*2,    //: 颜色空间的标准方差
 i/2 );    //: 坐标空间的标准方差(像素单位)

4、形态学处理

    形态学操作就是基于形状的一系列图像处理操作。最基本的形态学操作有二:腐蚀与膨胀(Erosion 与 Dilation)。 他们的运用广泛:

  • 消除噪声
  • 分割(isolate)独立的图像元素,以及连接(join)相邻的元素。
  • 寻找图像中的明显的极大值区域或极小值区域。

腐蚀(Erosion)将图像 A 与任意形状的内核 B(通常为正方形或圆形)进行卷积,将内核 B 覆盖区域的最小相素值提取。会导致图像中的亮区开始“收缩”。

膨胀 (Dilation) 将图像 A 与任意形状的内核 B(通常为正方形或圆形)进行卷积,将内核 B 覆盖区域的最大相素值提取。“扩展”。

开运算是通过先对图像腐蚀再膨胀实现的。能够排除小团块物体(假设物体较背景明亮)。

闭运算是通过先对图像膨胀再腐蚀实现的。能够排除小型黑洞(黑色区域)。

膨胀图与腐蚀图之差。能够保留物体的边缘轮廓。

 

posted @ 2019-07-15 13:46  ostartech  阅读(315)  评论(0编辑  收藏  举报