如何对图像的轮廓进行曲线拟合 20C

如题,由于图像轮廓具有大量的数据点,我是用的opencv的findcontours提取的数据点,但是我不知道它的数据点的顺序,那该怎么进行曲线拟合呢?

0

2个回答

我觉得如果要是拟合成直线应该还比较容易实现吧 先用击中击不中算法找到角点然后 把这些角点用直线连接起来 你可以试试行不行 要是拟合成曲线 我觉得大概也需要先找到角点吧 然后检测到连接每两个角点之间的小曲线 然后把他们的曲率半径什么的按权值加一起 有没有希望成功?可以试试 我做过先用hough变换检测直线然后拟合在一起的算法 曲线没试过 我感觉可能能行

0
weixin_40623627
青灯黄卷纯音乐_ 我是新手,我有三个问题。 第一,你说的这个获取角点的算法对数据点的顺序有要求么?现在我就是想不明白findcontours的顺序是怎么样的,我看的曲线拟合算法是需要数据点的顺序的。 第二,提取完角点之后,这个角点的数据点有没有顺序呢? 第三,有什么不要求数据点顺序的曲线拟合算法么?
大约一年之前 回复

我是新手,我有三个问题。
第一,你说的这个获取角点的算法对数据点的顺序有要求么?现在我就是想不明白findcontours的顺序是怎么样的,我看的曲线拟合算法是需要数据点的顺序的。
第二,提取完角点之后,这个角点的数据点有没有顺序呢?
第三,有什么不要求数据点顺序的曲线拟合算法么?

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
图像边缘检测,轮廓拟合
在边缘检测中总会提取出不连续点,或伪轮廓。在这种情况下需要拟合出目标的轮廓,这样可以找到轮廓的数学表达式为后续的特征选取打下基础。博主用coins图像为例,用椭圆方程进行拟合,做出如下实验。1、原图二值化2、边缘检测(sobel算子)3、填补孔洞4、标记连通域5、找到每个连通域坐标6、用每个连通域坐标拟合出椭圆方程7、在二值图像中画出每个椭圆函数%%图像边缘检测和拟合轮廓 clc clear cl...
opencv学习——利用轮廓画矩阵、外接圆、拟合曲线
import cv2 import numpy as npimg = cv2.imread('images/th.jpg')ret,thresh = cv2.threshold(cv2.cvtColor(img,cv2.COLOR_BGR2GRAY),127,255,0) _,contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2
基于c+++Opencv的图像边缘提取及拟合
基于c+++Opencv的图像边缘提取及拟合。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
opencv轮廓提取与轮廓拟合
#include #include #include #include #include using namespace std; using namespace cv; int main() { // Read input binary image Mat image= imread("./binaryGroup.bmp",0); if (!image.data) r
Matlab对二值图像进行轮廓提取
本文主要总结一下在matlab中可用于进行轮廓提取的函数。 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下:%读取原图 im = imread( filepath ); imshow(im); title('原图'); % 转二值
matlab使用opencv (轮廓提取+直线拟合)
I1 = double(I1); [Gx,Gy]=gradient(I1);  G=sqrt(Gx.*Gx+Gy.*Gy)/255;    I2 = rgb2gray(G); figure,imshow(G); I2(I2 I2(I2>=30/255)=1; U= findContours(I2);%轮廓提取
opencv图像处理学习(五十二)——拟合(最小二乘法)
怀着沉痛的心情,拖着疲惫的身心,为了拟合好圆,我实在不得不上最小二乘法了(我上班写的代码不要想了,不可能发在blog里的),现在进入正题。 (1)基本原理 名称 自变量:x …… 函数(因变量):y …… 求以下拟合函数:, 使得...
【Opencv】多轮廓拟合
多种拟合方式:
【opencv轮廓拟合备忘录】
#include <iostream> #include <vector> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std...
利用Matlab编写,记录二值化图像像素点,利用最小二乘法迭代实现直线拟合,并在原二值化图像上面画上直线,并记录直线方程(包括斜率和截距这两个参数)
本程序代码是通过Matlab编写完成的,里面有用高清相机拍摄的图片提取的二值化直线图像,每一幅图像都有几个MB;虽压缩包只有几十kb,但功能完善,没有任何问题。通过记录二值化图像像素点,利用设定的距离阈值参数,然后利用距离阈值参数通过最小二乘法迭代来剔除偏差较大的像素点,进而实现直线拟合,并在原二值化图像上面画上直线,记录直线方程(包括斜率和截距这两个参数)。请放心下载,资源没有任何问题。
使用Matlab对二值图像进行轮廓提取
参考资料 [1]
数字图像处理-圆拟合matlab代码
用于图像中圆拟合, 首先读取图像数据,然后二值化,二值化后用canny边缘检测算子检测边缘,把数据记录下了,运用最小二乘法
图像算法---贝塞尔曲线拟合
本文介绍了关于贝塞尔曲线的内容,并给出了完整的C#代码DEMO,跟大家分享一下,希望大家喜欢!
(转载)Python图像处理(7):利用轮廓分块处理
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息在得到绿色植物的前景图像后,我们希望能够进一步标识出其中的棉花植株和杂草。测试图像仍然是它:首先要做的当然是对图像进行分区域处理。在上一步中我们得到了标识绿色植物的二值图像,一个很自然的想法是利用此二值图像的轮廓进行分块。[python] view plain copy ...
python+opencv学习(二)--直线拟合、轮廓检测
import cv2 import numpy as np from matplotlib import pyplot as plt # 直线拟合 def zhixian(): img = cv2.imread("go3.jpg") pary = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图 # findContours接...
图像轮廓的提取
对图像边缘提取,常见的方式是先对图片进行灰度处理,然后再利用图像梯度算法提取出边框。我们先来看效果图   经过处理后的前后对比,可以看到,图形的轮廓已经大致提取了。现在来看实现的代码 using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Lin
Opencv处理图像--轮廓提取
Opencv处理图像--轮廓提取 使用cvfindContours 对图像进行轮廓检测。 #include<iostream> #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> int main() { IplImage* img = cvLoadImage("...
我的OpenCV学习笔记(19):检测轮廓,直线,圆以及直线拟合
检测轮廓时我们使用canny边沿检测算法,这个算法其实也是基于梯度的。但是,与传统的梯度算法求边沿不同的是: 1.它可以精确的定位边沿的位置。通过沿幅角方向检测模值的极大值点,即边缘点,遍历8个方向图像像素,把每个像素偏导值与相邻像素的模值比较,取其MAX值为边缘点,置像素灰度值为0。这样做的结果使得边沿非常细。 2.双阈值检测。通常一个较小的阈值会保留很多边沿,他们中的一部分是没有用的;而一
Opencv 曲线拟合圆
此函数用于拟合一段弧线,求出其圆心和半径。具体原理请参考http://blog.csdn.net/liyuanbhu/article/details/50890587 仅将代码改成了Opencv格式而已。 代码void circleLeastFit(const std::vector<cv::Point2f> points, cv::Point2f &center, double &radius
《OpenCV》Part6 OpenCV3.1.0 用直线拟合图像中的物体
《OpenCV》Part6 OpenCV3.1.0 用直线拟合图像中的物体 1、先来用几个点来拟合出直线, 示例1: #include "cv.h" #include "highgui.h" #include int main(int argc, char* argv[]) { IplImage* img = cvCreateImage(cvSize(500, 500), 8
OpenCV学习之旅6——图像轮廓与图像分割修复(1)
1. 查找并绘制轮廓 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include using namespace cv; using namespace std; //-----------------------------------【宏定义部分】------------
贝塞尔曲线拟合效果非常好
有关三次贝塞尔曲线拟合,拟合效果可控!本资源是来源于外国作者,所以资料的质量非常好,matlab解释很详细明了!
C#版 代码实现 数据拟合,可用于MsChart拟合绘图等
亲测可用,用于MsChart中绘图十分便利   From: http://www.cnblogs.com/cglNet/archive/2012/08/27/2659257.html   /// ///用最小二乘法拟合二元多次曲线 ///例如y=ax+b ///其中MultiLine将返回a,b两个参数。 ///
opencv获取二值化图像轮廓
opencv中提供了获取图像轮廓的接口:cvFindContours stor = cvCreateMemStorage(0); cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint), stor); Number_Object = cvFindContours(dst_bw, stor, &cont,
学习图像处理知识---EmguCV3.4图像--图像边缘检测和轮廓提取(二)
对图像进行轮廓完成后,需进行轮廓进行提取。轮廓提取的结果就是点集-----VectorOfVectorOfPoint  (相当于点集的集合) Namespace:  Emgu.CV.Util基本构造函数:常用基本函数...
OpenCV 对轮廓的绘图与筛选操作总结
OpenCV利用findContours找到图像中的轮廓,根据这些轮廓的特征进行筛选有利于进一步逼近最终的兴趣区域,减少其他算法的时间,提高代码的运行效率,而对轮廓的绘图则可以直观的看到筛选结果。其实绘图的函数在下面的博客中就已经总结过,不过这次换了一个思路重新温习下这些函数,并把他们应用到轮廓的绘图中。 http://blog.csdn.net/chaipp0607/article/detail
C#结合Halcon,对图像(也可以拍照)进行轮廓提取并将其拟合矢量化
这个程序有两种对图像的读取办法,1.打开摄像头拍照提取。2直接读取文件中的图片,并将其轮廓矢量化,保存得到相应的文本数据。
轮廓的提取
对图像的进行轮廓的提取,主要是提取图像的外轮廓
图像处理腐蚀膨胀获得图像轮廓
本程序是关于图像的腐蚀膨胀以获得轮廓的简短程序段
OpenCV学习之旅6——图像轮廓与图像分割修复(2)
1. 使用多边形将轮廓包围 常用的多边形轮廓函数: 1.1 返回外部矩形边界 Rect boundingRect( InputArray points ); 1.2 寻找最小包围矩形 RotatedRect minAreaRect( InputArray points ); 1.3 寻找最小包围圆形 void minEnclosingCircle( InputArra
OpenCV图像金字塔提取图像轮廓
代码位置:13-ImagePyramid.py import cv2 import numpy as np img = cv2.imread('./res/aero3.jpg') imgDown1 = cv2.pyrDown(img) imgDown2 = cv2.pyrDown(imgDown1) imgDown3 = cv2.pyrDown(imgDown2) upImage1 = cv...
opencv,已知一个图像的轮廓,取出图像轮廓里的图//C++
//src是输入图像,dst是取得图像,contours是轮廓,ID是轮廓的序列号 //会不会又被删除了? void get_mask_image(const Mat& src, Mat& dst, vector>& contours, int ID) { if (src.empty()) return; Mat Mask(src.size(), CV_8
数字图像处理实验三 图像轮廓提取与边缘检测
实验三   图像轮廓提取与边缘检测 一、实验目的: 理解并掌握对二值图像进行轮廓提取的相关算法(比如,掏空内部点法),以及用于图像边缘检测和提取的典型微分算子(梯度算子和拉普拉斯算子)。 二、实验环境: 计算机、Windows XP操作系统,Matlab7.0 二、实验内容: 1、根据掏空内部点算法,运用Matlab编程实现二值图像的轮廓提取。 %以下适用于黑色背景白色前景的
曲线拟合的最小二乘法(基于OpenCV实现)的,拟合图像中离散点的拟合直线
今天使用拟合的最小二乘法,求出了给定的一组坐标系上的点对最接近的直线的。   其具体理论如下:    在科学实验数据处理中,往往要根据一组给定的实验数据,求出自变量x与因变量y的函数关系,这是为待定参数,由于观测数据总有误差,且待定参数ai的数量比给定数据点的数量少(即n<m),因此它不同于插值问题.这类问题不要求通过点,而只要求在给定点上的误差的平方和最小.当时,即          (5
图像轮廓的点坐标的提取方法及VC++编程实现
图像轮廓的点坐标的提取方法及VC++编程实现 图像轮廓的点坐标的提取方法及VC++编程实现 图像轮廓的点坐标的提取方法及VC++编程实现 图像轮廓的点坐标的提取方法及VC++编程实现
MATLAB简介+图像轮廓线提取+图像分割技术
包含了MATLAB基础简介,图像轮廓线提取和图像分割技术。内含m文件代码,黏贴即可运行。
贝塞尔曲线拟合
贝塞尔曲线拟合 最近写论文,需要对数据点进行一个拟合,想起以前图形学学的贝塞尔曲线,便整理了一下。 简介(摘自百科) 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。 贝塞尔曲线于196...
OpenCV图像内轮廓填-孔洞填充
图像内轮廓填充通常称为孔洞填充,主要用于目标提取。 [cpp] view plaincopy //test      #include "stdafx.h"   #include "cxcore.h"    #include "cv.h"    #include "highgui.h"         // 内轮廓填充    // 参数
opencv对图像进行高斯平滑和边缘提取
高斯平滑: //对图像进行平滑处理 cvNamedWindow( &amp;quot;smooth-out&amp;quot; ); //当前图像结构的大小,各通道每个像素点的数据类型,通道的总数 IplImage* out = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 3 ); cv...
OpenCV学习28--在图像中寻找轮廓
查找轮廓 什么是轮廓:一个轮廓是由图像中的一系列点组成的,也就是图像中的一条曲线。在OpenCV中一般用序列来存储轮廓信息。序列中的每个元素是曲线中每个点的位置。 关于序列:序列是内存存储器中可以存储的一种对象,序列是某种结构的链表。 下面是序列结构体: typedef sturct CvSeq{ int flags; int header_size; CvSeq *...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 对学生进行组班 对大数据培训