自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 3DGS学习(七)—— 自适应高斯密度控制

由于初始化点云可能导致生成高斯在空间中密度过大或过小,3dgs给出一些手段来在学习过程中自适应地调控密度,具体方法有点密集化和点剪枝。

2024-02-25 20:40:48 692

原创 3DGS学习(六)—— 参数更新

旋转四元数的核心思想是,通过对旋转轴上的旋转角度进行编码,以及通过旋转轴的单位向量来表示旋转的方向。旋转四元数的实部(w)用于表示旋转角度的余弦值,而虚部(x, y, z)则表示旋转轴在单位向量上的三个分量。旋转四元数通常表示为q = w + xi + yj + zk,其中w是实部,(x, y, z)是虚部,i、j、k是虚数单位。的梯度,节约了自动微分的成本,具体可以参考3dgs原论文附录部分的梯度回传数学推导部分。根据相机位置和方向向量,计算目标颜色对高斯函数均值的导数;

2024-02-25 19:47:21 1365

原创 3DGS学习(五)—— sfm初始化点云

此部分不是3dgs主要的算法改进部分,只是通过sfm算法处理图片并初始化点云,进行后续操作。

2024-02-25 18:54:45 639

原创 3DGS学习(四)—— 快速高斯光栅化

该过程将3D空间内的3D椭球投影到2D空间中进行渲染,该过程主要对表示椭球的协方差矩阵乘上变换矩阵加以实现。类比到现实生活中,就好像将雪球用力掷向墙壁,啪的一声绽开,在墙上留下了一个中心密集,向四周逐渐变浅变稀疏的雪块。的像素点,我们可以通过视图变化计算出所有在该位置重叠的高斯的深度并排序,最后对排列好的高斯进行alpha融合,返回该像素点最后的颜色值。对于覆盖多个块的高斯,作者复制高斯并为他们分配标识符。确定相机位姿进一步确定视锥体,有利于剔除视锥体以外的部分,防止出现浪费的计算。图片摘自知乎@目难忘。

2024-02-25 18:35:58 1538

原创 3DGS学习(三)—— 球谐函数

球谐函数可以类比泰勒展开,傅里叶级数。都是通过一组不同阶的基函数线性组合而成,只不过傅里叶级数的基函数是三角函数,而球谐函数的基函数是球函数。即正交基为球函数,极坐标即球函数系数。同样就像傅里叶变换拟合曲线一样,球谐函数拟合3d物体时,所用阶数越高,拟合越贴切,但是也有可能出现过拟合的情况。

2024-02-25 13:06:40 1533

原创 3dgs学习(二)—— 3d高斯与协方差矩阵及其几何意义

3d高斯,及3维空间内的正态分布。通过一元正态分布的坐标系图像不难想象,3维空间中的正态分布点集中在一片椭球空间中,各方向长轴取决于各方向正态分布的方差。而协方差矩阵通过计算多元之间的协方差关系,反映了椭球在空间中所呈现的几何形态,具体表现方法见下文。

2024-02-24 19:37:06 1063

原创 3DGS学习(一)—— 基本流程

3DGS学习(一)基本流程通过colmap应用sfm算法初始化点云3d椭球集重建(协方差记录形状信息)(高斯椭球的旋转缩放)球谐函数记录颜色及不透明度信息计算loss并使用梯度下降更新参数快速高斯光栅化(splatting)优化:自适应点云变换pruning (透明度小于一定程度则remove该点云)densification(方差过大 -> 克隆高斯)(方差过小 -> 分割高斯)论文中的伪代码

2024-02-24 18:34:17 548

原创 回型区图像处理2.0(opencv_python实战)

对上述的尝试三进行改进,由于轮廓已经非常清晰,而且可以消除外轮廓外一切干扰信息的影响,因此仅需解决上边缘熔断即可解决问题,为此,我们找到上边缘的两个顶点并进行连线,将内轮廓锁定在内部,并按大小排序挑出。但是这种情况下,内轮廓提取时仍然会受到草地图像的干扰,难以找到准确的内轮廓,进而影响总体的判断,因此我们还需要其他对策应对内轮廓的提取。为了使我的图像处理尽可能的适用于所有的回型坑位置在视野里的情况,无法利用外轮廓与内轮廓的相对位置来判断内轮廓具体是哪一个。

