**********关于点阵到矢量再到点阵的问题;涉及B样条曲线的拟合!**********(300分)

  • 主题发起人 主题发起人 卷起千堆雪tyn
  • 开始时间 开始时间

卷起千堆雪tyn

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在得到一幅图象中某个图形的轮廓,比如说是一个六边形,有6个端点;
现在我想利用B样条曲线对这个六边形进行拟合,也就是说利用B样条曲线的
N多个控制点,来描述出这个点阵化的六边形,进而达到矢量化的目的。
这样,我就可以对矢量图形进行缩放,减少失真;
最后再转化回到点阵。
 
我也需要这问题。
对于有价值的解答,我向来慷慨解囊;200分!
 
您的点阵大小是多少? 我读大学的时候还是 CCDOS 的时代,曾经用 24x24 点阵汉字库
输出矢量汉字图形到绘图仪上。

B样条曲线有个缺点就是拟合后的曲线不经过特征点。
 
to yysun:
谢谢指点。
B样条曲线与BEZIER曲线一样,的确不经过控制点;
我现在已经实现了反求控制点地计算,可以精确的通过控制点。
现在的问题是如何将离散的几个点利用B样条曲线来拟合,
使最终的实际曲线通过这几个离散点;
通过调整B样条曲线的控制点,来缩放矢量图形。
原因就是因为点阵图形的缩放容易产生毛刺,所以想转化为
矢量来控制。
 
对于工程数学有点忘了,我记得有一种拟合是经过特征点的,可能是三次样条.
 
卷起千堆雪tyn:
从点阵得到矢量图形的方法叫:跟踪/trace,有四方向和八方向,图形学中可以查到。
如果是四方向跟踪则容易产生毛刺。
我很感兴趣您所说的“反求控制点”,能详细些吗?

liuzhw:学名好象叫三次多项式移动平均法(记不清了),俗名称:“五点光滑法”。
算法在这里:http://www.delphibbs.com/delphibbs/dispq.asp?lid=202694
 
to yysun:
原来孙老师对计算机图形学这么有研究;其实我现在的问题不是4叉树或者8叉树
的问题;而是利用B样条曲线来拟合离散点,也就是通过改变B样条曲线的控制点
来改变离散点的位置。

反求控制点,就是说:假设你已经知道了4个控制点,那么你可以作出
一条BEZIER曲线,但是这条BEZIER曲线并不经过其中的2个控制点,只是
经过2个端点。如果想让BEZIER曲线经过所有的4个控制点,你就需要根据这
已知的4个控制点来求出相应的另外4个控制点,当然2个端点是保持不变的了。
利用新求出的4个控制点作出的BEZIER曲线就会经过起初的4个控制点。
在“计算机图形学”里有推导公式的,清华大学出版社。

再次对孙老师的指点表示感谢。
 
你要的这两种算法在turbo Pascal 4.0的工具包中有具体的事例
 
酷,一天之内就交流了这么多。

给一个URL以加强魅力指数:http://168.160.224.167/thesis/Giswz64.htm

 
to 吕雪松:
我要研究一下你的那份学报,可能是用BEZIER曲线来拟合的。
多交流。
 
看来我要上幼儿园了。
 
Bezier是在整个周期范围内变化,也就是说你变化一个点,整条曲线都要重新计算,整条
曲线的形状都要变化。样条不是的(好象是三点?)。
 
to 吕雪松:
改变BEZIER的一个控制点,的确会影响整条曲线的形状;
所以想利用B样条曲线来实现。
 
我可以向你们提供一个DLL,还可以
 
关于解决B样条的光滑连续性问题:
在每一点上保证B样条函数的阶数减一阶连续,例如5阶B样条函数,则曲线在每一点上有C4阶连续,
因此该曲线在切矢连续和曲率变化上可获很佳效果。值得注意的是,所输入的型值点数目不得少于
4个,即至少为3阶B样条函数拟合曲线,才可保证曲线C2阶连续。
至于点阵矢量化,我觉得可以参考网络图像新标准SVG的算法,它是一种文本格式的图像。例如一个
实心圆的矢量图像可以这样来生成:“以坐标(50,80)为圆心画一个半径为10个像素的圆,用红色
填充。”而SVG就是采用了这样的指令方式:<svgwidth=“100”height=“200”><circlecx=
“50”cy=“80”r=“10” style=“fill:red”/></svg>
对于Bezier曲线,我觉得可以通过更好的拟合实现平滑通过端点,写过几个关于Bezier的简单程序,
有些心得!
推荐一个网页——http://draw.3322.net/text/webpic.htm


 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部