码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【计算机视觉】OpenCV算法解析


    文章目录

    • 0. 前言
    • 1. OpenCV
    • 2. 线性回归算法:最小二乘法
      • 【代码实现】
    • 3. 随机采样一致性(RANSAC)
      • 3.1 算法简介
      • 3.2 RANSAC在最小二乘法中的运用
      • 3.3 RANSAC的步骤
      • 3.4 RANSAC优缺点
      • 【代码实现】
    • 4. 图像相似度比较哈希算法
      • 4.1 哈希算法简介
      • 4.2 均值哈希算法
      • 4.3 差值哈希算法
      • 【代码实现】

    0. 前言

    此篇主要介绍opencv大坑,以及对前面没有学到的比较简单的常见算法进行补充:包括最小二乘法、RANSAC、哈希算法

    1. OpenCV

    • OpenCV是一个开源的计算机视觉库。OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。

    • opencv大坑之BGR

      opencv对于读进来的图片的通道排列是BGR,而不是主流的RGB

      #opencv读入的矩阵是BGR,如果想转为RGB,可以这么转 
      img4 = cv2.imread('1.jpg') 
      img4 = cv2.cvtColor(img4,cv2.COLOR_BGR2RGB) 
      
      • 1
      • 2
      • 3
    • 使用OpenCV优势

      1. 除了opencv读入的彩色图片以BGR顺序存储外,其他所有图像库读入彩色图片都以RGB存储。

      2. 除了PIL读入的图片是img类之外,其他库读进来的图片都是以numpy 矩阵。

      3. 各大图像库的性能,最好的OpenCV,无论是速度还是图片操作的全面性,都属于碾压的存在,毕竟他是一个巨大的cv专用库。

    • OpenCV常见算法

      1. 图像的基本操作读取、显示、存储:通过调用OpenCV中的cv2.imread(),cv2.imshow(),cv2.write()分别实现。

      2. 在OpenCV中实现将彩色像素转化为灰度像素。

      3. 图像的几何变换:平移、缩放、旋转、插值(最近邻、双线性)。

      4. 对比增强:线性变换、伽马变换、直方图均衡化。

      5. 边缘检测:Sobel、Canny

      6. 图像的二维滤波:cvFilter2D

    2. 线性回归算法:最小二乘法

    复习:线性回归

    举个例子,某商品的利润在售价为2元、5元、10元时分别为4元、10元、20元,我们很容易得出商品的利润与售价的关系符合直线:y=2x.在上面这个简单的一元线性回归方程中,我们称“2”为回归系数,即斜率为其回归系数。回归系数表示商品的售价(x)每变动一个单位,其利润(y)与之对应的变动关系。

    在这里插入图片描述

    线性回归表示这些离散的点总体上“最逼近”哪条直线。

    • 最小二乘法:通过最小化误差的平方和,寻找数据的最佳函数匹配。 (也就是寻找最佳的那条直线,最终就是寻找残差的最小值)最小二乘法通过计算最小均方差关于参数a、b的偏导数为零时的值。事实上,很多情况下,最小二乘法都是线性回归的代名词。

    • 利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

    • 解释:假设我们现在有一系列的数据点(xi,yi) (i=1,…,m),那么由我们给出的拟合函数h(x)得到的估计量就是h(xi) 。残差:ri = h(xi) – y

    • 适用情况:最小二乘法只适合于误差较小的情况,因为该算法不会去除噪声(离群数据),故会对最后的结果产生影响。

    • 三种范数: (计算残差)

      • ∞-范数:残差绝对值的最大值,即所有数据点中残差距离的最大值:

        (数据多时计算量太大,不具有可操作性)
        m a x 1 ≤ i ≤ m ∣ r i ∣ max_{1≤i≤m}|{r_i}| max1≤i≤m​∣ri​∣

      • 1-范数:绝对残差和,即所有数据点残差距离之和:

        (数据多时计算量太大,不具有可操作性)
        ∑ i = 1 m ∣ r i ∣ \sum_{i=1}^{m}|{r_i}| i=1∑m​∣ri​∣

      • 2-范数:残差平方和:( 一般都选择二范式)
        ∑ i = 1 m r i 2 \sum_{i=1}^{m}{r_i}^2 i=1∑m​ri​2

    • 拟合程度:我们的拟合函数h(x)与待求解的函数y之间的相似性。

      2-范数越小,相似性就比较高。

    • 算法最终目的:找一个残差的最小值,然后找到最佳函数(对应于以下公式中的平方和最小的时候的k和b的值)
      m i n a , b ∑ n = 1 N ( y n − ( k × x + b ) ) 2 min_{a,b}\sum_{n=1}^N(y_n-(k×x+b))^2 mina,b​n=1∑N​(yn​−(k×x+b))2

      这是一个无约束的最优化问题,根据以上公式分别对k和b求偏导,然后令偏导数为0,即可获得极值点。
      k = N ∑ n = 1 N

  • 相关阅读:
    最新冠军方案开源 | MOTRv2:YOLOX与MOTR合力打造最强多目标跟踪!(旷视&上交)...
    基于Tucker分解的时序知识图谱补全10.23
    Web自动化成长之路:selenium基础操作
    重学java 58.红黑树相关集合
    Vue rules校验规则详解
    Devexpress GridControl GridView表中列增加按钮
    vue项目中常用正则大全
    23种设计模式之分类总结
    AIGC系列:1.chatgpt可以用来做哪些事情?
    SAP 快速Debug财务替代GGB1
  • 原文地址:https://blog.csdn.net/m0_52923241/article/details/126729323
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号