2023-07-13 11:24:43 200

原创 回型区图像处理(opencv实战)

原图如图所示,可以提取出中心的回型区域。使用前面的HSV提取小工具获得数据,修改后面代码中的值就可以获得比较好的效果。而且方便切换场景和光线效果时也能迅速调整。点击图片区域输出对应HSV值,退出程序时返回刚刚点击的HSV的范围(最大值最小值)

2023-07-10 20:08:28 129 1

原创 交互式前景提取使用GrabCut算法(opencv_python学习)

在调用 cv.grabCut() 函数之后,算法会根据给定的参数对图像进行分割,并更新掩膜的值。通常,前景像素被标记为 cv.GC_FGD 或 cv.GC_PR_FGD,背景像素被标记为 cv.GC_BGD 或 cv.GC_PR_BGD。cv.grabCut() 是 OpenCV 中用于执行 GrabCut 算法的函数。该函数可以将输入图像分割为前景和背景。其中,mask 是 cv.grabCut() 函数执行后得到的掩膜,mask2 是提取的前景区域的二值图像。

2023-07-07 22:17:46 344 1

原创 图像分割与Watershed算法(opencv_python学习)

用一种颜色(或强度)标记我们确定为前景或对象的区域,用另一种颜色标记我们确定为背景或非对象的区域,最后用 0 标记我们不确定的区域。函数的返回值 ret 表示总共有多少个连通区域,而 markers 是一个与原始图像大小相同的数组,记录了每个像素所属的连通区域的标签值。应用分水岭算法:通过将标记的图像作为输入,应用分水岭算法来进行最终的图像分割。确定种子点:根据预处理后的图像或特定的标记方式,确定种子点。然后,将 markers 数组中的所有元素加1,目的是将背景区域的标签设为0,前景区域从1开始标签。

2023-07-07 21:37:20 301 1

原创 霍夫变换(opencv_python学习)

霍夫变换是一种常用的图像处理技术,用于检测图像中的直线、圆或其他形状。

2023-07-07 15:25:56 290 1

原创 模板匹配(opencv_python学习)

在OpenCV中,模板匹配是一种在图像中寻找指定模板的技术。它可以帮助我们在一幅图像中找到与给定模板最相似的区域。

2023-07-07 15:04:48 445 1

原创 傅里叶变换(opencv_python学习)

通过使用cv.getOptimalDFTSize()函数,我们可以确保输入图像的尺寸符合傅里叶变换的要求,从而获得更好的计算性能和结果质量。numpy.fft.ifft2():计算二维输入数组的二维逆傅里叶变换(2D IFFT)。numpy.fft.fft2():计算二维输入数组的二维快速傅里叶变换(2D FFT)。numpy.fft.fft():计算一维输入序列的快速傅里叶变换(FFT)。在OpenCV中,cv.dft()函数和cv.idft()函数返回的结果都是与输入图像具有相同大小和类型的复数数组。

2023-07-07 14:33:50 183 1

原创 直方图理解(opencv_python学习)

直方图反投影是一种用于在图像中找到与给定直方图相似度最高的区域的技术。它通过比较测试图像的像素值与给定直方图的对应条目,并将相似度信息映射到输出图像中。它通过重新分配图像的像素值,使图像中的像素值更加均匀地分布在整个范围内,从而增强图像的细节和对比度。该函数接受图像数组、通道索引、掩码(可选)和直方图的参数(如直方图的大小和范围),并返回计算得到的直方图。例如,可以通过查看直方图的峰值来判断图像的主要颜色或亮度。它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应像素数的图。

2023-07-07 12:21:15 62 1

原创 轮廓(opencv_python学习)

OpenCV中,找到轮廓就像从黑色背景中找到白色物体。因此请记住,要找到的对象应该是白色,背景应该是黑色。为了获得更高的准确性,请使用二进制图像。因此,在找到轮廓之前,请应用阈值或canny边缘检测。cv.findCountours()函数findContours()函数是OpenCV中用于查找图像中轮廓的函数。image:输入的二值图像。通常应该是灰度图像,并且要求前景为白色,背景为黑色。mode:轮廓检索模式。指定要查找轮廓的类型。

2023-07-07 12:09:54 733 1

