图像中加入随机噪声的问题
大家好,为了生成一幅随机噪声图像,我首先把一幅图像变成全黑图像,然后在上面叠加随机点。我实验的是8位的图像,产生的随机噪声图像却是彩色图像,我想要的是灰度图像才对。不知道大家有没有遇到类似的问题。
我是用GDI+实现对图像像素的读取的,生成随机噪声的方法参考了VisualC++数字图像处理(何斌、马天予等)第十章中的加躁方法。有兴趣的朋友帮我看看什么地方出了问题。
加噪代码如下:
void CCAMdiImgProcDoc::OnRandomNoise()
{
Bitmap* b=m_pBitmap;
if(b->GetPixelFormat()==PixelFormat8bppIndexed)
{
Bitmap* b2;
int width=b->GetWidth();
int height=b->GetHeight();
Rect rect(0,0,width,height);
BitmapData bmData; b->LockBits(&rect,ImageLockModeRead|ImageLockModeWrite,PixelFormat8bppIndexed,&bmData);
byte* p=(byte*) (void*) bmData.Scan0;
int NoisePoint;
int stride=bmData.Stride;
srand((unsigned)time(NULL));//伪随机种子
int nOffset=stride-width;
for(int y=0;y<height;y++)
{
for(int x=0;x<width;x++)
{
NoisePoint=rand()/1024;
p[0]=NoisePoint;
p++;
}
p+=nOffset;
}
b->UnlockBits(&bmData);
m_pBitmap=b;
this->UpdateAllViews(NULL);
return;
}
}
如果对我的完整代码感兴趣的话,我可以把它发给大家。我的邮箱:panzjun123@163.com