OpenCV图像平滑处理
《OpenCV图像处理》
---上机实验报告 3
图像的平滑处理 一、实验名称:
图像的平滑处理
二、实验目的:
1、了解OpenCV中图像的处理功能;
2、使用OpenCV对图像进行平滑处理。
三、实验内容:
1、了解归一化块滤波器、高斯滤波器、中值滤波器和双边滤波器基本理论;
2、使用四种线性滤波器对图像进行平滑处理。 四、实验原理:
载入一张原图像,分别使用归一化块滤波器、高斯滤波器、中值滤波器和双
边滤波器对图像进行平滑处理,运行程序显示平滑图像。
平滑也称模糊,是一项简单且使用频率很高的的图像处理方法;
平滑处理时需要用到一个滤波器,最常用的滤波器是线性滤波器,线性滤波处理的输出
像素值(i.e.g(i,j))是输入像素值(i.e.f(i+k,j+l))的加权和:
h(k,l)称为核,它仅仅是一个加权系数。
五、实验运行环境:
Windows7操作系统,Microsoft Visual C++ 2008 Express Edition
六、实验源代码:
#include
#include
#include
#include
using namespace std;
using namespace cv;
int DELAY_CAPTION = 1500;
int DELAY_BLUR = 100;
int MAX_KERNEL_LENGTH = 31;
Mat src; Mat dst;
char window_name[] = "Filter Demo 1";
int display_caption( char* caption );
int display_dst( int delay );
int main( int argc, char** argv )
{
namedWindow(window_name, CV_WINDOW_AUTOSIZE );
src = imread( "li.jpg", 1 );
if( display_caption( "Original Image" ) != 0 ) { return 0; }
dst = src.clone();
if( display_dst( DELAY_CAPTION ) != 0 ) { return 0; }
if( display_caption( "Homogeneous Blur" ) != 0 ) { return 0; }
for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ) { blur( src, dst, Size( i, i ), Point(-1,-1) );
if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }
if( display_caption( "Gaussian Blur" ) != 0 ) { return 0; }
for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ) { GaussianBlur( src, dst, Size( i, i ), 0, 0 ); if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }
if( display_caption( "Median Blur" ) != 0 ) { return 0; }
for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ) { medianBlur ( src, dst, i );
if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }
if( display_caption( "Bilateral Blur" ) != 0 ) { return 0; }
for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ) { bilateralFilter ( src, dst, i, i*2, i/2 ); if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }
display_caption( "End: Press a key!" );
waitKey(0);
return 0;
}
int display_caption( char* caption )
{
dst = Mat::zeros( src.size(), src.type() ); putText( dst, caption,
Point( src.cols/4, src.rows/2),
CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255) ); imshow( window_name, dst );
int c = waitKey( DELAY_CAPTION );
if( c >= 0 ) { return -1; }
return 0;
}
int display_dst( int delay )
{
imshow( window_name, dst );
int c = waitKey ( delay );
if( c >= 0 ) { return -1; }
return 0;
}
七、实验结果:
八、实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
:
通过本次实验,我又一次学到了一种图像处理的方法,使用OpenCV对图像进行平滑处理,了解归一化块滤波器、高斯滤波器、中值滤波器和双边滤波器基本理论,使用四种线性滤波器对图像进行平滑处理,我熟悉了对图片的平滑处理的的操作和具体代码,写代码期间遇到过很多问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,通过查阅
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
籍和资料都一一改正了过来,总之,代码还是不太熟悉,还有待于进一步提高。