图像算法
文章平均质量分 50
li三河
图像算法、3D开发、深度学习
展开
-
(二十八) 基于轮廓特征的形状匹配
1、链码直方图链码直方图将人眼看上去相似的物体归为一类。方向链码是用来表示物体轮廓的典型链码表示法。一条离散曲线可以定义为z2域内一组数量有限的8联通的。因此,一条数字化二值曲线可以用方向链码表示方向链码是相邻两像素连线的8种可能的方向值。一条曲线被网格离散化后形成n个链码方向,最终此曲线链码可表示为,每条链指向8个方向中的一个方向,i为像素的索引值,ai是由像素i指向像素i+1的方向链码。 (a)编码的方向示意 (b)简单物体形状 (c)形状的链码表示...原创 2022-02-15 17:03:06 · 1697 阅读 · 0 评论 -
(二十七) 开运算、闭运算、形态梯度、顶帽、黑帽
首先形态学的主要用途是获取物体拓扑和结果信息,通过物体和结构元素的某些运算,得到物体更本质的形态,在图像处理中的主要应用有:(1)利用形态学的基本运算对图像进行观察和处理,从而达到改善图像质量的目的(2)描述和定义图像的各种几何参数和特征如面积、周长、连通、颗粒度、骨架和方向性1、开运算开运算是通过先对图像腐蚀再膨胀实现,其原理表达式如下: dst=open(src,element)=dilate(erode(s...原创 2022-02-15 16:55:52 · 1376 阅读 · 0 评论 -
(二十四) opencv中mat矩阵相乘
1、点乘--A*BA*B是以数学运算中矩阵相乘的方式实现的,即Mat矩阵A和B被当做纯粹的矩阵做乘法运算,要求A的列数等于B的行数时,才能定义两个矩阵相乘。如A时m*n矩阵,B是n*p矩阵,乘积AB是一个m*p矩阵。参与点乘的两个Mat矩阵的数据类型只能是CV_32F、CV_64FC1、CV_32FC2、CV_64FC2这4种类型中的一种。2、dot--A.dot(B)相当于数学向量运算中的点乘,也叫向量的内积、数量积。对于向量a和向量b:a和b的点积公式为:Dot方原创 2022-02-07 20:51:58 · 3424 阅读 · 0 评论 -
(二十) HOG特征
HOG方向梯度直方图,分解为方向梯度与直方图。在图像中梯度是像素值变换最快方向,边缘与梯度保持垂直方向。P0到P1的梯度方向:1、检测窗口、块、单元格和梯度方向检测窗口:WinSize=128*64像素,在图像中滑动的步长是8像素(水平和垂直都是)块:BlockSize=16*16像素,在检测窗口中滑动的步长是8像素(水平和垂直都是)单元格:CellSize=8*8像素梯度方向:一个Cell的梯度方向分为9个方向,在一个单元格内统计9个方向的梯度直方图2、灰度化和标准化ga.原创 2022-02-07 20:02:36 · 508 阅读 · 0 评论 -
(十九) 傅里叶变换(Fourier Transform)
1、原理对于图像,使用2D离散傅里叶变换(DFT)来查找频域。对于一个正弦信号 ,x(t)=Asin(2pift),我们可以说f是信号的频率,如果取其频率域,我们可以在f处看到一个尖峰。如果信号被采样以形成离散信号,我们得到相同的频域。但是在范围[-pi,pi]或[0,2*pi]或[0,N],你可以将图像视为在两个方向上采样的信号。因此,在X方向和Y方向进行傅里叶变换将为你提供图像的频率表示。更直观地说,对于正弦信号,如果幅度在短时间内变化得如此之快,则可以说它是高频信号。如果变化缓慢,则是低频信号原创 2022-02-07 19:49:30 · 1271 阅读 · 0 评论 -
(十八) 阈值分割
1、最大类间方差法:otsu使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别来划分。设t为设定的阈值,w0为分开后前景像素点数占图像的比例,u0为分开后前景像素点的平均灰度,w1为分开后背景像素点数占图像的比例,u1为分开后背景像素点数的平均灰度,u=w0*u0+w1*u1为图像总平均灰度。从L个灰度级遍历t,使得t为某个值得时候,前景和背景的方差最大,则这个t值要求的阈值。由..原创 2022-02-07 19:43:35 · 813 阅读 · 0 评论 -
(十七) 轮廓
1、 轮廓提取使用阈值分割或边缘提取,来获得二值图像;物体需要白色的,背景是黑色的import numpy as npimport cv2 as cvim = cv.imread('test.jpg')imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)ret, thresh = cv.threshold(imgray, 127, 255, 0)im2, contours, hierarchy = cv.findContours(thresh, cv.R原创 2022-02-07 19:42:09 · 938 阅读 · 0 评论 -
(十六) 图像金字塔
高斯金字塔:通过高斯平滑和亚采样获得一系列下采样图像,也就是说第K层高斯金字塔通过平滑、亚采样获得K+1层高斯图像。金字塔的图像如下:下采样pyrDown:对图像Gi进行高斯内核卷积、将所有偶数行和列去除得到的图像为Gi+1的图像,结果图像只有原图的四分之一。上采样pyrUp:图像在每个方向扩大为原来的两倍,新增的行和列以0填充。使用先前同样的内核(乘以4)与放大后的图像卷积,获得新增像素的近似值拉普拉斯金字塔:拉普拉斯金字塔是通过源图像减去先缩小后再放大的图像的一系列图像构成的.原创 2022-02-07 19:17:04 · 636 阅读 · 0 评论 -
(十五) 边缘检测Canny算法流程
(1) 减噪声:边缘检测对噪声非常敏感,利用5*5高斯滤波器进行操作(2) 图像梯度:利用sobel求X、Y的梯度,得到边缘梯度和方向,梯度方向与边缘垂直(3) 梯度幅值非最大值抑制:该点是8邻域的边缘梯度幅值最大值,则该点保留,否则就剔除点A在垂直方向边缘上,梯度方向正交于边缘。点B与点C在梯度方向,检测点A是否点B和点C形成局部极大值,如果是,进入下阶段,否则设置为0。(4)滞后阈值:梯度大于最大值是边界,低于最小值是非边界,剔除掉。介于最小值和最大值之间的边界取决于连接性,与.原创 2022-02-07 19:14:49 · 1666 阅读 · 0 评论 -
(十四) 图像梯度
(1) 单向梯度import numpy as npimport cv2 as cv from matplotlib import pyplot as pltimg = cv.imread('dave.jpg',0)laplacian = cv.Laplacian(img,cv.CV_64F)sobelx = cv.Sobel(img,cv.CV_64原创 2022-02-07 19:10:44 · 893 阅读 · 0 评论 -
(十三) 图像模糊
低通滤波器用来去除噪声,达到图像模糊作用;高通滤波器用来找图像边缘(1)2D卷积:cv2.filter2D(),使用5*5均值过滤器import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltimg = cv.imread('opencv_logo.png')kernel = np.ones((5,5),np.float32)/25dst = cv.filter2D(img,-1,kernel)plt.s.原创 2022-02-07 19:06:56 · 778 阅读 · 0 评论 -
(十二) 灰度共生矩阵
(1) 假设一个图像的灰度,这个图像的灰度是3阶,灰度共生矩阵是3阶方阵(灰度共生矩阵的阶数等于灰度的等级数)(2) 表示像素对的位置关系(两个像素相对位置关系)注意这里的x+a,y+b的写法水平:a=1,b=0垂直:a=0,b=1正45:a=-1,b=1负45:a=1,b=1(3)n(i,j),i和j都是灰度等级,n表示灰度等级i和j的像素对,在δ定义的位置关系下,出现的次数比如n(0,0),δ定义为水平,(0,0)像素对水平排列在灰度中出现的次数为0比..原创 2022-02-07 19:01:00 · 2597 阅读 · 0 评论 -
(十一)图像几何变换
1、仿射变换(1) 缩放:图像大小按照指定的比率放大或者缩小,cv2.resize(), cv.INTER_AREA、cv.INTER_CUBIC、cv.INTER_LINEARimport numpy as npimport cv2 as cvimg = cv.imread('messi5.jpg')res = cv.resize(img,None,fx=2, fy=2, interpolation = cv.INTER_CUBIC)#ORheight, width = img.sha原创 2022-02-06 09:31:01 · 859 阅读 · 0 评论 -
(十) 特征匹配
(1) Brute-Force(蛮力匹配器)首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点。cv2.BFMatcher() :normType参数。它是用来指定要使用的距离测试类型。默认值为 cv2.Norm_L2。这很适合 SIFT 和 SURF 等(c2.NORM_L1 也可以)。对于使用二进制描述符的 ORB,BRIEF,BRISK算法等,要使用 cv2.NORM_HAMMING,这样就会返回两个测试对象之间的汉明距离。如果 O原创 2022-02-06 09:16:22 · 678 阅读 · 0 评论 -
(九) LBP特征提取
LBP(局部二值模式)是一种用来描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性等显著优点。(1) 原始LBP原始的LBP算子定义在一个3*3的窗口内,以窗口中心像素为阈值,与相邻的8个像素的灰度值比较,若周围的像素值大于中心像素值,则该位置被标记为1,否则标记为0.可以得到一个8位二进制,将这个值作为窗口中心像素点的LBP值,来反映这个3*3区域的纹理信息。LBP记录的是中心像素点与领域像素点之间的差值,所以当光照变化引起像素灰度值同增同减时,LBP变化并不明显,可以认为LBP对于光照变化不原创 2022-02-06 09:06:04 · 2796 阅读 · 0 评论 -
(八) ORB特征提取
特征点检测:图像的特征点可以简单的理解为图像中比较显著显著的点,如轮廓点,较暗区域中的亮点,较亮区域中的暗点等。ORB采用FAST(features from accelerated segment test)算法来检测特征点。这个定义基于特征点周围的图像灰度值,检测候选特征点周围一圈的像素值,如果候选点周围领域内有足够多的像素点与该候选点的灰度值差别够大,则认为该候选点为一个特征点。其中I(x)为圆周上任意一点的灰度,I(p)为圆心的灰度,Ed为灰度值差得阈值,如果N大于给定阈值,一般为周围圆圈.原创 2022-02-06 08:41:31 · 2584 阅读 · 0 评论 -
(七) RANSAC
随机抽样一致算法,采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。RANSAC算法假设数据中包含正确数据和异常。正确数据记为内点,异常数据记为外点。存在很多离散的点,而我们认为这些点构成一条直线,人眼能够清晰地拟合出这条直线,找到外点。1、RANSAC原理OpenCV中滤除误匹配对采用RANSAC算法寻找一个最佳单应性矩阵H,矩阵大小为3*3.RANSAC目的是找到最优的参数矩阵使得满足该矩阵的数据点个数最多,通常令h33=1来归一化矩阵。由于单应性矩阵有8个未知参数,至少需要8个线原创 2022-01-30 14:57:43 · 1557 阅读 · 0 评论 -
(六)BRIEF特征点描述算法
由于BRIEF仅仅是特征描述子,所以事先要得到特征点的位置,可以利用FAST特征点检测算法或Harris角点检测算法或SIFT、SURF等算法检测特征点的位置。接下来在特征点邻域利用BRIEF算法建立特征描述符。算法步骤如下:1、为减少噪声干扰,先对图像进行高斯滤波(方差为2,高斯窗口为9x9)。2、以特征点为中心,取SxS的邻域窗口。在窗口内随机选取一对(两个)点,比较二者像素的大小,进行如下二进制赋值。其中,p(x),p(y)分别是随机点x=(u1,v1),y=(u2,v2)的像素值原创 2022-01-25 22:55:01 · 326 阅读 · 0 评论 -
(五)FAST特征检测算法
定义:若某像素与其周围领域内足够多的像素点相差较大,则该像素可能是角点步骤:1)一个以像素p为中心,半径为3的圆上,有16个像素点(p1、p2、...、p16)2)定义一个阈值。计算p1、p9与中心p的像素差,若它们绝对值都小于阈值,则p点不可能是特征点,直接pass掉;否则,当做候选点,有待进一步考察;3)若p是候选点,则计算p1、p9、p5、p13与中心p的像素差,若它们的绝对值有至少3个超过阈值,则当做候选点,再进行下一步考察;否则,直接pass掉;4)若p是候选点,则计.原创 2022-01-25 22:52:23 · 1709 阅读 · 0 评论 -
(四)SURF特征提取算法总结
具体流程:构建Hessian,生成所有兴趣点,用于特征提取、构建尺度空间、特征点定位、特征点主方向分配、生成特征点描述子、特征点匹配1、构建Hessian,生成所有兴趣点,用于特征提取当Hessian矩阵的判别式取得局部极大值时,判定当前点是比周围邻域内其他点更亮或更暗的点,由此来定位关键点的位置。一阶导数是相邻像素的灰度差:Dx=f(x+1,y)-f(x,y)二阶导数是对一阶导数的再次求导:Dxx=f(x+1,y)+f(x-1,y)-2*f(x,y)Hessian矩阵判别式中的f(x,原创 2022-01-25 22:49:21 · 674 阅读 · 0 评论 -
(三)Shi-Tomasi角点检测
与Harris角点检测的不同在于在使用矩阵特征值计算角度响应的时候,Shi-Tomasi角点检测时候计算角点响应时使用的公式为:,函数:cv2.goodFeaturesToTrack().原创 2022-01-25 22:36:29 · 1891 阅读 · 0 评论 -
环视拼接-鱼眼镜头模型
原创 2022-01-25 22:13:47 · 3629 阅读 · 0 评论 -
(二)Harris角点算法
1、Harris角点检测原理是利用移动的窗口在图像中计算灰度变化值,其中关键流程包括转化为灰度图像、计算差分图像、高斯平滑、计算局部极值、确认角点。2、构建数学模型,计算移动窗口的灰度差值3、为了减少计算量,利用泰勒级数进行简化公式4、对于矩阵可以进行对称矩阵的变化,假设利用2个特征值进行替代,其几何含义类似下图中的表达。在几何模型中通过判断两个特征值的大小,来判定像素的属性。5、M为梯度的协方差矩阵,在实际应用中为了能够应用更好的编程,定义了角点响应函数R,通过判定R大小来判.原创 2021-12-24 11:52:25 · 1419 阅读 · 0 评论 -
(一) sift图像配准
1.SIFT特征点和特征描述提取import cv2 #这里使用的Python 3 def sift_kp(image): gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) sift = cv2.xfeatures2d_SIFT.create() kp,des = sift.detectAndCompute(image,None) kp_image = cv2.drawKeypoints(gray_image,原创 2021-12-24 11:48:05 · 1003 阅读 · 0 评论