原创 图像金字塔(opencv_python学习)

图像金字塔是一种用于处理图像的多尺度表示方法,可以在不同分辨率下对图像进行分析和处理。其中,高斯金字塔用于图像降采样(缩小),拉普拉斯金字塔用于图像重建。在OpenCV中,cv.pyrUp()和cv.pyrDown()函数用于实现图像金字塔的操作。

2023-07-07 03:20:20 357 1

原创 Canny边缘检测(opencv_python学习)

高阈值用于初始的边缘选取,低阈值用于连接被高阈值选取的边缘上的弱边缘。该步骤会检查每个像素点周围的邻域,判断当前像素是否为沿着梯度方向的局部最大值,如果是,则保留该像素作为边缘点,否则将其抑制。这一步旨在捕捉图像中的边缘信息。通过计算梯度的幅值和方向,可以确定图像中的边缘位置和边缘的方向。Canny边缘检测是一种经典的边缘检测算法,它可以有效地检测图像中的边缘。边缘跟踪:根据双阈值处理后的结果,通过连接强边缘像素,形成完整的边缘线条。函数返回一个包含边缘信息的二值图像,其中白色表示边缘,黑色表示非边缘。

2023-07-07 02:54:43 178 2

原创 图像梯度(opencv_python学习)

如果要检测两个边缘,更好的选择是将输出数据类型保留为更高的形式,例如 cv.CV_16S ,cv.CV_64F 等,取其绝对值,然后转换回 cv.CV_8U。cv.Scharr()函数与cv.Sobel()类似,也用于计算图像的梯度。在边缘检测过程中,通过设置dx=1,dy=0,可以获得图像中水平方向的边缘;cv.Sobel()函数用于计算图像的梯度,即在图像中计算像素点的导数。与Sobel算子相比,Scharr算子在计算梯度时的近似性能更好,因此在处理小物体和细节边缘时通常效果更好。

2023-07-07 02:29:03 209 1

原创 形态学转换(opencv_python学习)

该函数的参数包括结构元素形状(如矩形cv.MORPH_RECT、椭圆形cv.MORPH_ELLIPSE和十字形cv.MORPH_CROSS)和结构元素尺寸。大小:结构元素的大小应该适合目标物体的尺度。试错法:在选择结构元素时,可以尝试不同形状和大小的结构元素,观察形态学操作的效果,并选择最佳的结构元素。需要注意的是,选择结构元素是一项艺术性的任务,取决于特定图像和形态学操作的要求。形状:根据图像中目标物体的形状,选择合适的结构元素形状。功能:通过计算图像的膨胀和侵蚀之间的差异,突出目标物体的边缘。

2023-07-06 22:02:19 79 1

原创 图像平滑(opencv_python学习)

空间高斯函数确保只有附近像素被模糊,而强度差的高斯函数确保只有与中心像素相似的像素被模糊。使用cv2.GaussianBlur()函数可以对图像进行高斯模糊处理,并根据给定的标准差(sigmaX和sigmaY)调整模糊效果的程度。高斯滤波器仅是空间函数,即仅考虑附近像素,而不关注像素之间的差异。2D卷积是一种对图像进行滤波的方法,一般来说,卷积操作可以实现平滑、锐化、边缘检测等不同的图像处理效果,具体取决于卷积核的设计。高斯模糊和均值模糊是两种常用的图像模糊技术,它们在平滑图像的过程中有一些区别。

2023-07-06 21:35:52 196 1

原创 图像阈值(opencv_python学习)

cv2.threshold函数进行Otsu的二值化处理。在函数中,将阈值设为0(该值不会影响Otsu的计算),将阈值类型设置为cv2.THRESH_BINARY + cv2.THRESH_OTSU。它通过分析图像的直方图,找到一个最佳的阈值,以将图像分为前景和背景两部分。自适应阈值化是一种基于局部像素区域确定阈值的阈值处理方法,可以解决图像在不同区域具有不同光照条件的情况下的阈值处理问题,算法基于像素周围的小区域确定像素的阈值。dst:输出的目标图像(可选参数),与源图像具有相同的尺寸和数据类型。

2023-07-06 20:50:29 70 1

原创 图像的几何变换(opencv_python学习)

