搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小丑西瓜9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
alzheimer ---hackmyvm
2
组合数据类型(集合)_集合的元素可以是任意数据类型。
3
QEMU使用virtio磁盘(Ubuntu/windows)_qemu 挂载iso驱动
4
stm32H库的内部FLASH读写操作与结构体数组数据写入与读取_stm32 flash 结构体
5
A*算法原理和代码详解_a* 核心代码
6
有孚网络CEO安柯:IT部门趋于轻量化 “平台+服务”或将成为主流
7
可视化学习笔记9-pytorch cifar10数据可视化,归一化可视化。_cifar10数据集下载可视化
8
redis并发锁 thinkphp5_Thinkphp5+Redis实现商品秒杀代码实例讲解
9
软件测试通过及BUG分级标准_针对测试过程中产生严重bug和多次被激活的bug的情况考核开发人如何制定考核
10
VS Code配置使用 LaTeX_vs code latex
当前位置:
article
> 正文
计算机视觉基础知识(十一)--OpenCV算法解析_opencv算法介绍
作者:小丑西瓜9 | 2024-03-18 15:24:41
赞
踩
opencv算法介绍
1.OpenCV
是一个开源的计算机视觉库;
用c语言和C++编写,并进行了深度优化,可多线程处理;
可以在windows\Linux\Mac OS X上运行;
目前在开发Python\java\Matlab语言版本及接口;
用于高效的计算,强调实时应用的开发;
目标是提供易于使用的计算机视觉接口;
该库含有大约500多个函数;
包括:产品质量检验\医学图像处理\安保领域\交互操作\相机矫正\双目视觉\机器人学;
OpenCV大坑
OpenCV读进来的图片通过排列为
BGR,不是
主流的
RGB!
PIL
读入的图片是
img
类型,其他库读进来的都是numpy矩阵;
各大图库的性能,
最好的
是OpenCV;
OpenCV常见算法
图像基本操作:读取\显示\存储:cv2.imread(),cv2.imshow(),cv2.write();
将彩色像素转换为灰度像素;
图像的几何变换:平移\缩放\旋转\插值(最邻近\双线性);
对比增强:线性变换\伽玛变换\直方图均衡化;
边缘检测:Sobel\Canny;
图像的二维滤波:cvFilter2D;
2.最小二乘法
什么是线性回归
举例说明:
某产品的利润在售价为2元\5元\10元时分别为4元\10元\20元;
商品的利润与售价的关系符合直线:y=2x;
上述关系中,"2"称为回归系数,即斜率;
回归系数表示商品的售价x变动一个单位时,利润y与之对应的变动关系;
线性回归表示离散点总体上"最逼近"哪条直线;
最小二乘法(Least Square Method)
通过最小化误差的平方和;寻找最佳匹配函数;
利用最小二乘法可方便求出未知数据;
并使得这些数据与实际数据之间的误差平方和最小;
假设一系列数据点
;
我们给定的拟合函数为h(x),h(x)对xi的估计量为:
;
残差为:
三种范数
-范数:残差绝对值的最大值:
;
1-范数:绝对残差之和:
;
2-范数:残差平方和:
;
拟合程度
通俗的将,就是拟合函数h(x)与待求函数y之间的相似性;
2-范数越小,相似性越高;
最小二乘法定义
;
这是一个无约束最优化的问题;
分别对k和b求偏导,令偏导数为0,可得极值点;
;
3.RANSAC
随机采样一致性(random sample consensus);
RANSAC是一种思想;
一个求解已知模型的参数的框架;
不限定某一特定问题;
可以是计算机视觉的问题,
也可以是统计数学,甚至是经济学领域的模型参数估计的问题;
是一种迭代的方法;
在一组含离群被观测数据中估算数学模型的参数;
是一个非确定性的算法;
会产生一个在一定概率下的合理结果;
允许使用多次的迭代增加其概率;
基本假设为:"内群"数据可以通过几组模型参数表示其数据分布;
"离群"数据不适合模型化;
数据受到噪声(指的是"离群"数据)的影响;
假定给定一组"内群"(通常很小);
存在一个程序;
可以估算最佳解释或
最适用这一数据的模型的参数;
RANSAC与最小二乘法
生产实践中的数据往往都会有一定偏差;
我们猜测两个变量x和y具有一定的线性关系:
;
最小二乘法通过计算关于a和b的最小均方差的偏导数为零的值;
很多情况下,最小二乘法都是线性回归属性;
但遗憾的是,最小二乘法只适合误差较小的情况;
RANSAC在模型确定及最大迭代次数的允许下,总能找到最优解;
对含有80%误差的数据集,RANSAC的效果远优于最小二乘法;
最小二乘法对一张图片中的大量像素点,计算速度慢;
RANSAC计算步骤
输入一组观测数据(含有较大的噪声点或无效点);
输入一个用于解释观测数据的参数化模型,比如y=ax+b
输入一些可信的参数;
在数据中随机选择几个点设定为内群;
计算适合内群的模型:y=ax+b-->y=2x+6,...
把没有选定为内群的点带入模型中验证;
计算这些点是否为内群点;
记录下内群数量;
重复上述步骤;
比较哪次计算中内群数量最多;
内群最多的模型就是所求解;
几个问题
不同的数学模型,计算模型参数的方法不同;
RANSAC的作用不在于计算模型参数;
模型需要已知;
开始的时候选择多少随机点(n)?
重复多少次(K)?
RANSAC参数确定
假定每个点为内群的概率w:
w=内群的数目/(内群数目+外群数目);
通常不知道w的值;
是选择的n各点都是内群的概率;
是所选n个点至少有一个不是内群的概率;
表示重复k次都没有全部n个点都是内群的概率;
算法运行k次以后成功的概率为p:
通过p可反算得到重复次数k;
;
当n不变,k越大,p越大;
当w不变,n越大,k越大;
通常w未知,n选小一点较好.
RANSAC优缺点
优点:
能鲁棒的估计模型参数;
缺点
参数计算的迭代次数无上限;
设置了上限,可能得不到最优的结果;
只有一定的概率得到可信的模型.概率与迭代次数成正比;
要求设置同问题相关的阈值;
只能从特定数据集中估计出一个模型;
存在多个模型的化,RANSAC不能找到;
要求数学模型已知;
4.哈希算法
解决图像相似度的度量问题;
哈希算法的种类
哈希算法是一类算法的总称;
共有三种
均值哈希算法aHash;
差值哈希算法dHash;
感知哈希算法pHash;
什么是哈希(Hash)
散列函数或散列算法又称哈希函数:Hash Function;
一种从任何一种数据中创建小的数字"指纹"的方法;
散列函数把消息或数据压缩成摘要;
使数据量变小,将数据的格式固定;
将数据打乱混合,重新创建一个散列值(hash values,hash codes,hash sums或hashes)的指纹;
散列之通常用一个短的随机字母和数字组成的字符串表示;
哈希算法将得到的任意长度的二进制值映射为较短的固定长度的二进制值,即哈希值;
哈希值是一段数据唯一且极其紧凑的数值表示形式;
更改一段明文的任意一个字母,得到的哈希值都不相同;
哈希算法是一个函数;
能够把几乎所有数字文件转换为一串数字和字母构成的看似混乱的字符串;
哈希函数是一种加密函数;
作为加密函数,哈希函数的两个特点
不可逆性;从输出的字符串反推输入非常非常难;
唯一性和不可预测性:输入信息的点点区别,哈希算法的输出值相差甚远;
汉明距离
两个整数之间的汉明距离为两个数字对应二进制不同位置的数目;
均值哈希算法步骤
缩放:图片缩放为8x8,保留结构,去除细节;
灰度化:图片转为灰度图
求均值:计算所有像素的平均值;
比较:像素值大于均值,记为1,否则记为0,共计64位;
生成hash:按顺序组合第4步的1和0,即为图片指纹(hash);
对比指纹:对比两个指纹,计算汉明距离;
汉明距离越近,图片越相似;
差值哈希算法步骤
同均值哈希相比,只有中间比较hash有变化;
步骤:
图片缩放为8*9,保留结构,去除细节;
转化为灰度图;
像素值大于后一个像素值记作1,相反记作0;
本行不与下一行对比;
每行9个像素,8个差值,共计64位;
将上述步骤生成的1和0按顺序组合,即为图片指纹;
将两图对比汉明距离;
不相同位数越少,图片越相似.
感知哈希算法步骤
缩放图片为32x32大小;
转化为灰度图;
计算DCT(把图片分离成分率的集合);
缩小DCT,保留左上角的8*8;
这些代表图片的最低频率;
计算缩小DCT后的所有像素平均值;
进一步缩小DCT,大于均值记为1,反之记为0;
顺序组合上述结果,得到64位指纹;
计算汉明距离;
三种哈希算法比较
aHash均值哈希:速度较快,过于严格,不够精确
pHash感知哈希:精度较高,速度较差;
dHash差值哈希:精度较高,速度非常快;
5.拓展-DCT
离散余弦变换(Discrete Cosine Transform):
主要用于数据或图像的压缩;
将空域信号转换到频域上;
良好的去相关性的能力;
DCT变换本身为无损变换;
DCT变换为对称变换;
可利用DCT反变换恢复原始图像;
在图像分析与压缩领域用途极为广大;
JPEG静态图像编码及MJPEG\MPEG动态编码标准中都使用了DCT变换.
公式
其中:
是输出的变换结果;
N为原始信号的点数;
f(i,j)是原图像中像素点(i,j)的像素值;
是DCT系数;
;
应用举例:
某图像的一个8x8方块的亮度值;
为了减少绝对值波动,数值移位,变成-128~127;
经过DCT变换公式,经计算,临时结果为:
DCT在JPEG压缩编码中的应用
JPEG(Joint Photographic Experts Group)
两种基本的压缩方法:
采用DCT为基础的有损压缩算法;
以预测为基础的无损压缩算法;
有损压缩,压缩比为25:1时;
还原后的图像与原始图像,非图像专家难以分辨;
得到广泛的应用;
DCT在数字水印(digital watermarking)技术中的应用
数字水印技术将特定信息嵌入到数字信息内容中;
要求嵌入的信息不能被轻易的除去;
在一定的条件下可以被提取出来;
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小丑西瓜9/article/detail/263999
推荐阅读
article
(一)Qt+
OpenCV
调用
海康
工业
相机
SDK示例开发_qt
opencv
海康
工业
相机
...
近期在Qt环境下进行
海康
工业
相机
的使用开发,发现
海康
提供的示例没有Qt的demo,而其中有基于MFC框架的示例,所以在这...
赞
踩
article
机械女生
,
双非本
985硕
,
目前学了C
基础知识
,
转
嵌入式
还是
java
更好?...
现在的电路集成化都很高了
,
直接有现成的芯片方案
,
芯片手册大多数都有参考电路
,
哪怕电路实现细节看不懂
,
都不影响使用
,
有些关...
赞
踩
article
YOLOv5
实例
分割
用 OPenCV
DNN
C++ 部署_
opencv
yolov5
实例
分割
...
还是写一点
实例
分割
部分的东西吧,互相交流下,嘿嘿。
yolov5
n-seg.onnx 一张图片输入会获得两个输出,分别为o...
赞
踩
article
【
OpenCV
】如何
在
Linux
操作系统
下正确
安装
OpenCV
...
本文详细介绍了
在
Linux
操作系统
下正确
安装
OpenCV
的步骤和注意事项,包括环境准备、下载
安装
OpenCV
库、配置编译...
赞
踩
article
Yolov3
CPU
推理
性能比较-
Onnx
、
OpenCV
、
Darknet
...
为实时目标检测应用程序选择正确的
推理
框架变得非常具有挑战性,尤其是当模型应该在低功耗设备上运行时。在本文中,你将了解如何...
赞
踩
article
原生
微信
小
程序
全流程(
基础知识
+
项目
全流程)_
微信
小
程序
原生
开发
...
原生
微信
小
程序
开发
全流程,包含
基础知识
+
项目
全流程........................._
微信
小
程序
原生
开发
...
赞
踩
article
【
计算机
视觉】
OpenCV
4高级编程与项目实战(
Python
版)【7】:
拼接
图像
_
opencv
拼...
我们已经知道,
图像
是通过数组描述的,那么
拼接
图像
其实就是
拼接
数组。NumPy提供了2个
拼接
数组的函数,分别是hstack...
赞
踩
article
【
计算机
视觉】
OpenCV
4
高级编程与项目实战(
Python
版)【
4
】:
通道
详解_
opencv
4
详...
相信很多读者朋友对“
通道
”这个词已经不陌生了,一副BGR图像是由3个
通道
组成的,这3个
通道
是B
通道
、G
通道
和R
通道
。本节...
赞
踩
article
【计算机视觉】
OpenCV
4高级编程与项目实战(
Python
版)【5】:
使用
NumPy
创建
黑白同心...
OpenCV
中
使用
数组表示
图像
数据,不过这里的数组并不是
Python
数组,而是
NumPy
数组。
NumPy
是非常著名的科学...
赞
踩
article
【
计算机
视觉
】
OpenCV
4
高级编程与项目实战(
Python
版)【1】:
图像处理
基础_
python
...
本系列文章会深入讲解
OpenCV
4
(
Python
版)的核心技术,并提供了大量的实战案例。这是本系列文章的第一篇,主要讲...
赞
踩
article
【
计算机
视觉
】
OpenCV
4高级编程与项目实战(
Python
版)【3】:
色彩
空间
_
opencv4
计...
在上一篇文章中,简单介绍了BGR
色彩
空间
和RGB
色彩
空间
,本文将介绍另外两个比较常见的
色彩
空间
:GRAY
色彩
空间
和HSV...
赞
踩
article
【计算机视觉】
OpenCV
4高级编程与项目实战(
Python
版)【8】:
图像
像素
统计
_
python
...
图像
通过一定尺寸的矩阵表示,矩阵中每个元素的大小表示
图像
中每个
像素
的明暗程度。查找矩阵中的最大
值
就是寻找
图像
中灰度
值
最大...
赞
踩
article
【
计算机
视觉】
OpenCV
4
高级编程与项目实战(
Python
版)【2】:操作
像素
_
opencv
4
...
像素
是构成图像的基本单位。现在看图1所示的花卉图像,这幅图看着很细腻,不过将图像的白框区域放大,会看到如图2所示的效果,...
赞
踩
article
【计算机视觉】
OpenCV
4高级编程与项目实战(
Python
版)【6】:
使用
NumPy
创建
随机
雪花
...
上一篇文章演示了如何
使用
二维数组
创建
黑白
图像
,如果要
创建
彩色
图像
,就需要
使用
三维数组。例如,在BGR色彩空间
创建
200 ...
赞
踩
article
毕设 深度学习
opencv
python
实现
中国
交通标志
识别
_
python
opencv
交通标志
...
毕设 深度学习
opencv
python
实现
中国
交通标志
识别
_
python
opencv
交通标志
识别
python
o...
赞
踩
article
视频
字幕
识别
(百度AI
开放平台
OCR
|
python
|
opencv
)...
视频
字幕
识别
,确定
字幕
位置,调用百度
开放平台
OCR
,
python
-
opencv
_
字幕
识别
字幕
识别
...
赞
踩
article
python
读取
视频
字幕功能,结合
百度
ai
图片
文字
识别,
opencv
-
python
_
百度
ai
视频
中提...
所安装的
python
库pip install
opencv
-
python
pip install Pillowpip in...
赞
踩
article
计算机
视觉
+深度
学习
+机器
学习
+
opencv
+目标
检测
跟踪+一站式
学习
(代码+视频+PPT)...
计算机
视觉
+深度
学习
+机器
学习
+
opencv
+目标
检测
跟踪+一站式
学习
(代码+视频+PPT)
计算机
视觉
+深度
学习
+机器学...
赞
踩
article
软件杯 深度
学习
python
opencv
动物
识别
与
检测
...
软件杯 深度
学习
python
opencv
动物
识别
与
检测
...
赞
踩
article
OpenCV
环境变量
参考...
OpenCV
是一个广泛使用的图像和视频处理开源库,拥有丰富的图像算法和函数库,支持多种编程语言。为了更好的适应不同的开发...
赞
踩
相关标签
qt
opencv
计算机视觉
c语言
单片机
stm32
嵌入式开发
嵌入式
YOLO
dnn
linux
服务器
OpenCV
Linux
图像处理
深度学习
python
编程语言
人工智能
微信小程序
小程序
Python
图像
numpy