对一幅图像添加高斯噪声
參考別人的程序寫的,因為網上對圖像添加高斯噪聲的程序很難找到,我就自己整理出來一份。
#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;
}
總結
以上是生活随笔為你收集整理的对一幅图像添加高斯噪声的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哲学笔记:之:天道性命
- 下一篇: On Premises+Cloud:平滑