根据图像处理的需求和场景,可以选择合适的插值方法来调整图像大小。它根据目标像素与原始图像像素的关系,在原始图像的局部区域内进行像素值的平均采样。cv.INTER_CUBIC(双立方插值):双立方插值方法会利用原始图像中最接近目标像素位置的 16 个像素的加权平均值来计算目标像素的值。cv.INTER_LINEAR(双线性插值):双线性插值方法会利用原始图像中最接近目标像素位置的四个像素的加权平均值作为目标像素的值。在 OpenCV 的 resize() 函数中,可以使用不同的插值方法来进行图像的调整。

2023-07-06 16:57:55 167 1

原创 改变颜色空间(opencv_python学习)

HSV颜色空间与常见的RGB颜色空间不同,它的优点在于更符合人类对颜色的感知方式,而不仅仅是简单地使用红绿蓝三原色的组合。饱和度(Saturation)表示颜色的纯度或浓度,是指颜色相对于灰色的强度。HSV是一种常用的颜色空间,它表示色调(Hue)、饱和度(Saturation)和明度(Value)。记住,不同光照条件下的颜色可能会有所不同,因此建议在实际应用中进行一些调整和测试,以确保追踪效果最佳。在HSV中比在BGR颜色空间中更容易表示颜色,我们可以使用它来提取一个有颜色的对象。

2023-07-05 20:30:17 381 1

原创 性能衡量和技术提升(opencv_python学习)

函数返回从参考事件(如打开机器的那一刻)到调用此函数那一刻之间的时钟周期数。因此,如果在函数执行之前和之后调用它,则会获得用于执行函数的时钟周期数。这些命令将自动运行多次以获得更准确的结果,并汇报平均执行时间。在IPython中,你可以使用%timeit或%%timeit魔法命令来进行代码性能的计时和评估。使用总运行始终周期数除以每单位时间的时钟周期数即可获得总运行时间。在这个块中的每个语句都将被计时,并输出每个语句的平均执行时间。函数返回时钟周期的频率或每秒的时钟周期数。

2023-07-05 19:52:55 54 1

原创 图像上的算术运算(opencv-python学习(2))

在这段代码中,我们使用cv.threshold函数并传入cv.THRESH_BINARY参数来进行二值化处理,其中灰度值大于10的像素被设置为255,灰度值小于等于10的像素被设置为0。这意味着只有在两个图像对应位置的像素值都为非零(非黑色)时,结果图像的对应位置的像素值才会被设置为非零值,否则就会设置为零值。这样就将图像分为了两个部分:灰度值大于阈值的区域变为白色(最大值),灰度值小于等于阈值的区域变为黑色(最小值)。因此,经过阈值化后的图像只包含两种颜色,即黑色和白色,形成了一个二值图像。

2023-07-05 19:37:27 56 1

原创 opencv中的图像基本操作(opencv-python学习(2))

array.item()和array.itemset())被认为更好更快,但是它们始终返回标量。如果要访问所有B,G,R值,则需要分别调用所有的array.item()。在图像处理中,每个像素都会由一个或多个数值来表示,这些数值被称为像素的值或像素强度。不同类型的图像可以使用不同的数据类型来存储像素值。注意:cv.split() 是一项耗时的操作(就时间而言)。例:rows 的shape属性为 (5(行数), 图像的列数, 通道数)。类似前面访问五行三列的方式,使用numpy数组索引对图像进行切片操作。

2023-06-16 08:25:10 213 1

原创 轨迹栏作为调色盘(补充opencv-python学习(1))

cv.imshow 函数用于在窗口中显示图像,等待用户输入后使用 esc 键来退出程序。该程序通过调用 cv.getTrackbarPos。函数创建了一张黑色图像以及对应窗口,并通过 cv.createTrackbar 函数创建了三个轨迹条和一个开关。在进入主循环后,程序使用。该代码使用了 OpenCV 库实现了一个可通过调整 RGB 颜色值来实时预览效果的界面。程序中使用 np.zeros。函数获取当前颜色值,并将其转换为 [b,g,r] 格式进行显示。函数用于获取目标轨迹栏此时的指针在轨迹栏中的取值。

2023-06-15 23:29:09 48 1

原创 opencv-python入门学习(1)

opencv-python的入门学习(1)

2023-05-28 21:27:16 1133 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除