以前学习图像处理时,写的函数代码呀!
编程环境:windows下结合opencv库。
enum NOISE_TYPE //图像噪声类型
{
//均匀噪声,高斯噪声,椒盐噪声
NOISE_UNIFORM, NOISE_GAUSSIAN, NOISE_SALT
};
//图像添加噪声 参数A B在不同噪声类型时含义不同 源图像为8位
//1.参数范围为 0 - 255
//2.均匀噪声时,参数A为下界,参数B为上界
//3.高斯噪声时,参数A为高斯均值,参数B为高斯标准差
//4.椒盐噪声时,参数A为盐噪声比例,参数B为椒噪声比例,且0<A+B<100
void AddNoise(IplImage* src, IplImage* dst, NOISE_TYPE noiseType, float fParamA, float fParamB);
//图像添加噪声
void AddNoise(IplImage* src, IplImage* dst, NOISE_TYPE noiseType, float fParamA, float fParamB)
{
if (!src || !dst)
{
return;
}
if (src->nChannels == 3)
{
cvCvtColor(src, dst, CV_BGR2GRAY);
}
CvRNG rng = cvRNG();//初始化随机数生成器
CvMat* pMatNoise = cvCreateMat(src->height, src->width, CV_8UC1);//噪声矩阵
switch (noiseType)
{
case NOISE_UNIFORM:
{
//产生图像大小的均匀分布随机矩阵
cvRandArr(&rng, pMatNoise, CV_RAND_UNI, cvScalar(fParamA), cvScalar(fParamB