zzw860823 发表于 2008-4-22 19:22

请教基于轮廓线的三维重建中遇到的问题

鄙人的毕业设计题目,但本人本科阶段没学过matlab,前一阵子又忙着找工作,看了些日子,很困难。早先论坛里有人推荐看 基于ct断层图像的三维重建,略略有些思路,同时碰到一些问题。
1 经过增强滤波等,终于得出边界轮廓,但并不是用文中所说:行扫描,记录八个点等等,而是用edge函数实现的。且了轮廓中有一小圈除之不去,不知是否影响后续处理。
2文中言道:将图2b中的面部边缘轮廓曲线以中心点为极点转换到极坐标系中。我用如下函数实现:

=find(I);
=cart2pol(x, y);

这是我自己胡乱瞎凑的,不知对不对,不对,应该如何做?“中心点为极点”靠什么实现?
3文中“采用12阶傅立叶级数对该图像进行拟合”。这个完全不能明白。如何用12阶傅立叶级数对图像拟合?论坛里曾有人提出用fft,但我搜到的fft都是做傅立叶变换,且没能给出傅立叶级数的系数ai,bi。而后边似乎还要用到这25个傅立叶级数系数。
鄙人入门深浅,所问问题难免幼稚,还望各位方家勿笑。
另,鄙人刚刚注册,于论坛无所贡献,腆颜相求,心实不安。特将搜到一三维体重建程序及我所得图像奉上,这个程序比文中提到的三维体绘制要好一些,但速度较慢,对内存要求较高。望对某些同志有所助益。
for i=2:25
n=strcat(num2str(i-1),'.bmp');
=imread(n);
D(:,:,i)=x;
end
=reducevolume(D,);
D=smooth3(D,'gaussian');
fv=isosurface(x,y,z,D,'noshare');
p1=patch(fv,'FaceColor','green','EdgeColor','none');
isonormals(x,y,z,D,p1);
fvc=isocaps(x,y,z,D,'noshare');
p=patch(fvc,'FaceColor','green','EdgeColor','none');
view(3); axis tight; daspect()
colormap(gray(100))
camlight left; camlight; lighting gouraud

[ 本帖最后由 eight 于 2008-4-22 19:35 编辑 ]

sigma665 发表于 2008-4-22 20:23

回复 楼主 的帖子

第2个从数学上面来说的话,是一个简单的坐标变换,找到点的x,y值,就可以知道它到原点的长度以及方向。
中心点为极点,不知道这个中心点是图像的中心点,还是坐标的原点?
如果这2个重合那也无所谓
不重合的话,你所用的是原点为极点
图像中心点为极点的话,可以参考cart2pol编一个。

其他问题不是相关专业,不懂

zzw860823 发表于 2008-4-23 06:53

回复 2楼 的帖子

谢谢 请问如果不重合,应该怎样用语句实现?

有没有达人解决一下第三个问题啊?抓狂中……

zzw860823 发表于 2008-4-23 12:06

关于第三个问题,今天抓狂的时候忽然发现打开curve fitting tool 的时候在拟合类型里发现了傅立叶,但是最高只有八阶的,而且拟合后的系数ai,bi好像不能直接用。有什么办法吗?
而且要处理百多幅图片,不可能每个都手动拟合,而这种操作还向没法用循环语句实现吧?

问得有些乱,请高手尽量解答。大谢。
页: [1]
查看完整版本: 请教基于轮廓线的三维重建中遇到的问题