| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2116 人关注过本帖
标题:VC++数字图象处理
只看楼主 加入收藏
我爱奶牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-2-3
收藏
 问题点数:0 回复次数:7 
VC++数字图象处理
我是个VC++图象处理的初学者,现在在看人邮版的VC++数字图象处理,现在遇到一个问题,想问问各位高手! 就是  维纳滤波 程序里加了个 srand((unsigned)time(NULL));  只出现了一次,就在程序中间,不知道有什么用! 后来查了一下,知道它是产生随机数的.不过感觉去掉这个srand()程序一样运行啊! 不知道它究竟有什么用? 谢谢!
搜索更多相关主题的帖子: 数字图象 srand 图象处理 随机数 
2007-02-03 22:00
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
维纳滤波   用于消除 固定噪声的。。。 只会用,不会写。

2007-02-05 13:05
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 

如过不加这个函数,那么你每次运行程序得到的随机数都是一样的序列,比如


int s=rand();

count << s;

如果不加,那么,基本上每次运行程序得到的结果是同一一个数字,
加上srand()函数就可以解决这个问题


2007-02-05 13:18
我爱奶牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-2-3
收藏
得分:0 
我也不会写 那个维纳滤波, 上面有个FFT 的程序没看懂,晕~      谢谢拉!可是我加了那个srand() 和不加 都一样啊,程序照样运行,感觉没有什么区别啊! 
2007-02-05 13:34
我爱奶牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-2-3
收藏
得分:0 

有哪位大虾能帮我看看这段 FFT 的程序,我感觉好难啊! 这个好象是一种新的快速傅里叶变换算法,跟以前的我看过的一种算法不同,明显要难多了!

主要是 i2rev 和i3rev 这两个参数不知道是用来做什么的?  谢拉!





BOOL fourn(double * data, unsigned long nn[], int ndim, int isign)
{
int idim;
unsigned long i1,i2,i3,i2rev,i3rev,ip1,ip2,ip3,ifp1,ifp2;
unsigned long ibit,k1,k2,n,nprev,nrem,ntot;
double tempi,tempr;
double theta,wi,wpi,wpr,wr,wtemp;

for (ntot=1,idim=1;idim<=ndim;idim++)
ntot *= nn[idim];
nprev=1;
for (idim=ndim;idim>=1;idim--) {
n=nn[idim];
nrem=ntot/(n*nprev);
ip1=nprev << 1;
ip2=ip1*n;
ip3=ip2*nrem;
i2rev=1;
for (i2=1;i2<=ip2;i2+=ip1) {
if (i2 < i2rev) {
for (i1=i2;i1<=i2+ip1-2;i1+=2) {
for (i3=i1;i3<=ip3;i3+=ip2) {
i3rev=i2rev+i3-i2;
SWAP(data[i3],data[i3rev]);
SWAP(data[i3+1],data[i3rev+1]);
}
}
}
ibit=ip2 >> 1;
while (ibit >= ip1 && i2rev > ibit) {
i2rev -= ibit;
ibit >>= 1;
}
i2rev += ibit;
}
ifp1=ip1;
while (ifp1 < ip2) {
ifp2=ifp1 << 1;
theta=isign*6.28318530717959/(ifp2/ip1);
wtemp=sin(0.5*theta);
wpr = -2.0*wtemp*wtemp;
wpi=sin(theta);
wr=1.0;
wi=0.0;
for (i3=1;i3<=ifp1;i3+=ip1) {
for (i1=i3;i1<=i3+ip1-2;i1+=2) {
for (i2=i1;i2<=ip3;i2+=ifp2) {
k1=i2;
k2=k1+ifp1;
tempr=wr*data[k2]-wi*data[k2+1];
tempi=wr*data[k2+1]+wi*data[k2];
data[k2]=data[k1]-tempr;
data[k2+1]=data[k1+1]-tempi;
data[k1] += tempr;
data[k1+1] += tempi;
}
}
wr=(wtemp=wr)*wpr-wi*wpi+wr;
wi=wi*wpr+wtemp*wpi+wi;
}
ifp1=ifp2;
}
nprev *= n;
}
return true;
}

2007-02-05 13:46
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
以前 你看的傅里叶变换算法 复杂, 用软件 可以实现,但是花费的时间是很多的。。
在实际应用中是 没法承受的,,所以 提出 了一种 快速傅里叶变换算法 。。你可以上网 搜搜它的实现

2007-02-05 13:53
dusx1981
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-6
收藏
得分:0 
srand()用来产生随机数种子
其实严格的说rand()函数产生的是伪随机数
2007-02-06 15:48
我爱奶牛
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-2-3
收藏
得分:0 
谢谢!
2007-02-13 14:19
快速回复:VC++数字图象处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016855 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved