对一幅图像添加高斯噪声

参考别人的程序写的,因为网上对图像添加高斯噪声的程序很难找到,我就自己整理出来一份。

#include "cv.h"  
#include "highgui.h"  
int main()
{
IplImage *img = cvLoadImage("1404.jpg");//原图
cvNamedWindow("Origion"); cvShowImage("Origion", img);


IplImage *img_cvt = cvCloneImage(img);//用来进行对原图像的转换
IplImage *sig= cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);//用来存储单通道图像
IplImage *noise = cvCreateImage(cvGetSize(img), IPL_DEPTH_32F, 1);//存放噪声图像
IplImage *Gimg = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);//添加高斯噪声的图像;
CvRNG rng = cvRNG(-1);
cvCvtColor(img, img_cvt, CV_BGR2YCrCb);//色彩空间转换;
cvSplit(img_cvt, sig, 0, 0, 0);//将图像分解到单通道,一幅灰度图像

cvRandArr(&rng, noise, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(20)); //生成噪声图像 
cvNamedWindow("noise"); cvShowImage("noise", noise);//显示噪声图像;


cvAcc(sig, noise);//相当于noise=y+noise,完成对图像的噪声添加
cvConvert(noise, sig); //将图像sig转换为矩阵noise;
cvMerge(sig, 0, 0, 0, img_cvt); //split的逆运算,图像融合,结果放在img_cvt
cvCvtColor(img_cvt, Gimg, CV_YCrCb2BGR); //将图像变回RGB 
cvNamedWindow("gaussian image"); 
cvShowImage("gaussian image",Gimg);  


cvWaitKey();
cvReleaseImage(&img);
cvReleaseImage(&img_cvt);
cvReleaseImage(&sig);
cvReleaseImage(&noise);
cvReleaseImage(&Gimg);
cvDestroyAllWindows();
return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值