资源简介

自己编写的多种去噪方式对比,主要针对椒盐噪声做示例,实现了一种高水平论文中的去噪方法,利用ostu算法寻找阈值,基于阈值分割进行降噪

资源截图

代码片段和文件信息


#include    
#include   
#include 
#include 
#include 
using namespace cv;
using namespace std;

//***************Otsu算法通过求类间方差极大值求自适应阈值******************  
int OtsuAlgThreshold(const Mat image);
Mat addSaltNoise(Mat srcImage int n);//添加椒盐噪声
Mat medianBlurdenoise(Mat img int n);//中值滤波(n*n滤波)
double getPSNR(const Mat& I1 const Mat& I2);//得到图像的峰值信噪比(PSNR)
double Nc(IplImage* src IplImage* key);//NC指标
int* OTSU_img_PART(Mat img int A int B);//求范围内的OSTU
uchar Median(uchar n1 uchar n2 uchar n3 uchar n4 uchar n5
uchar n6 uchar n7 uchar n8 uchar n9);//取中值函数
void MedianFlitering(const Mat &src Mat &dst int down int up);//有范围的中值滤波
Mat fiter_around(Mat src);//对一周进行滤波替换

int main(int argc char *argv[])
{

Mat src = imread(“12.png“);
Mat dstend_image;
//imshow(“SoureImage“ src);
cvtColor(srcdst CV_RGB2GRAY);
//imshow(“gray_image“ dst);
Mat Salt_img = addSaltNoise(dst3000);
imshow(“Salt_img“ Salt_img);

int *value_down = OTSU_img_PART(Salt_img 0 50);
cout << “OTSU_[050]:“ << value_down[0] << endl;
cout << “x_down:“ << value_down[2] << endl;



int *value_Top = OTSU_img_PART(Salt_img 200 255);
cout << “OTSU_[200255]:“ << value_Top[0] << endl;
cout << “x_top:“ << value_Top[1] << endl;

double D T;
double w = 0.2;
D = value_down[0] * w + value_down[2] * (1 - w);
T = value_Top[0] * w + value_Top[1] * (1 - w);
cout << “阈值D:“ << D << endl;
cout << “阈值T:“ << T << endl;

MedianFlitering(Salt_img end_image (int)D(int)T);
Mat finalimage = fiter_around(end_image);
imshow(“final_image“finalimage);
//imshow(“end_image“ end_image);
//Mat image=addSaltNoise(src 9000);
//imshow(“noiseimage“ image);
//double maxpsnr = getPSNR(src image);
//cout << “噪声峰值信噪比为: “ << maxpsnr << endl;


Mat median_img3 = medianBlurdenoise(Salt_img 3);
//imshow(“中值滤波3“ median_img3);
double median_psnr3 = getPSNR(dst median_img3);
cout << “3*3中值滤波后峰值信噪比为:“ << median_psnr3 << endl;

Mat median_img5 = medianBlurdenoise(Salt_img 5);
//imshow(“中值滤波5“ median_img5);
double median_psnr5 = getPSNR(dst median_img5);
cout << “5*5中值滤波后峰值信噪比为:“ << median_psnr5 << endl;

Mat median_img7 = medianBlurdenoise(Salt_img 7);
//imshow(“中值滤波7“ median_img7);
double median_psnr7 = getPSNR(dst median_img7);
cout << “7*7中值滤波后峰值信噪比为:“ << median_psnr7 << endl;


double final_psnr = getPSNR(dst end_image);
cout << “OTSU峰值信噪比为:“ << final_psnr << endl;


double final_psnr2 = getPSNR(dst finalimage);
cout << “OTSU2峰值信噪比为:“ << final_psnr2 << endl;
//Mat imageOutput;
//Mat imageOtsu;
//int thresholdValue = OtsuAlgThreshold(dst);
//cout << “类间方差为: “ << thresholdValue << endl;
//threshold(dst imageOutput thresholdValue 255 CV_THRESH_BINARY);
//threshold(dst imageOtsu 0 255 CV_THRESH_OTSU); //Opencv Otsu算法  
//////imshow(“SoureImage“image);  

//imshow(“Output Image“ imageOutput

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-11-30 08:28  Image Denoising\
     文件      616791  2017-11-13 23:19  Image Denoising\12.png
     文件      322615  2017-11-30 00:15  Image Denoising\30000salt.png
     文件      203345  2017-11-30 00:16  Image Denoising\30000salt_3fiter.png
     文件      155787  2017-11-30 00:16  Image Denoising\30000salt_5fiter.png
     文件      133220  2017-11-30 00:17  Image Denoising\30000salt_7fiter.png
     目录           0  2017-11-30 08:28  Image Denoising\Debug\
     文件      104960  2017-11-30 23:03  Image Denoising\Debug\Image Denoising.exe
     文件      717320  2017-11-30 23:03  Image Denoising\Debug\Image Denoising.ilk
     文件     2355200  2017-11-30 23:03  Image Denoising\Debug\Image Denoising.pdb
     目录           0  2017-11-30 08:28  Image Denoising\Image Denoising\
     文件      616791  2017-11-13 23:19  Image Denoising\Image Denoising\12.png
     文件       55319  2017-10-29 21:03  Image Denoising\Image Denoising\123.jpg
     目录           0  2017-11-30 08:28  Image Denoising\Image Denoising\Debug\
     文件        2409  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.log
     目录           0  2017-11-30 08:28  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\
     文件       55560  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\CL.read.1.tlog
     文件         664  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\CL.write.1.tlog
     文件         191  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\Image Denoising.lastbuildstate
     文件        2260  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\cl.command.1.tlog
     文件        6456  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\link.command.1.tlog
     文件        5570  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\link.read.1.tlog
     文件         620  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\Image Denoising.tlog\link.write.1.tlog
     文件      330610  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\image_denoising.obj
     文件      879616  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\vc120.idb
     文件     1363968  2017-11-30 23:03  Image Denoising\Image Denoising\Debug\vc120.pdb
     文件        4798  2017-11-13 23:11  Image Denoising\Image Denoising\Image Denoising.vcxproj
     文件         956  2017-11-13 23:11  Image Denoising\Image Denoising\Image Denoising.vcxproj.filters
     文件       12888  2017-11-30 23:23  Image Denoising\Image Denoising\image_denoising.cpp
     文件    13369344  2017-11-30 23:23  Image Denoising\Image Denoising.sdf
     文件         991  2017-11-13 23:05  Image Denoising\Image Denoising.sln
............此处省略17个文件信息

评论

共有 条评论