⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_49487.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:49487 发表者:丁丁当当 发表日期:2003-08-11 10:50:41
<br>主题:傅立叶变换代码中问题
<br>内容:我在做图象的傅立叶变换,其中部分变换的代码如下:<BR><BR>BOOL WINAPI Fourier(LPSTR lpDIBBits, LONG lWidth, LONG lHeight,complex&lt;double&gt; *FD,complex&lt;double&gt;*TD)<BR>{<BR><BR>// 指向源图像的指针<BR>unsigned char* lpSrc;<BR><BR>// 中间变量<BR>double dTemp;<BR><BR>// 循环变量<BR>LONG i;<BR>LONG j;<BR><BR>// 进行付立叶变换的宽度和高度(2的整数次方)<BR>LONG w;<BR>LONG h;<BR><BR>int wp;<BR>int hp;<BR><BR>// 图像每行的字节数<BR>LONG lLineBytes;<BR><BR>// 计算图像每行的字节数<BR>lLineBytes = WIDTHBYTES(lWidth * 8);<BR><BR>// 赋初值<BR>w = 1;<BR>h = 1;<BR>wp = 0;<BR>hp = 0;<BR><BR>// 计算进行付立叶变换的宽度和高度(2的整数次方)<BR>while(w * 2 &lt;= lWidth)<BR>{<BR>w *= 2;<BR>wp++;<BR>}<BR><BR>while(h * 2 &lt;= lHeight)<BR>{<BR>h *= 2;<BR>hp++;<BR>}<BR><BR>// 分配内存<BR>// complex&lt;double&gt; *TD = new complex&lt;double&gt;[w * h];<BR>// complex&lt;double&gt; *FD = new complex&lt;double&gt;[w * h];<BR><BR>// 行<BR>for(i = 0; i &lt; h; i++)<BR>{<BR>// 列<BR>for(j = 0; j &lt; w; j++)<BR>{<BR>// 指向DIB第i行,第j个象素的指针<BR>lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;<BR><BR>// 给时域赋值<BR>TD[j + w * i] = complex&lt;double&gt;(*(lpSrc), 0);<BR>}<BR>}<BR><BR>for(i = 0; i &lt; h; i++)<BR>{<BR>// 对y方向进行快速付立叶变换<BR>FFT(&amp;TD[w * i], &amp;FD[w * i], wp);<BR>}<BR><BR>// 保存变换结果<BR>for(i = 0; i &lt; h; i++)<BR>{<BR>for(j = 0; j &lt; w; j++)<BR>{<BR>TD[i + h * j] = FD[j + w * i];<BR>}<BR>}<BR><BR>for(i = 0; i &lt; w; i++)<BR>{<BR>// 对x方向进行快速付立叶变换<BR>FFT(&amp;TD[i * h], &amp;FD[i * h], hp);<BR>}<BR><BR>// 行<BR>for(i = 0; i &lt; h; i++)<BR>{<BR>// 列<BR>for(j = 0; j &lt; w; j++)<BR>{<BR>// 计算频谱<BR>dTemp = sqrt(FD[j * h + i].real() * FD[j * h + i].real() + FD[j * h + i].imag() * FD[j * h + i].imag()) / 100;<BR><BR>// 判断是否超过255<BR>if (dTemp &gt; 255)<BR>{<BR>// 对于超过的,直接设置为255<BR>dTemp = 255<BR>}<BR>...........<BR><BR><BR>我的问题是,其中计算频谱语句中的“/100”是怎么来的,这是书上提供的代码,另外的沃尔什变换也是如此(dTemp = fabs(T[i * w + j]*1000);),如果搞不懂这些,也没法实现反变换,可能是我基础理论学的不好,特向各位请教,多谢!<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:jearome 回复日期:2003-08-11 17:16:36
<br>内容:其实“/100”相当于一个比例因子,如果不除一个比例因子你将看不到频谱的概貌。<BR>比如:我们在指教坐标系中画一个长,宽,高都为1米的三角形,如果我们坐标刻度选1米那么我们的坐标系至少为1平方米时,才能看到着个三角形,同样如果你刻度选0.5米,那么一平方米的坐标将看不到三角形的全貌。<BR>不知道这样解释<BR>你明白吗?<BR><BR>你是学生吗,我是一名学生,刚刚开始看图象处理,还有vc<BR>以后有不会的,还请多多指教。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -