图像模式分类
图像模式分类原型匹配模式分类原型匹配涉及将一个未知的模式与一组原型相比,并将一个原型类赋予这个未知的模式,当然这个原型类是与未知模式最相似度。每个原型表示一个独特的模式类,但每个类可能有多个原型。区分不同匹配方法的是用于确定相似性的测度。
最小距离分类器原型匹配模式分类中的最小距离分类器(Minimum Distance Classifier)是一种简单而直观的分类算法,广泛应用于图像处理和模式识别领域。其核心思想是通过计算待分类样本与各个类别原型(即类别中心)之间的距离,将样本归类到距离最近的类别中。
最小分类器的原型向量通常是各个模式类的平均向量$$ m_j = \frac{1}{n_j}\sum_{x \in c_j}^{} x ,\ \ \ \ \ \ \ \ \ j = 1,2…N_c$$式中 $N_c$ 表示类数,$n_j$ 是用于计算第 $j$ 个平均向量的模式向量数, $c_j$ 是第 $j$ 个模式类
欧氏距离求相似性,最小分类器计算距离$$D_j(x) = ||x-m_j||,\ \ \ \ \ \ \ \ \ j = ...
特征提取
特征提取边界预处理边界追踪边界追踪是指从图像中提取出目标区域的边界像素点,并按照一定的顺序将这些像素点连接起来,形成闭合的边界。边界追踪通常在二值图像或边缘检测后的图像上进行。步骤:
边缘检测:将目标与背景分开
起始点选择:这个点通常是目标边界上的一个像素,例如目标最左上方的点
从起始点开始,沿着目标的边界向外跟踪。按照预定的搜索顺序(如顺时针),在当前像素点的邻域内搜索下一个边界像素点。将经过的每个像素点位置记录下来,以便最后形成一个边界的坐标点序列。
终止条件:通常是回到起始点
轮廓表示:将记录的坐标点序列连接起来形成轮廓。
链码
弗里曼链码
链码是一种用方向代码序列来描述图像中目标边界的方法。它将边界上的每个像素点与其相邻像素点之间的方向关系编码成一个数字,从而形成一个描述整个边界的数字序列。这种方向数字序列形成的边界称为弗里曼链码。 4 方向链码:右(0)上(1)左(2)下(3) 8 方向链码:右(0)右上(1)上(2)左上(3)左(4)左下(5)下(6)右下(7)
由于链码依赖于起始点的选择,直接使用链码进行边界比较可能会受到起始点的影响。为了减少这种依赖性,通 ...
图像分割
点、线和边缘检测背景知识
导数
一阶导数 $$ \frac{\partial f}{\partial x} = f(x+1) - f(x) $$
二阶导数 $$ \frac{\partial^2 f}{\partial x^2} = f(x-1) - 2f(x) + f(x+1) $$
结论
一阶导数通常产生粗边缘
二阶导数对精细细节(如细线、孤立点和噪声)有更强的响应
二阶导数在灰度斜坡和台阶处会产生双边缘响应
二阶导数的符号可以判断边缘的过渡是由亮到暗(-)还是由暗到亮(+)
孤立点检测点检测应该以二阶导数为基础,即拉普拉斯:$$ \bigtriangledown^2 f(x,y) = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} $$其离散形式:$$ \bigtriangledown f(x, y) = f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1) - 4f(x, y) $$$$ \beg ...
形态学图像处理
形态学图像处理腐蚀和膨胀腐蚀和膨胀是以集合运算为基础的,因此是非线性运算;而卷积是乘积求和,是线性运算。
腐蚀
数学表达:设 $ A $ 为输入图像,$ B $ 为结构元素。腐蚀操作可以表示为:$$A \ominus B = \begin{Bmatrix} z \mid B_z \subseteq A \end{Bmatrix}$$其中:$B_z$ 表示将结构元素 $ B $ 平移到位置 $ z $
原理:
腐蚀操作会侵蚀前景对象的边界,使物体变小。
它通过一个称为结构元素(Structuring Element)的小矩阵在图像上滑动,检查结构元素覆盖的区域。
如果结构元素完全包含在前景区域内,则保留中心像素;否则,移除该中心像素。
膨胀
数学表达:设 $ A $ 为输入图像,$ B $ 为结构元素。膨胀操作可以表示为:$$A \oplus B = \begin{Bmatrix} z \mid (\hat{B_z} \cap A) \neq \emptyset \end{Bmatrix}$$其中:$B_z$ 表示将结构元素 $ B $ 平移到位置 $ z $ ...
图像复原与重构
图像复原与重构图像复原技术的主要目的是以预先确定的目标来改善图像。图像复原是一个客观过程,而图像增强是一个主观过程。图像复原试图利用退化现象的某种先验知识来复原被退化的图像。
图像退化/复原模型
图像退化的定义:
图像的退化是指图像在形成、传输和记录过程中,由于成像系统、传输介质和设备的不完善,使图像的质量下降(变坏)。
图像退化过程被建模为一个退化算子 $H$,该算子与一个加性噪声项共同对输入图像 $f(x,y)$ 进行运算,生成一幅退化图像 $g(x,y)$。若 $H$ 是一个线性位置不变算子,则空间域中的退化图像为:$$g(x,y)=h(x,y)\ast f(x,y) + \eta(x,y) $$
其中:
$h(x,y)$ 是退化函数的空间表示
$\ast$ 表示卷积
由卷积定理可知,空间域中的卷积等同于频率域中的乘积,在频率域中的等效公式为:$$G(x,y)=H(x,y)F(x,y) + N(x,y) $$
其中:
各项大写字母是上式中相应项的傅里叶变换。
滤波器均值滤波器均值滤波是典型的线性滤波算法,它是指在图像上对目 ...
C++学习
C++学习前言最近在学qt,用的是C++,虽然以前大致了解过一点但是早就忘得差不多了,重新复习预习一下。
类定义定义一个类需要使用关键字 class,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。
1234567class Box{ public: double length; // 盒子的长度 double breadth; // 盒子的宽度 double height; // 盒子的高度};
类提供了对象的蓝图,所以基本上,对象是根据类来创建的。声明类的对象,就像声明基本类型的变量一样。下面的语句声明了类 Box 的两个对象:
12Box Box1; // 声明 Box1,类型为 BoxBox Box2; // 声明 Box2,类型为 Box
类成员函数类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。成员函数可以定义在类定义内部 ...
hexo博客迁移云服务器
hexo博客迁移云服务器前言最近搞了个域名,并且用移动网络访问 github pages 太慢了,有时甚至根本上不去,干脆就直接把博客从 github 迁移到国内的云服务器上。
云服务器配置安装 Git 和 Nginx 服务12apt-get updateapt-get install git nginx -y
新建一个 git 仓库的路径并修改权限
123mkdir /var/repo/chown -R $USER:$USER /var/repo/chmod -R 755 /var/repo/
创建远程 git 仓库
123cd /var/repogit init --bare {自定义仓库名name}.git # 例如 git init --bare hexo-source.git
配置 Nginx 文件目录
123mkdir -p /var/www/hexochown -R $USER:$USER /var/www/hexochmod -R 755 /var/www/hexo
修改 Nginx 的 default 文件使得 root 指向刚刚创建的 & ...
基于 Wireguard 的内网穿透
简介WireGuard 是一个易于配置、快速且安全的开源 VPN,它利用了最新的加密技术。目的是提供一种更快、更简单、更精简的通用 VPN。它旨在比 OpenVPN 性能更高。WireGuard 被设计为通用 VPN,可在嵌入式接口和超级计算机上运行,适用于许多不同情况。它最初是为 Linux 内核发布的,现在已跨平台(Windows、macOS、BSD、iOS、Android)并可广泛部署。它目前正在大力开发中,但它可能已经被视为业内最安全、最易于使用和最简单的 VPN 解决方案。
配置安装wireguard软件1apt install wireguard resolvconf -y
开启IP转发,使本节点成为转发服务器
1echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
输入sysctl -p,确认net.ipv4.ip_forward = 1
如果安装失败,考虑是否为 DNS 问题 输入sudo vim /etc/resolv.conf 写入 #nameserver 127.0.0 ...
java学习
环境配置java8 https://www.java.com/en/download/java17 https://bell-sw.com/pages/downloads/#jdk-17-lts
配置环境变量在 “系统变量” 中设置 3 项属性,JAVA_HOME、PATH、CLASSPATH(大小写无所谓),若已存在则点击”编辑”,不存在则点击”新建”。注意:如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序。变量设置参数如下:
变量名:JAVA_HOME
变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根据自己的实际路径配置
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"."
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
注意:在 Windows1 ...
Special Notice
ef376157cad1f05017502dbe0dd31bd522162b83e0ab3cfb0c5fdb2f7d23955d7310388abe892d1a74edbc211937fa679681f91577eeba4554dbc94b24a609da25c31b878ee7ef9e9481fc68da1c64a78632f9747546a34df164883f673e85cbf0f926213121fad30124a5e72dbcdd151fa7b77006bbee83a5a24e37aeb1a75d8587f290eb0fb26f8c6ac667bc9073e8403d6adba91b761c354ffb6cbb9275bec9abd38bc168e7d03a7cd5e0221034898124bb9c6db992f471e8ddef600ca01180f46e49459d5fe1ca368c694345875000d97fc2ecc7637f9c130adb3a4e80141d683dee34cfd228ba35251350b3d825b4db41ebdd4c0055b ...










