图像分割-边缘连接

三种基本方法:
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,一经查实,立即删除!

相关文章

01-图像ROI区域获取

截取部分图像数据 import cv2 def cv_show(name,img):cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()img2 cv2.imread("E:\Jupyter_workspace\study\data/cat.png")#读取照片&#xff0c;第二个参数若为0&#xff0c;则灰度图&#xff1b;若不填或者1…

如何编写测试计划

有以下几个方面需要作考虑&#xff1a; 1. 测试的范围。要测试什么&#xff0c;这是肯定要明确的&#xff0c;即使你知道&#xff0c;你也要写出来&#xff0c;让看这份文档的人知道测试的范围。在确定测试内容的时候&#xff0c;还可以做一个优先级的区分&#xff0c;这样能保…

java clone 序列化_关于Java对象深度Clone以及序列化与反序列化的使用

‍ 我们可以利用clone方法来实现对象只见的复制&#xff0c;但对于比较复杂的对象(比如对象中包含其他对象&#xff0c;其他对象又包含别的对象.....)这样我们必须进行层层深度clone&#xff0c;每个对象需要实现 cloneable接口&#xff0c;比较麻烦&#xff0c;那就继续…

java enummap_Java EnumMap containsKey()方法与示例

java enummapEnumMap类containsKey()方法 (EnumMap Class containsKey() method) containsKey() method is available in java.util package. containsKey()方法在java.util包中可用。 containsKey() method is used to check whether this map has values for the given key e…

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,…

正则基础

http://www.ipc.me/regular_expression_07681.html文章错误&#xff1a; 1 字符集的一些应用 第二个正则少了一个左方括号。 2 字符集的元字符 /[]x]/中的第一个]左边少了一个转义符&#xff0c;在这种情况下转义符还是不能省略的。扩展 1 回车符 换行符 http://www.c…

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;继…

Java FileDescriptor sync()方法与示例

FileDescriptor类sync()方法 (FileDescriptor Class sync() method) sync() method is available in java.io package. sync()方法在java.io包中可用。 sync() method is used to synchronize all the system buffer with the underlying device. sync()方法用于将所有系统缓冲…

windows 7资源管理器崩溃解决方法

最近被频繁的资源管理器explorer崩溃搞得几乎生活不能处理&#xff0c;一打开带有视频的文件夹&#xff0c;就explorer崩溃&#xff0c;要疯了。 日志中含有mpc_mtcontrol.dll 查来查去&#xff0c;没有一个确定的答案&#xff0c;baidu&#xff0c;google都没用&#xff0c;最…

03-对图像进行数值计算和加权融合

数值计算 import cv2img_1 cv2.imread(E:\Jupyter_workspace\study\data/beyond.png) img_2 cv2.imread(E:\Jupyter_workspace\study\data/water2.png)img_1_1 img_1 10 img_1[:2,:,0]#输出前两行就行 img_1_1[:2,:,0]#[h,w,c] img_2[:2,:,0]#[h,w,c](img_1 img_2)[:2,:,…

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…

Java类class forName()方法及示例

类类forName()方法 (Class class forName() method) forName() method is available in java.lang package. forName()方法在java.lang包中可用。 forName() method is used to return the class object for the Class with the given class_name. forName()方法用于返回具有给…

04-图像的阈值操作

对图像的阈值操作 import cv2 import matplotlib.pyplot as pltimg cv2.imread(E:/Jupyter_workspace/study/data/cat.png,1) ret, thresh1 cv2.threshold(img,127,255,cv2.THRESH_BINARY) ret, thresh2 cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) ret, thresh3 c…

java虚拟机内存监控_深入理解JVM虚拟机9:JVM监控工具与诊断实践

本文转自&#xff1a;https://juejin.im/post/59e6c1f26fb9a0451c397a8c本系列文章将整理到我在GitHub上的《Java面试指南》仓库&#xff0c;更多精彩内容请到我的仓库里查看https://github.com/h3pl/Java-Tutorial喜欢的话麻烦点下Star哈文章将同步到我的个人博客&#xff1a;…

详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名

数据库名、实例名、数据库域名、全局数据库名、服务名&#xff0c;这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。 一、数据库名什么是数据库名&#xff1f;数据库名就是一个数据库的标识&#…

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

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

setlenient_Java日历setLenient()方法与示例

setlenient日历类setLenient()方法 (Calendar Class setLenient() method) setLenient() method is available in java.util package. setLenient()方法在java.util包中可用。 setLenient() method is used to set or unset lenient status of date or time interpretations. s…