欢迎来到天天文库
浏览记录
ID:10586104
大小:250.50 KB
页数:39页
时间:2018-07-07
《数字图像处理算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、窗体顶端摘要:关于空间域图像处理算法框架,直方图处理,空间域滤波器算法框架的编程心得,使用GDI+(C++)一,图像文件的读取 初学数字图像处理时,图像文件的读取往往是一件麻烦的事情,我们要面对各种各样的图像文件格式,如果仅用C++的fstream库那就必须了解各种图像编码格式,这对于初学图像处理是不太现实的,需要一个能帮助轻松读取各类图像文件的库。在Win32平台上GDI+(C++)是不错的选择,不光使用上相对于Win32GDI要容易得多,而且也容易移植到.Net平台上的GDI+。 Gdiplus::Bitmap类为我们提供了读取各类图
2、像文件的接口,Bitmap::LockBits方法产生的BitmapData类也为我们提供了高速访问图像文件流的途径。这样我们就可以将精力集中于图像处理算法的实现,而不用关心各种图像编码。具体使用方式请参考MSDN中GDI+文档中关于Bitmap类和BitmapData类的说明。另外GDI+仅在WindowsXP/2003上获得直接支持,对于Windows2000必须安装相关DLL,或者安装有Office2003,VisualStudio2003.Net等软件。二,空间域图像处理算法框架 (1)在空间域图像处理中,对于一个图像我们往往需要对其逐个
3、像素的进行处理,对每个像素的处理使用相同的算法(或者是图像中的某个矩形部分)。即,对于图像f(x,y),其中0≤x≤M,0≤y≤N,图像为M*N大小,使用算法algo,则f(x,y)=algo(f(x,y))。事先实现一个算法框架,然后再以函数指针或函数对象(functor,即实现operator()的对象)传入算法,可以减轻编程的工作量。 如下代码便是一例:#ifndefPROCESSALGO_H#definePROCESSALGO_H #include#include namespacensi
4、mgtk{ template boolProcessPixelsOneByOne(Gdiplus::Bitmap*constp_bitmap,Processorprocessor,unsignedintx,unsignedinty, unsignedintwidth,unsignedint
5、height) { if(p_bitmap==NULL) { returnfalse; } if((width+x>p_bitmap->GetWidth())
6、
7、(height+y>p_bitmap->GetHeight())) { returnfalse;
8、 } Gdiplus::BitmapDatabitmapData; Gdiplus::Rectrect(x,y,width,height); if(p_bitmap->LockBits(&rect,Gdiplus::ImageLockModeWrite,pixelFormat,&bitmapData)!=Gdiplus::Ok) { returnfalse;
9、 } pixelType*pixels=(pixelType*)bitmapData.Scan0; for(unsignedintrow=0;row10、 processor(&pixels[col+row*bitmapData.Stride/sizeof(pixelType)])
10、 processor(&pixels[col+row*bitmapData.Stride/sizeof(pixelType)])
此文档下载收益归作者所有