图像图形处理
文章平均质量分 56
图像处理和计算机图形学
Ming Xu
数学和算法编程
展开
-
OpenGL02
【代码】OpenGL02。原创 2024-05-30 21:44:10 · 74 阅读 · 0 评论 -
Gmsh 入门01
使用 gmshAPI 剖分生成网格原创 2024-01-28 20:15:20 · 277 阅读 · 0 评论 -
Jarvis步进法(Jarvis March)凸包算法
这样可以确保在构建的凸包上,点的极角是递增的,最终形成一个逆时针方向的凸多边形。算法的时间复杂度主要取决于对点的排序操作,通常为O(n log n),其中n是点的数量。从点集中选择一个起始点,然后在每一步中选择下一个顶点,该顶点是当前点集中与当前点形成的线段上,极角最小的点。扫描过程: 从起始点开始,选择当前点(假设为p),然后选择下一个点(假设为q),这个点是当前点p与其他点形成的线段上,极角最小的点。选择起始点的过程可以通过遍历点集,找到y坐标最小的点,并在y坐标相同时,选择x坐标最小的点。原创 2024-01-10 09:49:35 · 673 阅读 · 0 评论 -
Graham扫描凸包算法
扫描过程: 从第三个点开始,按照排序后的顺序逐个处理每个点。下面,我将提供一个简单的凸包算法实现,基于Graham扫描算法。Graham扫描算法的基本思想是通过选择一个特殊的起点,将点集按照极角排序,然后通过栈的操作来逐步构建凸包。,其中n是点的数量。该算法的优势在于其相对简单的实现和较好的性能。然而,需要注意的是,在特定情况下,例如存在大量共线点的情况下,算法的性能可能会有所下降。通常选择最下面且最左边的点,以确保算法的稳定性。构建凸包: 扫描完成后,栈中的点就是凸包的顶点,它们按照逆时针方向排列。原创 2024-01-10 09:30:54 · 519 阅读 · 0 评论 -
均匀与准均匀 B样条算法
pt∑i0nPiFiktpti0∑nPiFikt方程中n1n+1n1个控制点,PiP_iPii01⋯ni01⋯n要用到n1n+1n1个kkk次 B 样条基函数FikF_{i, k}Fiki01⋯ni01⋯n, 节点矢量为Tt0t1⋯tnk1Tt0t1⋯tnk1。FiktFikt。原创 2024-01-04 16:30:24 · 1095 阅读 · 0 评论 -
B样条曲线
次的 B 样条基函数的。与节点矢量双精度数组。2. 一次 B 样条,3. 二次 B 样条。原创 2024-01-04 11:23:00 · 918 阅读 · 0 评论 -
有效边表填充算法
按照扫描线从上往下的顺序,依次处理和多边形相交的扫描线,对于当前处理的扫描线找到和它相交的所有边的交点,按照交点横坐标从小到大的顺序,两个两个配对,配对之后填充每对交点之间的像素,所有的扫描线处理完成之后,图形的扫描就结束了。三角形与当前扫描线相交的边称为有效边。在处理一条扫描线时仅对有效边进行求教运算,可以避免与多边形的所有边求交。桶表是一个纵向扫描线链表,链表的长度为多边形所覆盖的最大扫描线数,链表的每个节点称为桶,链接边表。这个图事实上就是 DDA 算法中的。为主轴位移的方向,执行。原创 2024-01-02 23:17:53 · 1401 阅读 · 0 评论 -
椭圆中点算法
椭圆的扫描转换与圆的扫描转换有相似之处,但也有不同,主要区别是椭圆弧上存在改变主位移方向的临界点。瞬时针绘制四分椭圆弧的中点算法,根据对称性可以绘制完整的椭圆。方向上减 1 或 减 0, 取决于中点误差项的值,在区域。而在下一个中点处,不等号改变方向,则说明椭圆弧从区域。显然,在临界点处,法矢量分量的大小发生了变化。的方向递增一个单位,第一个参与判断的中点是。从曲线上的斜率角度来看,在临界点处,斜率为。内,椭圆弧的起点扫描转换后的像素点为。方向为主位移方向,在临界点处,有。内,主位移方向发生变化,由。原创 2023-12-29 08:18:22 · 1158 阅读 · 0 评论 -
Bezier 曲线拼接圆
为了描述复杂物体的轮廓曲线,经常需要将多段 Bezier 曲线拼接起来,并在结合处满足一定的连续性条件。假设两段 三次 Bezier 曲线分别为。使用一段三次 Bezier 曲线绘制拼接圆。两段三次 Bezier 曲线 达到。参考 《孔令德 计算几何算法与实现》, 在这一点处有相同的切线方向,,其控制多边形的顶点分别为。原创 2023-12-26 14:09:40 · 457 阅读 · 0 评论 -
Bezier 曲线
Bezier 曲线 的算法实现原创 2023-12-26 09:52:45 · 530 阅读 · 0 评论 -
WU反走样算法
由离散量表示连续量而引起的失真称为走样,用于减轻走样现象的技术成为反走样,游戏中称为抗锯齿。走样是连续图形离散为想想点后引起的失真,真实像素面积不为 零。走样是光栅扫描显示器的一种固有现象,只能减轻,不可避免。空间混色原理指出,人眼对某一区域颜色的识别是取这个区域颜色的平均值,Wu 反走样算法原理是对理想直线上的任一点,同时用两个不同亮度等级的相邻像素来表示。Wu 反走样算法是对距离进行加权的反走样算法。原创 2023-12-26 09:02:44 · 1375 阅读 · 0 评论 -
圆中点算法
中心在原点,半径为 R 的圆的隐式函数方程为Fxyx2y2−R20把像素上的点的坐标代入上述隐式方程。原创 2023-12-25 11:11:19 · 1034 阅读 · 0 评论 -
OpenGL初识01
GLFW 和 GLAD 库,分别使用。原创 2023-12-25 09:08:39 · 705 阅读 · 0 评论 -
直线中点算法
中点算法是一种浮点数算法,现在的计算机做浮点数运算和整数运算一样快中点算法设计巧妙,不需要取证操作中点算法同样适用于绘制圆和椭圆参考 《计算几何算法与实现》孔令德。原创 2023-12-24 19:35:36 · 908 阅读 · 0 评论 -
Bresenham 算法
1965 年,Bresenham 为数字绘图仪开发了一种绘制直线的算法,该算法同样使用于光栅扫描显示器,被称为 Bresenham 算法。原创 2023-12-24 15:00:28 · 1101 阅读 · 0 评论 -
三次 Bezier 曲线 bern 基函数的形式
Bezier 曲线是三次多项式,称为三次 Bezier 曲线,Bezier 曲线的控制多边形有 4 个控制点,参考 《计算几何算法与实现》孔令德。原创 2023-12-22 14:20:11 · 889 阅读 · 0 评论 -
Bezier 曲线 2D
控制多边形的第一个顶点和最后一个顶点位于曲线上,多边形的第一条边和最后一条边表示了曲线在起点和终点的切矢量方向,其顶点则用于定义曲线的导数,阶次和形状。在工程项目中,最常见的是三次Bezier 曲线,其次数是二次Bezier 曲线,高次Bezier 曲线一般很少用。二次 Bezier 曲线,当 n=2 时,Bezier 曲线的控制多边形有 3 个控制点,三次 Bezier 曲线,当 n=3 时,Bezier 曲线控制多边形有 4 个控制点,, Bezier 曲线是二次多项式,称为二次 Bezier 曲线,原创 2023-12-19 23:10:52 · 955 阅读 · 0 评论 -
OCC gp_Pnt创建点
OCC 创建两个点,旋转,及设置轴镜像。原创 2023-12-18 16:00:15 · 381 阅读 · 0 评论 -
OCC 创建简单几何
使用 OCC 创建 正方体和圆柱体,并且通过布尔运算,切除正方体内的圆柱体,保存 stl 几何模型。原创 2023-12-18 14:54:23 · 527 阅读 · 0 评论 -
DDA 算法
在 CAD (计算机辅助设计)中,算法是一种简单而有效的直线绘制算法,但有时由于浮点运算的误差,可能导致绘制的直线不够精确。在实际应用中,为了提高精度,可能需要采用其他更复杂的算法,如。CAD 算法是指在计算机辅助设计软件中使用的算法,用于实现各种设计和绘图功能,CAD 广泛应用于建筑、机械、电子等领域,可以大大提高设计效率和精度。绘图算法是 CAD 软件的基础,它包括点、线、圆、曲线、等基本图形绘制方法。CAD 算法是计算机辅助设计的算法,几何算法是解决几何问题的算法。算法常被用来绘制直线。原创 2023-12-14 14:46:52 · 323 阅读 · 0 评论 -
QVTK 可视化
【代码】QVTK 可视化。原创 2023-12-13 13:48:51 · 308 阅读 · 0 评论 -
几何对象的凸点集
【代码】几何对象的凸点集。原创 2023-12-04 21:35:07 · 76 阅读 · 0 评论 -
机器视觉 AI 数据集制作
工业中,机器视觉物体分拣时,需要制作,数据集,那么,一般情况下,可以选择几个物体的几张图片,或者视频,将待识别的物体的掩模扣取出来,随机的贴在 传送带背景中,并批量自动的写成 VOC 数据集。使用图像处理的技术手段,将上述的目标的掩模扣取出来,或者使用 ps 的技术扣取掩模均可。原创 2023-11-27 13:44:19 · 192 阅读 · 0 评论 -
【CUDA GPU 实现 Sobel 边缘
【代码】【无标题】原创 2023-11-22 21:36:00 · 95 阅读 · 0 评论 -
VTK坐标系统
#include <vtkAutoInit.h>#include <vtkSmartPointer.h>#include <vtkConeSource.h>#include <vtkCubeSource.h>#include <vtkCylinderSource.h>#include <vtkSphereSource.h>#include <vtkPolyDataMapper.h>#include <vt原创 2021-08-20 13:47:17 · 247 阅读 · 0 评论 -
VTK 纹理映射
//// Created by xuming on 2021/8/10.///* * 纹理映射是创建逼真效果的强大图像工具,其原理是渲染时把二维的图像,“贴” 到物体表面上 * 根据二维图像渲染出丰富多彩的效果图,所以也叫纹理贴图 * 需要待贴图的表面,纹理映射以及纹理坐标 * 纹理映射在 VTK 中就是 vtkImageData的数据集,而纹理坐标则用于控制纹理图在表面的位置。 */#include <vtkAutoInit.h>#include <v原创 2021-08-20 13:08:24 · 283 阅读 · 0 评论 -
VTK三维场景中灯光的设置
三维场景中灯光的设置//// Created by xuming on 2021/8/9.//#include <vtkAutoInit.h>#include <vtkSmartPointer.h>#include <vtkRenderWindow.h> // 显示并渲染 VTK 窗口, 将操作系统与 VTK 渲染引擎连接到一起#include <vtkRenderer.h>#include <vtkRenderWind原创 2021-08-10 13:23:30 · 802 阅读 · 0 评论 -
2021-08-09
#include <vtkAutoInit.h>#include <vtkSmartPointer.h>#include <vtkRenderWindow.h> // 显示并渲染 VTK 窗口, 将操作系统与 VTK 渲染引擎连接到一起#include <vtkRenderer.h>#include <vtkRenderWindowInteractor.h>#include <vtkInteractorStyleTra原创 2021-08-09 17:42:33 · 74 阅读 · 0 评论 -
膨胀、腐蚀
膨胀与腐蚀形态学操作 (morphology operators) -膨胀图像形态学操作,基于形状的一系列图像处理操作的集合,主要是基于集合论的形态数学。形态学有四个基本操作: 腐蚀、膨胀、开、闭。膨胀与腐蚀是图像处理中最常用的形态学操作手段。跟卷积操作类似,假设有图像 A 和结构元素 B,结构元素 B 在 A 上面移动,其中 B 定义其中心为锚点, 计算 B 覆盖下 A 的最大像素...原创 2020-03-16 21:43:55 · 254 阅读 · 1 评论 -
图像模糊-中值滤波、双边滤波
中值滤波统计排序滤波器中值对椒盐噪声有很好的抑制作用原创 2020-03-15 22:09:37 · 735 阅读 · 0 评论 -
图像模糊
模糊原理Smooth/Blur 是图像处理中最简单和常用的操作之一使用该操作的原因之一就是为了给图像预处理时候减低噪声使用 Smooth/Blur 操作其背后是数学的卷积计算g(i,j)=∑i,jf(i+k,j+k)k(k,l)g(i,j) = \sum_{i,j} f(i+k, j+k) k(k, l)g(i,j)=i,j∑f(i+k,j+k)k(k,l)通常这些卷积算子计...原创 2020-03-10 13:27:05 · 163 阅读 · 0 评论 -
绘制形状与文字
绘制形状与文字使用 cv::Point 与 cv::Scalar绘制线,矩形,圆,椭圆等几何形状随机生成与绘制文本相关 API 使用介绍cv::PointPoint 表示 2D 平面上一个点 x, y Point pp.x = 10p.y = 8p = Point(10, 8)cv::ScalarScalar 表示三个元素的向量Scalar(a, b, c) ...原创 2020-03-10 09:24:25 · 88 阅读 · 0 评论 -
增加图像亮度与对比度
调整图像亮度与对比度原创 2020-03-10 08:51:26 · 583 阅读 · 0 评论 -
图像混合
图像混合线性混合操作g(x)=(1−α)f0(x)+αf1(x)g(x) = (1-\alpha)f_0(x) + \alpha f_1(x)g(x)=(1−α)f0(x)+αf1(x)其中 α\alphaα 的取值范围 0~1 之间.相关的 `API(addWeighted)cv::addWeighted(src, # 输入图像 src1 alpha, #...原创 2020-03-09 23:23:27 · 107 阅读 · 0 评论 -
图像操作
读写像素读一个 GRAY 像素点的像素值 (CV_8UC1)Scalar intensity = src.at<uchar>(y, x)或者Scalar intensity = src.at<uchar>(Point(y, x))读一个 `RGB` 像素点的像素值int b = src.at<Vec3b>(row, col)[0];int ...原创 2020-03-03 13:49:24 · 122 阅读 · 0 评论 -
Mat 对象的使用
Mat 对象的使用部分复制: 一般情况下只会复制 Mat 对象的头和指针部分,不会复制数据部分Mat A = imread(src_imagse)Mat B(A) // 只复制完全复制: 如果把 Mat 对象的头部和数据部分一起复制,可以通过以下两个 API 实现.Mat F = A.cone()Mat G;A.copyTo(G)Mat 对象使用四个要素输出图像的...原创 2020-03-02 21:11:38 · 286 阅读 · 0 评论 -
矩阵的掩膜操作
矩阵的掩膜操作矩阵的掩膜操作十分简单, 根据掩膜来重新计算每个像素值, 掩膜 (mask) 也被成为 kernel.通过掩膜操作实现图像对比度提高I(i,j)=5∗I(i,j)−[I(i−1,j)+I(i+1,j)+I(i,j−1)+I(i,j+1)]I(i,j) = 5*I(i,j)-[I(i-1, j) + I(i+1, j)+I(i, j-1)+I(i, j+1)]I(i,j)=5...原创 2020-03-02 17:08:21 · 463 阅读 · 0 评论