椒盐噪声和中值滤波

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Salt-and-pepper noise

1.产生椒盐噪声

在图像中随机选取6000个点,3000设为白色,3000个设为黑色,产生椒盐噪声

%----------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------% #include

#include

#include

void salt(cv::Mat &image,int n)

{

for(int k=0;k

{

int i=rand()%image.cols;

int j=rand()%image.rows;

if(image.channels()==1)

{

image.at(j,i)=255;

}else if (image.channels() == 3) {

image.at(j,i)[0]= 255;

image.at(j,i)[1]= 255;

image.at(j,i)[2]= 255;

}

}//产生3000个白点

for(int k=0;k

{

int i=rand()%image.cols;

int j=rand()%image.rows;

if(image.channels()==1)

{

image.at(j,i)=0;

}else if (image.channels() == 3) {

image.at(j,i)[0]= 0;

image.at(j,i)[1]= 0;

image.at(j,i)[2]= 0;

}

}

}//产生3000个黑点

int main()

{

cv::Mat image;

image = cv::imread("lena.jpg");

salt(image,3000);

cv::namedWindow("WK");

cv::imshow("WK",image);

cv::waitKey(0);

return 1;

}

%----------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------%

2.中值滤波

利用opencv中的cvSmooth对图像进行中值滤波。

%----------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------% #include

#include

#include

int main(){

IplImage * image = cvLoadImage("wks.jpg");

//cvNamedWindow("before");

//cvShowImage("before",image);

IplImage * im_gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1); cvCvtColor(image, im_gray, CV_BGR2GRAY);

cvNamedWindow("Gray");

cvShowImage("Gray",im_gray);

cvSaveImage("im_gray.jpg",im_gray);

IplImage * im_median_filter = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);

cvSmooth(im_gray, im_median_filter, CV_MEDIAN);//默认窗口大小为*3

cvNamedWindow("after");

相关文档
最新文档