图像分割-边缘连接

三种基本方法:
1:局部处理
2:区域处理
3:使用霍夫变换的全局处理

局部处理

根据预定的规则,将所有相似点连接起来。
用于确定边缘像素相似性的两个主要性质:1、梯度向量的幅度2、梯度向量的角度
幅度准则
角度准则
由于要对每个点的邻点进行运算,计算量大。
优化如下:
步骤
例如,关注于水平与竖直方向的边缘连接,旋转90度,然后再旋转回来。 在要求多方向角度连接时,把3、4步骤组合成单个放射状扫描过程。 问题是3、4在每行中连接1两端的0.感觉不是很靠谱。相当于将扫描出的边界描粗了。当然这个是由于事先我们有了对某方向的强边缘的要求。
车牌

区域处理机理:

找到所有符合标准的多边形顶点,依次连接这些点。
两个要点:1、两个起始点必须指明2、所有的点必须排序(顺时针或逆时针方向)
关于创建排序的算法要用到边界追踪的知识:https://blog.csdn.net/qq_42604176/article/details/104286331
首先通过分析点间距离判断是开放还是闭合曲线
算法步骤
多边形拟合
算法步骤

霍夫变换

相关链接
公式推导:
公式推导
我的理解:
xy平面上位于同一直线的点映射到ρθ平面上有且仅有两个交点。
曲线族每经过一次交点,说明xy平面有一个像素点在直线上。一般来说我们可以通过设置直线上点的阈值来定义多少条曲线交于一点认为检测到了一条直线
xy平面上邻近的两个像素点,在ρθ平面产生的也是两条贴近的曲线,可能有交点。
曲线c1,c2,c4在xy平面是同一条直线C1上的,所以两个交点a1,a2曲线c3与c2、c4有四个交点,取两个交点坐标的平均为b1,b2,且b1与a1相近,b2与a2相近。 所以我们可以设定一定的阈值,例如b1与a1的|Δρ|<=α,例如b1与a1的|Δθ|<=β,则认为曲线c3对应的像素也在直线C1附近。
matlab绘制
书本的讲解:书本理解
算法描述:算法描述
这个描述言简意赅。
连接
算法步骤:
1、寻找图像的边缘
2、找出所有的边线点
3、进行霍夫变换,Hough Transform
4、霍夫变换后的矩阵,行与上述边界点集相对应,列为每一个点的霍夫转换
5、显示边界线的霍夫空间图像
6、寻找最大值及其在霍夫空间的坐标(通过霍夫空间门限)
7、求解笛卡尔坐标中的线
8、在这条线上补全小于某长度的缝隙。
参考链接:https://blog.csdn.net/lengo/article/details/100586228

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02-对图像进行边界填充

import cv2 import matplotlib.pyplot as pltimg2 cv2.imread("E:\Jupyter_workspace\study\data/cat.png")#读取照片&#xff0c;第二个参数若为0&#xff0c;则灰度图&#xff1b;若不填或者1则彩色图或本身图top_size,bottom_size,left_size,right_size (50,50,…

Windows Phone 7独立存储空间IsolatedStorage

Windows Phone 7的solatedStorage可以用来保存应用程序的数据和设置。结构图如下 一、相关类 1.IsolatedStorageFile类 1&#xff09;描述&#xff1a;表示在独立存储空间中的文件和目录。 2&#xff09;重要属性 long AvailableFreeSpace&#xff1a;IsolatedStorage有效的剩余…

图像分割-阈值处理详解(迭代法、Otsu法、平滑改善法、边缘改进法、分块处理法、局部特性法、移动平均法)

博主联系方式&#xff1a; QQ:1540984562 QQ交流群&#xff1a;892023501 群里会有往届的smarters和电赛选手&#xff0c;群里也会不时分享一些有用的资料&#xff0c;有问题可以在群里多问问。 阈值处理详解基础&#xff1a;基于全局的阈值处理1迭代算法&#xff08;最小概率误…

java 用户控件_C#自定义控件VS用户控件

C#中自定义控件VS用户控件大比拼1 自定义控件与用户控件区别WinForm中&#xff0c;用户控件(User Control)&#xff1a;继承自 UserControl&#xff0c;主要用于开发 Container 控件&#xff0c;Container控件可以添加其他Controls控件自定义控件(Custom Control)&#xff1a;继…

SQL Server存储过程(procedure)应用

用户反映&#xff0c;系统操作日志会使用数据库快速增大&#xff0c;情况可参考下图&#xff0c; 问题分析&#xff0c;整个系统每个页面&#xff0c;都有写记录用户操作代码&#xff0c;修改或禁用这个代码&#xff0c;看来是不可能的。 在原有系统参数表添加一个选项&#xf…

Opencv一维直方图的绘制

下面是我参考《opencv3编程入门》写的绘制一维直方图的代码 using namespace cv; using namespace std; #define byte uchar #define TYEPE_GRAY 0 #define TYEPE_RGB 1 /*--------------------------绘制RGB三色一维直方图-------------------------------------*/ Mat My_R…

颜色缩减 -利用指针、迭代器、动态地址实现访问像素

