计算机视觉CV
文章平均质量分 67
是土豆大叔啊!
知其不可奈何而安之若命
展开
-
[VP] 简易相机标定装置实现—计算相机标定矩阵K - 多视觉几何
简易相机标定装置实现—计算相机标定矩阵K一、算法原理二、代码实现0、显示图像和正方形的点1、计算单应矩阵 H1.1 确定正方形的角点1.2 计算单应矩阵 H2、计算图像正方形的成像圆点3、使用Cholesky因子计算标定矩阵 K一、算法原理用相机拍摄一张带有三个正方形框的照片,确定其 4*3=12 个点,如下图所示:设定单应矩阵 H{\bf H}H 为:H=[H11H12H13H21H22H23H31H32H33](1)H = \begin{bmatrix} H_{11} & H_{12原创 2021-07-18 00:31:00 · 674 阅读 · 1 评论 -
[VP] 证明多视觉几何中平行线段长度比不变
平行线段长度比不变一、算法原理二、代码实现一、算法原理首先有四个点 p1,p2,q1,q2p_{1}, p_{2}, q_{1}, q_{2}p1,p2,q1,q2,经过单应矩阵 HaH_{a}Ha 变换后得到新的点:p1′=Hap1, p2′=Hap2p_{1}^{'}=H_{a}p_{1}, \space\space\space\space p_{2}^{'}=H_{a}p_{2}p1′=Hap1,原创 2021-07-18 00:01:11 · 199 阅读 · 0 评论 -
[VP] 恢复图像镜面扭曲 - 多视觉几何
恢复图像镜面扭曲一、算法原理二、代码实现1、确定四个点2、由这四个点确定四条线3、由四条线确定两个消失点4、由这两个消失点确定消失线5、由消失线确定HPH_{P}HP6、由warp函数和HPH_{P}HP复原图像7、用DLT复原图像8、确定 H−TlTH^{-T}l^{T}H−TlT在无穷远处的一条线上一、算法原理感谢老哥提供的图!图像中的四条线在现实世界中应该是平行的,或者可以说现实世界中的平行线经过扭曲变换 H 变成了上图那样。那么我们拿到一张扭曲后的图,首先应该是寻找四个点,这四个点互原创 2021-07-17 23:46:23 · 685 阅读 · 2 评论 -
[VP] 投影空间坐标和线的齐次变换
投影空间坐标和线的齐次变换一、基本原理公式二、代码实现1、证明共线点 x1,x2,x3x_{1},x_{2}, x_{3}x1,x2,x3 在线 lll 上2、证明xnewx_{new}xnew 在线 lnewl_{new}lnew 上一、基本原理公式1、齐次点在线上,当且仅当: xTl=lTx=0x^{T}l=l^{T}x=0xTl=lTx=02、齐次点和线在应用了变换矩阵H后,新的点 xnewx_{new}xnew 依然在新的线 lnewl_{new}lnew 上:lnew=H−原创 2021-07-10 08:52:50 · 230 阅读 · 0 评论 -
[IG]交互图像-创建3D物体并可旋转、缩放,添加光源照明,凹凸纹理
任务一给目标增加顶点(20-30个之间)1、修改vertics,增加点的坐标var vertices = [ vec4( -0.5, -0.5, 0.5, 1.0 ), // 0 vec4( -0.5, 0.5, 0.5, 1.0 ), // 1 vec4( 0.5, 0.5, 0.5, 1.0 ), // 2 vec4( 0.5, -0.5, 0.5, 1.0 ), // 3 vec4( -0.5, -0.5, -0.5, 1.0 ), /原创 2021-05-04 15:16:23 · 643 阅读 · 0 评论 -
[VP] 缩小图像并计算Content Loss
缩小图像并计算Content Loss代码结果对比代码所用图像如下,shape=(300,300)shape=(300, 300)shape=(300,300),请自行更换图像:我主要使用了四种方法缩小图像:1、直接删去图像偶数行列2、使用高斯平滑,然后删去图像偶数行列3、使用最大池化4、使用均值池化Content Loss由于需要相同的shape才能计算,所以我统一用opencv的resize默认方式将缩小的图像放大回去,便于计算Lossimport numpy原创 2021-04-17 01:11:23 · 1003 阅读 · 1 评论 -
[VP] Sobel, Scharr, Prewitt, Roberts四种滤波器的对比
Sobel, Scharr, Prewitt, Roberts代码结果分析所用图像如下,使用时请自行更换Image:代码import numpy as npfrom scipy.ndimage import rotateimport osfrom PIL import Imageimport mathimport cv2import matplotlib.pyplot as plt%matplotlib inline#Sobel KernelsobelH = np.array(原创 2021-04-16 23:09:06 · 1056 阅读 · 0 评论 -
[VP] Kmeans聚类分割简单图像,光流算法显示移动方向 Optical Flow
Kmeans聚类与光流算法Kmeans聚类分割简单图形代码光流算法有如下图像:im1, im2, im3是两个物体每一步移动的图像,im4是移动的总体图Kmeans聚类分割简单图形代码import numpy as npfrom scipy.ndimage import rotateimport osfrom PIL import Imageimport mathimport cv2import matplotlib.pyplot as plt%matplotlib inline原创 2021-04-16 22:59:58 · 518 阅读 · 0 评论 -
[VP] 使用SIFT, HOG和Canny进行图像分类
使用SIFT, HOG和Canny进行图像分类代码SIFT结果HOG 结果Canny结果SIFT, HOG, Canny提取的特征可视化对比使用代码主题和数据来自[Github](使用SIFT, HOG和Canny进行图像分类)在使用Opencv的 SIFT时一般会报错,因为SIFT算法后来有版权限制了,解决办法 请移步此处代码import cv2import numpy as np import osfrom sklearn.cluster import KMeansfrom skle原创 2021-04-16 22:49:33 · 935 阅读 · 9 评论 -
[VP] 绘制图像直方图均衡化 Histogram Equalization
图像直方图均衡化 Histogram Equalization废话少说,直接上代码!import numpy as npimport matplotlib.pyplot as pltfrom skimage import data,exposureimg = np.array([[2, 14, 13, 14], [13, 14, 2, 1], [9, 4, 7, 9], [5, 1, 9, 5]])原创 2021-04-16 22:38:28 · 207 阅读 · 0 评论 -
[VP]图像腐蚀 Erosion
图像腐蚀 Erosion图像腐蚀其实类似于最小池化,即在图像 3×33×33×3 的size上旋转最小值替换原来的像素值。扩张则相反,取最大值。经常会将腐蚀和扩张混合,作为图像开运算和闭运算。import scipyimport numpy as npfrom PIL import Imageimage = np.array([[0, 0, 9, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0,原创 2021-04-16 22:34:02 · 216 阅读 · 0 评论 -
[VP] 图像开运算 Opening
图像开运算代码开运算其实就是先做侵蚀运算,再做扩张运算,闭运算顺序相反import numpy as npimport matplotlib.pyplot as pltimport scipyimage = np.array([[0, 1, 1, 1, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0],原创 2021-04-16 22:27:38 · 225 阅读 · 0 评论 -
[VP] 拉普拉斯算子 Laplacian Filter
拉普拉斯算子拉普拉斯算子性质拉普拉斯算子长这样:[−12−1−12−1−12−1]\begin{bmatrix} -1 & 2 &-1 \\ -1 & 2 &-1 \\-1 & 2 &-1 \end{bmatrix}⎣⎡−1−1−1222−1−1−1⎦⎤性质Image = np.array([[0, 0, 0, 0, 0, 0], [0, 1, 5, 9, 7, 0],原创 2021-04-16 22:20:22 · 1029 阅读 · 2 评论 -
[VP] 生成高斯滤波器 Gaussian Filter
高斯滤波器2D高斯滤波器的公式代码生成2D高斯滤波器的公式公式如下,u,vu,vu,v 为滤波器的坐标,最中心为(0, 0),具体请参见下面的代码f(u,v)=12πσ2e−u2+v22σ2f(u, v) = \frac{1}{2 \pi \sigma^{2}}e^{- \frac{u^{2}+v^{2}}{2 \sigma^{2}}}f(u,v)=2πσ21e−2σ2u2+v2代码生成生成一个 σ=5\sigma = 5σ=5 的高斯滤波器def GaussianFilter(u, v,原创 2021-04-16 22:12:23 · 371 阅读 · 0 评论 -
[VP]卷积与关联 Convolution and Correlation
卷积与关联关联 Correlation卷积 Correlation关联 Correlation关联其实和深度学习常说的卷积操作是一样的,将 kernel 和 Image 按对应位置相乘再求和,即是关联操作的结果以下代码为zero-padding图像的 (1, 1) 点与kernal 做关联操作的代码:#Image after constant paddingPaddingImage = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 3, 2,原创 2021-04-16 22:07:42 · 489 阅读 · 0 评论 -
[VP] BOW 词袋模型 Bag Of Words
BOW词袋模型词典学习-用聚类学习Visual Word1、特征提取2、学习可视化词典-K-means聚类编码-为每个图像建立BOW向量1、将图像特征与Visual Word联系起来2、直方图-统计Visual Word出现的次数训练-用BOW训练和测试数据1、KNN2、Linear Classifier3、SVM词典学习-用聚类学习Visual Word1、特征提取可以用 SIFT 作特征提取2、学习可视化词典-K-means聚类然后就可以用 K-means 方法提取的特征做聚类,具体步原创 2021-03-28 00:18:19 · 214 阅读 · 0 评论 -
[VP] SIFT尺度不变特征变换 Scale-invariant feature transform
尺度不变特征变换一、特征检测1、DoG图像金字塔2、寻找局部极值3、SIFT关键点展示3、为关键点指定方向二、局部图像描述三、索引和匹配1、 图像匹配2、特征匹配3、结果评估一、特征检测1、DoG图像金字塔大概就是,用不同 σ\sigmaσ 的高斯滤波器对图像滤波,然后做差2、寻找局部极值1、对于DoG金字塔的每一个点,比较它邻近的(包括临近层)26个点2、寻找极值,作为潜在的关键点,这基本上意味着关键点最好在这个尺度上表示3、SIFT关键点展示1、去除低对比度特征:如原创 2021-03-27 04:38:58 · 377 阅读 · 0 评论 -
[VP] Harris角点检测 Harris corner detector
Harris角点检测一、计算小区域的图像斜率二、减去梯度平均值三、计算协方差矩阵四、计算特征向量特征值五、在特征值上用阈值提取角在图像配准时,我们希望能找到两张图像中的独一无二的特征,那当然是拐角部位的特征最独特了!一、计算小区域的图像斜率这个部分很简单,就是计算图像对x的梯度和对y的梯度,直接拿Sobel卷过去就行下图可以看出,对角区域的梯度非常明显,也印证了选取角区域作为校准的特征是正确的从分布上也可以看出这一点二、减去梯度平均值计算下所有梯度的平均值,然后所有梯度都减去平均值原创 2021-03-11 18:46:21 · 521 阅读 · 0 评论 -
[VP] HOG特征描述符 Histograms of Oriented Gradients
HOG特征描述符一、划分图像块二、计算图像梯度幅度和方向三、创建每个Cell的直方图四、HOG可视化五、总结一、划分图像块给定一个图像size为 64 * 128,我们按 16 * 16 划分为一个块(Block),然后再将这个block划分为四个 8*8 的Cell,如下图,蓝色为block,绿色为cell二、计算图像梯度幅度和方向1、首先先计算每个Cell的水平和垂直梯度2、进一步计算图像梯度幅度和方向3、方向设为无符号方向,即角度范围为 0° - 180°三、创建每原创 2021-03-16 02:05:14 · 324 阅读 · 0 评论 -
[IG] WebGL按钮控制旋转
注明该代码源于Interactive Computer GraphicsEdward Angel and Dave ShreinerEighth Edition, Pearson Education, 2020为更好理解此代码,仅添加部分注释WebGL 按钮控制旋转HTML文件JavaScript文件大概思路关于旋转的思路,请移步此处该代码使用了按钮控制和键盘按键控制,思路都是一样的。对于实现反向旋转功能:只需要把每次旋转的角度 theta 取反就可以了,这里是设置了Direct.原创 2021-03-09 21:25:47 · 507 阅读 · 0 评论 -
[VP]图像金字塔 Image Pyramid
图像金字塔朴素图像下采样混叠 Aliasing高斯图像金字塔拉普拉斯图像金字塔图像金字塔的应用朴素图像下采样直接删除图像的偶数行和偶数列,简单粗暴!!但是,这种方法缩小后的图像再放大,就会非常的模糊,满满的像素风混叠 Aliasing混叠现象经常出现在我们生活中,比如下图:大概感觉就是,图像有些扭曲,有种波纹的感觉解决方法就是,要么是上采样,要么平滑图像,将造成混叠的信息抹去,先来看下上采样的例子,如图所示:下图是采用高斯滤波器做平滑的例子:最后的看下平滑后做下采样和朴素下原创 2021-03-06 16:11:49 · 313 阅读 · 0 评论 -
[VP]图像梯度 Image gradients
图像梯度一、图像边缘二、用于计算梯度的滤波器1、Sobel Filter2、高斯滤波器的导数3、拉普拉斯滤波器三、Canny边缘检测1、原理2、例子一、图像边缘图像可以看作是一个函数,其边缘部位非常尖锐,如下图边缘的重要性:大部分语义和形状信息都来源于边缘,因此我们可以执行类识别和分析几何图形边缘比像素更紧凑如何求图像梯度?右边像素减左边像素下边像素减上边像素这个过程可以用一个卷积核搞定:[-1, 0, 1]计算图像梯度:先选定一个滤波器与图像卷积计原创 2021-03-05 00:09:23 · 419 阅读 · 1 评论 -
[IG]WebGL旋转正方形
注明该代码源于Interactive Computer GraphicsEdward Angel and Dave ShreinerEighth Edition, Pearson Education, 2020为更好理解此代码,仅添加部分注释WebGL 旋转正方形HTML文件JavaScript文件大概思路HTML文件中,正方形在平面上旋转,就相当于是在空间中绕Z轴旋转,那么,x和y坐标的变化可以根据 绕Z轴旋转的计算公式得出:xnew=−sinθ∗yold+cosθ∗xoldx_.原创 2021-03-04 01:41:45 · 632 阅读 · 1 评论 -
[IG] WebGL绘制多点三角型
注明该代码源于Interactive Computer GraphicsEdward Angel and Dave ShreinerEighth Edition, Pearson Education, 2020为更好理解此代码,仅添加部分注释WebGL 多点三角型HTML文件JavaSript文件大概思路先确定主体三角形的三个角的位置,然后,将三点的 x,y 坐标相加再除4, 就得到了在三角形内部的一点 p0 ,然后进入循环在循环内部,开头是随机初始化一个点 p1,求该点与 p0的.原创 2021-03-03 16:01:43 · 388 阅读 · 2 评论 -
[VP]图像处理—滤波
图像处理一、对图像的理解二、图像滤波1、 点处理2、 线性移位不变图像滤波3、 卷积三、有趣的滤波一、对图像的理解彩色图像是一个3D张量数组图像的每一个通道是2D的数组一张灰度图像可以是一个函数。范围 [0, 255]一张完整的彩色图像就是三个函数构成的二、图像滤波图像处理主要分为两种:图像滤波:改变像素值,不改变像素点位置图像扭曲:改变像素点位置,不改变像素值1、 点处理2、 线性移位不变图像滤波3、 卷积1D 连续信号2D 离散信原创 2021-03-01 16:22:47 · 335 阅读 · 0 评论 -
[IG]WebGL三角形绘制
<html><!--在 HTML 页面中插入一段 JavaScript, 必需的 type 属性规定脚本的 MIME 类型, --><!--vertex-shader顶点着色器 --><script id="vertex-shader" type="x-shader/x-vertex"> <!--OpenGL着色语言, 确定其版本//--> #version 300 es <!-- aPosition指变量名称,它所保..原创 2021-02-23 22:03:20 · 158 阅读 · 0 评论