三次贝塞尔方程拟合完曲线后毛刺特别多是为什么

青灯黄卷纯音乐_ 2018-04-17 08:49:03
第一张图是Canny边缘检测的图,第二张是拟合后的图,轮廓点保存为PLT文件,第三张图是放大的图,全是毛刺。。按理说做完拟合不应该很光滑的么,可是怎么那么多毛刺
...全文
1415 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
NinjaYinJey 2018-07-04
  • 打赏
  • 举报
回复
引用 7 楼 weixin_40623627 的回复:
什么叫获取的多项式变量错误,我是把一副单像素闭合曲线进行轮廓点提取后(findcontour),把这些数据点代入三次贝赛尔曲线的方程,但后来对做完插值的点进行了四舍五入。。。


就是字面意思,你要先理解贝塞尔方程意义,不然我建议使用初中求弧公式更适合。
  • 打赏
  • 举报
回复
引用 6 楼 YinJey_YaDaun 的回复:
因为获取的多项式变量错误,所以计算错误而出现毛边。


什么叫获取的多项式变量错误,我是把一副单像素闭合曲线进行轮廓点提取后(findcontour),把这些数据点代入三次贝赛尔曲线的方程,但后来对做完插值的点进行了四舍五入。。。
NinjaYinJey 2018-06-23
  • 打赏
  • 举报
回复
因为获取的多项式变量错误,所以计算错误而出现毛边。
赵4老师 2018-04-25
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
参考OpenCV approxPolyDP函数的实现。
上一页 目 录 下一页 ApproxPoly ApproxPoly 用指定精度逼近多边形曲线 CvSeq* cvApproxPoly( const void* src_seq, int header_size, CvMemStorage* storage, int method, double parameter, int parameter2=0 ); src_seq 点集数组序列 header_size 逼近曲线的头尺寸 storage 逼近轮廓的容器。如果为 NULL, 则使用输入的序列 method 逼近方法。目前仅支持 CV_POLY_APPROX_DP , 对应 Douglas-Peucker 算法. parameter 方法相关参数。对 CV_POLY_APPROX_DP 它是指定的逼近精度 parameter2 如果 src_seq 是序列,它表示要么逼近单个序列,要么在 src_seq 的同一个或低级层次上逼近所有序列 (参考 cvFindContours 中对轮廓继承结构的描述). 如果 src_seq 是点集的数组 (CvMat*) , 参数指定曲线是闭合 (parameter2!=0) 还是非闭合 (parameter2=0). 函数 cvApproxPoly 逼近一个或多个曲线,并返回逼近结果。对多个曲线的逼近,生成的树将与输入的具有同样的结构。(1:1 的对应关系). 收录时间:2007年7月18日,21点39分 编辑时间:2007年7月18日,21点39分
hhhh63 2018-04-24
  • 打赏
  • 举报
回复
DirectX2D 启用平滑功能
  • 打赏
  • 举报
回复
引用 2 楼 hhhh63 的回复:
用D2D就好了
D2D是什么。。。
hhhh63 2018-04-24
  • 打赏
  • 举报
回复
用D2D就好了
赵4老师 2018-04-18
  • 打赏
  • 举报
回复
参考OpenCV approxPolyDP函数的实现。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