CV学习笔记-RANSCA&图像相似度比较Hash

简介: CV学习笔记-RANSCA&图像相似度比较Hash

RANSAC&图像相似度比较Hash

1. RANSAC

1. 线性回归

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

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

2018122814580746.png

2. 最小二乘法

定义:最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

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

image.png

2-范数越小,拟合程度越高。

数学定义(参照2范数):

image.png

这是一个无约束的优化问题,分别对k和b求偏导,然后令偏导数为0,即可获得极值点。

image.png

3. RANSAC

概述:随机采样一致性(random sample consensus)

作用(*):RANSAC是一种思想,一个求解已知模型的参数的框架。它不限定某一特定的问题,可以是计算机视觉的问题,同样也可以是统计数学,甚至可以是经济学领域的模型参数估计问题。

原理: RANSAC的基本假设是 “内群”数据可以通过几组模型参数来叙述其数据分布,而“离群”数据则

是不适合模型化的数据。 数据会受噪声影响,噪声指的是离群,例如从极端的噪声或错误解释

有关数据的测量或不正确的假设。 RANSAC假定,给定一组(通常很小的)内群,存在一个

程序,这个程序可以估算最佳解释或最适用于这一数据模型的参数。

它是一种迭代的方法,用来在一组包含离群的被观测数据中估算出数学模型的参数。 RANSAC
是一个非确定性算法,在某种意义上说,它会产生一个在一定概率下合理的结果,其允许使用
更多次的迭代来使其概率增加。

2018122814580746.png

由于现实中的数据往往有偏差,而最小二乘法只适用于误差较小的情况,且由于一张图片中像素点数量大,采用最小二乘法运算量大,计算速度慢。在模型确定以及最大迭代次数允许的情况下,RANSAC总是能找到最优解。(对于包含80%误差的数据集,RANSAC的效果远优于直接的最小二乘法。)

4. RANSAC算法流程

在数据中随机选择几个点设定为内群

计算适合内群的模型 y=ax+b ->y=2x+3 y=4x+5

把其它刚才没选到的点带入刚才建立的模型中,计算是否为内群 hi=2xi+3,ri

记下内群数量

重复以上步骤

比较哪次计算中内群数量最多,内群最多的那次所建的模型就是我们所要求的解

RANSAC算法的输入:

  • 一组观测数据(往往含有较大的噪声或无效点)
  • 一个用于解释观测数据的参数化模型,比如y=ax+b
  • 一些可信的参数。

注意:不同问题对应的数学模型不同,因此在计算模型参数时方法必定不同,RANSAC的作用不在于计算模型参数。(这导致RANSAC的缺点在于要求数学模型已知)

待定参数n、k:

  • 一开始的时候随机选择的点的数量(n)
  • 算法重复次数(k)

假设每个点是真正内群的概率为 w

image.png

image.png

5. RANSAC的应用举例

全景拼接:

流程

1、针对某个场景拍摄多张/序列图像

2、通过匹配特征(sift匹配)计算下一张图像与上一张图像之间的变换结构。

3、图像映射,将下一张图像叠加到上一张图像的坐标系中

4、变换后的融合/合成

2018122814580746.png

2018122814580746.png

image.png

6. RANSCA的优缺点

优点:

  • 它能鲁棒的估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。

缺点:

它计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。

RANSAC只有一定的概率得到可信的模型,概率与迭代次数成正比。

它要求设置跟问题相关的阀值。

RANSAC只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,RANSAC不能找到别的模型。

要求数学模型已知

2. 哈希算法

1. 哈希概述

哈希:散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定

下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,

或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。

特点:

  • 不可逆性。输入信息得出输出的那个看似乱码的字符串(哈希值)非常容易,但是从输出的字符
    串反推出输入的结果却是却非常非常难。
  • 输出值唯一性和不可预测性。只要输入的信息有一点点区别,那么根据哈希算法得出来的输出值
    也相差甚远。

2. 均值哈希算法

汉明距离:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

算法步骤:

缩放:图片缩放为8*8,保留结构,除去细节。

灰度化:转换为灰度图。

求平均值:计算灰度图所有像素的平均值。

比较:像素值大于平均值记作1,相反记作0,总共64位。

生成hash:将上述步骤生成的1和0按顺序组合起来既是图片的指纹(hash)。

对比指纹:将两幅图的指纹对比,计算汉明距离,即两个64位的hash值有多少位是不一样的,不

相同位数越少,图片越相似。

3. 差值哈希算法

差值哈希算法相较于均值哈希算法,前期和后期基本相同,只有中间比较hash有变化。

算法步骤:

缩放:图片缩放为8*9,保留结构,除去细节。

灰度化:转换为灰度图。

比较:像素值大于后一个像素值记作1,相反记作0。本行不与下一行对比,每行9个像素,

八个差值,有8行,总共64位

生成hash:将上述步骤生成的1和0按顺序组合起来既是图片的指纹(hash)。

对比指纹:将两幅图的指纹对比,计算汉明距离,即两个64位的hash值有多少位是不一样

的,不相同位数越少,图片越相似。

4. 感知哈希算法

均值哈希算法过于严格,不够精确,更适合搜索缩略图,为了获得更精确的结果可以选择感知哈希

