zoukankan      html  css  js  c++  java
  • 面试准备——相关知识

    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 覆盖区域的最大相素值提取。“扩展”。

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

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

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

  • 相关阅读:
    移动端web app开发备忘
    HDU 5391-Zball in Tina Town(数论)
    LeetCode:Invert Binary Tree
    Mongo集群之主从复制
    Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件&lt;MAC平台开发试用--windows平台暂未研究&gt;
    优秀程序猿因何而优秀?
    Java Exception和Error的差别
    【Android开发】之Fragment与Acitvity通信
    Draw the RGB data from kinect C++ via opengl
    使用Opencv2遇到error C2061: 语法错误: 标识符dest
  • 原文地址:https://www.cnblogs.com/wxl845235800/p/11188433.html
Copyright © 2011-2022 走看看