为什么要使用颜色缩减 在对单通道图像进行处理时&#xff0c;像素的可能值为256个&#xff0c;但处理多通道时&#xff0c;像素的处理就会相当麻烦&#xff0c;其实用这些颜色中具有代表性的一小部分就可以达到同样的效果&#xff0c;所以颜色空间缩减就可以派上用场了。一个信…

PowerShell_9_零基础自学课程_9_高级主题:静态类和类的操作

哈哈&#xff0c;昨天弄了个ubuntu 11.10在虚拟机上运行&#xff0c;发现11.10界面非常绚丽&#xff0c;但是其需要的系统资源非常多&#xff0c;我虚拟机设定内存为512M&#xff0c;1个CPU4个核心&#xff0c; 进入以后发现根本动不了&#xff0c;因此今天我就下载了一个Fedor…

05-图像的平滑处理(不同的滤波操作)

对图像进行平滑处理实则就是对图像进行滤波操作罢了 每张图片都有若干个像素点所构成&#xff0c;滤波操作上就是将照片上的某些部分像素点进行修改从而达到平滑的效果 先展示一下原图 import cv2 img cv2.imread(E:\Jupyter_workspace\study\data/test1.png)cv2.imshow(te…

C++设计模式之Abstract Factory模式

一、功能   提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 二、结构图类厂最基本的结构示意图如下&#xff1a; 在实际应用中&#xff0c;类厂模式可以扩充到很复杂的情况&#xff0c;如下图所示&#xff1a; 三、优缺点 优点&#xff1…

数字图像处理小练习存档1

小练习的题目&#xff1a; 1、读取一张图&#xff0c;分解RGB三个通道 /************练习1**********************/ int main() {Mat img1 imread("D:\\opencv_picture_test\\miku2.jpg",2|4); //灰度图if (img1.empty()){printf("Could not find the imag…

06-对图像进行腐蚀操作

形态学中的腐蚀操作一般处理的图像数据为二值的 cv2.erode(img,kernel,iterations 1) kernel表示拿多大的卷积核去腐蚀 iterations表示迭代次数 可以将一些带有毛毛的图像去毛毛化 原图 import cv2 import numpy as npdef show_photo(name,picture):cv2.imshow(name,picture)…

Opencv实现利用滑动条来调整阈值

#include <opencv2/opencv.hpp> #include <iostream>using namespace cv; using namespace std; #define WINDOW_NAME "【程序窗口】" //为窗口标题定义的宏 //*--------------------------【练习】利用滑动条来调整阈值-----------------------------…

07-对图像进行膨胀操作

形态学中的膨胀操作即让照片变得更大&#xff0c;与腐蚀操作互为逆运算 cv2.dilate(erosion,kernel,iterations 1) 第一个参数&#xff1a;图像对象名称 第二个参数&#xff1a;卷积核的大小 第三个参数&#xff1a;迭代次数 此时就可与腐蚀操作进行相结合&#xff0c;腐蚀去毛…

08-开运算和闭运算

开运算和闭运算实则就是将腐蚀操作和膨胀操作结合而已&#xff0c;也就是个先后循序罢了 开运算&#xff1a;先腐蚀再膨胀 闭运算&#xff1a;先膨胀再腐蚀 cv2.morphologyEx(img_open,cv2.MORPH_OPEN,kernel) cv2.morphologyEx(img_close,cv2.MORPH_CLOSE,kernel) 第一个参数…

连通域标记——实现硬币自动计件

前言 在自动计算图像中有几枚硬币的任务中&#xff0c;分离出前景和背景后是否就可以马上实现自动计件&#xff0c;如果可以&#xff0c;如何实现&#xff1f;如果不可以&#xff0c;为什么&#xff1f; 答案是否定的。二值化之后我们的得到的只是前景总像素的多少&#xff0c…

09-梯度运算

梯度运算膨胀操作-腐蚀操作&#xff0c;这里的-操作是图像的减法&#xff0c;可不是简单的加减乘除运算 为了更加形象生动&#xff0c;先将膨胀和腐蚀操作的结果进行合并展示&#xff0c;然后再与梯度运算进行比较 cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel) 第一个参数…

Unity-Shader-渲染队列

Unity-Shader-渲染队列 渲染简介Unity中的几种渲染队列Background (1000)最早被渲染的物体的队列。Geometry (2000) 不透明物体的渲染队列。大多数物体都应该使用该队列进行渲染&#xff0c;也就是Unity Shader中默认的渲染队列。AlphaTest (2450) 有透明通道&#xff0c;需要进…

形态学操作——腐蚀与膨胀

预备知识 结构元&#xff08;SE&#xff09; 1、结构元的中心一般来说是放在其重心位置处&#xff0c;但原则上原点的选择是依赖于你要解决的问题的。 2、对图像操作时&#xff0c;我们要求结构元是矩形阵列。&#xff08;在结构元的基础上添加较少的背景元素实现&#xff09…

10-礼帽与黑帽操作

cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel) 第一个参数&#xff1a;图像对象名称 第二个参数&#xff1a;运算类型TOPHAT为礼帽运算 第三个参数&#xff1a;卷积核的大小 礼帽运算&#xff1a;原始的输入-开运算&#xff08;先腐蚀再膨胀&#xff09; 原始带刺儿&#xff…