Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用傅里叶描述子逼近形状边界_C++_Image Processing_Fft_Approximation_Boundary - Fatal编程技术网

C++ 用傅里叶描述子逼近形状边界

C++ 用傅里叶描述子逼近形状边界,c++,image-processing,fft,approximation,boundary,C++,Image Processing,Fft,Approximation,Boundary,我试图用傅立叶描述子来近似形状边界。我知道这是可以做到的,因为我在课堂上了解到了这一点,并从多个来源中读到了这一点 为了获得(x,y)坐标边界的傅里叶描述符,我执行以下操作: 1) 将(x,y)坐标转换为x+iy形式的复数 2) 将这组新数字输入一维傅里叶变换 3) 输出是傅里叶描述符 为了近似边界,我只需移除(设置为零)高频,然后应用傅里叶逆变换,然后将复数转换回(x,y)坐标,然后从这组新坐标重建图像。我的项目的目标是,根据我设置为零的术语的数量,找出我能多么好地逼近边界 我的问题是,每当我

我试图用傅立叶描述子来近似形状边界。我知道这是可以做到的,因为我在课堂上了解到了这一点,并从多个来源中读到了这一点

为了获得(x,y)坐标边界的傅里叶描述符,我执行以下操作: 1) 将(x,y)坐标转换为x+iy形式的复数 2) 将这组新数字输入一维傅里叶变换 3) 输出是傅里叶描述符

为了近似边界,我只需移除(设置为零)高频,然后应用傅里叶逆变换,然后将复数转换回(x,y)坐标,然后从这组新坐标重建图像。我的项目的目标是,根据我设置为零的术语的数量,找出我能多么好地逼近边界

我的问题是,每当我将任何一个频率设置为0时,我的输出图像都非常小,并且显示为非常奇怪的模式

我在下面举了一个例子。输入图像是一个正常的正方形。给出的第一个输出图像是使用所有傅里叶描述符重建图像。请注意,整个边界并不存在,因为边界像素的数量被采样到256,并且在输出时我没有连接点。还要注意,输出被转换到左下角,这是有意的。第二个输出图像是当我只使用前128个频率时

有人知道为什么会这样吗

编辑:第一次在此处放置图像时,不确定它们为什么没有显示。。以下是链接:



这里还有一个,它从第5页的末尾开始。

你得到的结果是,如果你扔掉低频而不是高频,你会得到预期的结果。你确定哪个频率是哪个频率吗?

在输入傅里叶变换之前,我会尝试将图像坐标标准化为[0,1]间隔,然后在输出处进行非标准化。看起来精度正在下降,但似乎与傅里叶变换无关,因为第一个输出看起来是正确的。你试过另一张照片吗?我会建议一些不对称的东西。除了图像的比例,这会影响结果吗?我真的不知道怎么做..我试过两张其他的图片,一张是圆形的,另一张是不完美的t形,当我使用所有的描述符时,这两张都很好,但当我使用少于所有的描述符时,这两张都是非常错误的。显然低频是最后几个描述符,而不是前几个。。。我刚刚颠倒了频率归零,现在工作正常,谢谢!只是意识到我又错了,在数组中间的描述符是低频率,所以我把它们从中心向外调零,现在效果好多了。