【数字图像处理】轮廓提取与内边界跟踪算法
轮廓提取
轮廓提取:对于一副二值化图像,物体与背景分开,如果背景是白物体,物体为黑的话,我们可以采用掏空内部点法进行轮廓提取。
具体算法如下:
首先开辟新的内存空间,然后遍历图像,如果8个邻域像素都和中心点不相同,则对新的内存空间的该点进行置值。
这里原图背景是白,物体为黑的,新的内存空间全部置为白,对原图像的每点进行判断,如果8个邻域像素都和中心点不相同,则将内存缓冲区中的该点置为黑。
边界跟踪算法
基于边缘的分割常用方法之一,用于区域已分出(二值或已标注),但边界未知的情况。
首先在图像中找到一个边界点,然后从这个边界点出发,按照某种策略寻找下一个边界点,以此跟踪出目标边界。
对于边界跟踪法,重要的是三个部分,边界的起始点、搜索规则(边界判别准则),搜索终止条件。
- 起始点:确定边界的起始搜索点,起始点的选择很关键,对某些图像,选择不同的起始点会导致不同的结果。
- 搜索规则(边界判别准则):确定合适的边界判别准则和搜索准则,判别准则用于判断一个点是不是边界点,搜索准则则指导如何搜索下个边缘点。
- 搜索终止条件:确定搜索的终止条件。
这里搜索终止条件对于封闭轮廓和非封闭轮廓有不同的处理:
封闭轮廓:
直至跟踪的后续点回到起始点。
非封闭轮廓:
待续。。。
我们这里对封闭轮廓的跟踪算法进行讨论,具体算法如下:
1.找到起始点,记录该点
2.初始跟踪方向为左上方0方向
3.判断该点是否为目标点,是则把该置为新的跟踪的起始点
4.将找到该点目标点的方向逆时针旋转90度,作为新的跟踪方向,继续检测新的跟踪方向上的点
5.若不是目标点,则沿顺时针旋转45度,一直找到目标点
6.找到目标点后,在当前跟踪方向的基础上,逆时针旋转90度作为新的跟踪方向,用同样的方法跟踪下一个边界点
7.直到回到起始点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?