算法,它采用的是DCT(离散余弦变换)来降低频率的方法。

算法步骤:

缩小图片:32 * 32是一个较好的大小,这样方便DCT计算

转化为灰度图:把缩放后的图片转化为灰度图。

计算DCT:DCT把图片分离成分率的集合

缩小DCT:DCT计算后的矩阵是32 * 32,保留左上角的8 * 8,这些代表图片的最低频率。

计算平均值:计算缩小DCT后的所有像素点的平均值。

进一步减小DCT:大于平均值记录为1,反之记录为0.

得到信息指纹:组合64个信息位,顺序随意保持一致性。

最后比对两张图片的指纹,获得汉明距离即可。

DCT:离散余弦变换(Discrete Cosine Transform),主要用于将数据或图像的压缩,能够将空域的信号转换到频域上,具有良好的去相关性的性能。

DCT的特点:

  • DCT变换本身是无损的,同时,由于DCT变换是对称的,所以,我们可以在量化编码后利用DCT反变换,在接收端恢复原始的图像信息。

DCT的应用:

  • DCT变换在当前的图像分析以及压缩领域有着极为广大的用途,我们常见的JPEG静态图像编码以及MJPEG、MPEG动态编码等标准中都使用了DCT变换。

5. 三种图像相似度比较哈希算法比较

  • aHash:均值哈希。速度比较快,但是有时不太精确。
  • pHash:感知哈希。精确度较高,但是速度方面较差一些。
  • dHash:差值哈希。精确度较高,且速度也非常快。
相关文章
|
机器学习/深度学习 并行计算 算法
霍夫变换椭圆检测(matlab仿真与图像处理系列第2期)
霍夫变换椭圆检测(matlab仿真与图像处理系列第2期)
|
算法 搜索推荐 计算机视觉
图片相似度计算及检索调研
图片相似度计算和相似图片搜索,是图片识别领域两个常见的应用场景。例如搜索相似商品,和相似的图片,在百度、淘宝中都有应用。在某些业务中,也存在对图片相似度的计算和判断。因此,在这里简单介绍一下相关算法。
2669 0
|
2月前
|
人工智能 安全 数据可视化
OpenClaw(Clawdbot/Moltbot)AI 助手一键部署保姆级教程及2026年常见问题解答
2026年,OpenClaw凭借强大的任务执行能力与开源特性,成为搭建专属AI助手的首选工具,其前身为Clawdbot、Moltbot,历经版本迭代优化,部署流程更简洁、兼容性更出色。阿里云针对不同用户群体,推出了OpenClaw专属一键部署方案,通过预置应用镜像、简化配置流程,实现“分钟级部署、零代码上手”,彻底打破了开源工具的技术门槛,无论是零基础新手还是有一定基础的用户,都能轻松搭建7×24小时在线的AI助手。
886 14
|
3月前
|
机器学习/深度学习 存储 编解码
神经辐射场NeRF入门:3D视图合成的原理与PyTorch代码实现
NeRF(神经辐射场)用多层感知机将5D坐标(位置+视角)映射为颜色和密度,通过过拟合单个场景实现高质量新视角合成。结合位置编码与体积渲染,以隐式方式表征三维场景,仅需少量图像即可重建精细结构。
366 3
神经辐射场NeRF入门:3D视图合成的原理与PyTorch代码实现
|
机器学习/深度学习 传感器 编解码
史上最全 | 基于深度学习的3D分割综述(RGB-D/点云/体素/多目)(上)
3D目标分割是计算机视觉中的一个基本且具有挑战性的问题,在自动驾驶、机器人、增强现实和医学图像分析等领域有着广泛的应用。它受到了计算机视觉、图形和机器学习社区的极大关注。传统上,3D分割是用人工设计的特征和工程方法进行的,这些方法精度较差,也无法推广到大规模数据上。在2D计算机视觉巨大成功的推动下,深度学习技术最近也成为3D分割任务的首选。近年来已涌现出大量相关工作,并且已经在不同的基准数据集上进行了评估。本文全面调研了基于深度学习的3D分割的最新进展,涵盖了150多篇论文。论文总结了最常用的范式,讨论了它们的优缺点,并分析了这些分割方法的对比结果。并在此基础上,提出了未来的研究方向。
史上最全 | 基于深度学习的3D分割综述(RGB-D/点云/体素/多目)(上)
|
计算机视觉 索引
OpenCv实时设置摄像头参数/获得摄像头参数值的方法论
这篇文章提供了一个OpenCV的实例教程,展示了如何使用`createTrackbar()`函数实时设置和获取摄像头参数值,如饱和度、Gamma和亮度,并通过回调函数在程序中连续修改这些参数。
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
25162 3
|
算法 计算机视觉
OpenCV(四十七):RANSAC优化特征点匹配
OpenCV(四十七):RANSAC优化特征点匹配
1611 0
|
算法 Windows
RANSAC算法理解
RANSAC算法理解
1451 0
RANSAC算法理解
|
机器学习/深度学习 自然语言处理 算法
【CV大模型SAM(Segment-Anything)】真是太强大了,分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标
【CV大模型SAM(Segment-Anything)】真是太强大了,分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标

热门文章

最新文章