作者ppt1 (.....)
看板C_and_CPP
标题[问题] 请教关於影像处理(杂讯)的问题
时间Sat Oct 24 14:13:27 2009
各位前辈好:
小弟最近在学一些影像,目前在产生杂讯部分遇到一些问题,就是感觉生产出来的
资料似乎有某种规律性。如下所示,我将资料存於*.bmp档,但是好像跟市面上影像处理
书籍里面的图不太相似,不知道问题出现在哪?
麻烦各位前辈帮小弟解惑,因为看了很多文章,试了很久还是差不多(随然pattern有变
,可是看起来还是存在着某个规律性?)
以下为uniform noise 产生出来的结果
(1) 自己写的程式所产生出来的
http://www.wretch.cc/album/show.php?i=Albert0827&b=1&f=1606738797&p=0
(2) 一般书籍上所看到的
http://www.wretch.cc/album/show.php?i=Albert0827&b=1&f=1606738798&p=1
程式码: (避免版面乱,标头与*.bmp读写片段暂时不放)
void main(void)
{
int num, i;
double *ptr1;
num=256*256;
ptr1= new double[num];
srand((unsigned)time(NULL));
for (i=0;i<num; i++)
*(ptr1+i) = uniform(0, 255);
delete [] ptr1;
}
/* Generate a random signal between [x1, x2], where x2>x1*/
double uniform(double x1, double x2)
{
return (x2-x1)*(rand()/double(RAND_MAX))+x1;
}
另外,我有试过用Matlab 的rand()函数去作,不知道它底层是如何去运作的,感觉
效果很好!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.103.111
1F:推 joefaq:rand()会循环改个seed看看 10/24 14:15
2F:→ ppt1:是指在什麽地方改会比较好? 10/24 14:18
3F:→ VictorTom:通常seed会在程式启动时挑一次就够了, 程式有用srand() 10/24 14:21
4F:推 VictorTom:过, 主要是不会每次程式启动时都产生同样的乱数序列吧@@ 10/24 14:22
5F:推 VictorTom:请问您产生uniform乱数後是怎麽使用的??这麽漂亮的规律 10/24 14:25
6F:→ VictorTom:看起来也可能填bmp的时候填坏的@_@" 10/24 14:26
7F:→ ppt1:*bmp存档,我看一下喔..因为之前存取都OK 所以这次没特别注意 10/24 14:28
8F:推 VictorTom:补充一下, 小弟我是指把乱数结果写进BMP的那一步喔:) 10/24 14:31
9F:推 VictorTom:顺便说, rand()值域只在0~32767, 如果嫌不够细的话, 可 10/24 14:36
10F:推 joefaq:刚刚试写了一下 直接rand()很正常 = = 10/24 14:37
11F:→ ppt1:对不起各位,我耍憨了,真的跟VictorTom前辈说的一样,我资料 10/24 14:38
12F:→ VictorTom:以用两个以上rand()拼起来:) 所以现在是OK的意思吗@@" 10/24 14:39
13F:→ ppt1:填错,程式是OK的 10/24 14:39
14F:→ ppt1:刚刚查一下写入*.bmp时,RAW位置 少一个变数 ==" 10/24 14:41
15F:→ ppt1:最後,感谢VictorTom与joefaq两位前辈的帮忙 ^^ 10/24 14:43