欢迎来到天天文库
浏览记录
ID:22838790
大小:890.50 KB
页数:54页
时间:2018-10-31
《[计算机]数字图像处理领域的二十四个典型算法及vc实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、数字图像处理领域的二十四个典型算法及vc实现、第一章一、256色转灰度图二、Walsh变换三、二值化变换四、阈值变换五、傅立叶变换六、离散余弦变换数字图像处理领域的二十四个典型算法及vc实现、第二章七、高斯平滑八、图像平移九、图像缩放十、图像旋转数字图像处理领域的二十四个典型算法及vc实现、第三章 图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。 本文
2、接下来,简单粗略介绍下数字图像处理领域中的24个经典算法,然后全部算法用vc实现。由于篇幅所限,只给出某一算法的主体代码。 ok,请细看。一、256色转灰度图 算法介绍(百度百科): 什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数方法:Gray=(R*30+G*59+B*11)/100 3.移位方法:Gray=(
3、R*28+G*151+B*77)>>8; 4.平均值法:Gray=(R+G+B)/3; 5.仅取绿色:Gray=G; 通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。灰度分为256阶。所以,用灰度表示的图像称作灰度图。 程序实现: ok,知道了什么叫灰度图,下面,咱们就来实现此256色灰度图。这个Convert256toGray(),即
4、是将256色位图转化为灰度图:void Convert256toGray(HDIBhDIB){ LPSTR lpDIB; //由DIB句柄得到DIB指针并锁定DIB lpDIB=(LPSTR)::GlobalLock((HGLOBAL)hDIB); //指向DIB象素数据区的指针 LPSTR lpDIBBits; //指向DIB象素的指针 BYTE* lpSrc; //图像宽度 LONG lWidth; //图像高度 LONG lHeight; //图像每行的字节数 LONG lLineBy
5、tes; //指向BITMAPINFO结构的指针(Win3.0) LPBITMAPINFOlpbmi; //指向BITMAPCOREINFO结构的指针 LPBITMAPCOREINFOlpbmc; //获取指向BITMAPINFO结构的指针(Win3.0) lpbmi=(LPBITMAPINFO)lpDIB; //获取指向BITMAPCOREINFO结构的指针 lpbmc=(LPBITMAPCOREINFO)lpDIB; //灰度映射表 BYTEbMap[256]; //计算灰度映射表(保存各个颜色
6、的灰度值),并更新DIB调色板 int i,j; for(i=0;i<256;i++) { //计算该颜色对应的灰度值 bMap[i]=(BYTE)(0.299*lpbmi->bmiColors[i].rgbRed+ 0.587*lpbmi->bmiColors[i].rgbGreen+ 0.114*lpbmi->bmiColors[i].rgbBlue+0.5); //更新DIB调色板红色分量 lpbmi->bmiColors[i].rgbRed=i; //更新DIB调色板绿色分量
7、 lpbmi->bmiColors[i].rgbGreen=i; //更新DIB调色板蓝色分量 lpbmi->bmiColors[i].rgbBlue=i; //更新DIB调色板保留位 lpbmi->bmiColors[i].rgbReserved=0; } //找到DIB图像象素起始位置 lpDIBBits=::FindDIBBits(lpDIB); //获取图像宽度 lWidth=::DIBWidth(lpDIB); //获取图像高度 lHeight=::DIBHeight(lpDIB);
8、//计算图像每行的字节数 lLineBytes=WIDTHBYTES(lWidth*8); //更换每个象素的颜色索引(即按照灰度映射表换成灰度值) //逐行扫描 for(i=0;i
此文档下载收益归作者所有