《图像处理的线性点运算与灰度均衡程序讲义.doc》由会员分享,可在线阅读,更多相关《图像处理的线性点运算与灰度均衡程序讲义.doc(3页珍藏版)》请在金锄头文库上搜索。
1、线性点运算1. 接口资源窗口toolbar添加图标,ID_LINETRANS,在视类里添加响应函数OnHistogram()。2. 修改Bmp.cpp文件,新增函数LinerTrans ()void LinerTrans(float a, float b)/ 图像的宽度和高度int w = lpBitsInfo-bmiHeader.biWidth;int h = lpBitsInfo-bmiHeader.biHeight;/ 计算源图像中每行的字节数(必须是4的倍数)int LineBytes = (w * lpBitsInfo-bmiHeader.biBitCount + 31)/32 *
2、4;/ 指向图像数据的指针BYTE *lpBits = (BYTE*)&lpBitsInfo-bmiColorslpBitsInfo-bmiHeader.biClrUsed;int i, j;BYTE* pixel;float temp;for (i = 0; i h; i +)for (j = 0; j 255)/ 直接赋值为255*pixel = 255;else if (temp Enable(lpBitsInfo != NULL);灰度均衡1. 接口资源窗口toolbar添加图标,ID_EQUALIZE,在视类里添加响应函数OnEqualize ()。2. 修改Bmp.cpp文件,新增
3、函数Equalize()void Equalize()int i, j;BYTE* pixel;DWORD temp;/图像宽与高int w = lpBitsInfo-bmiHeader.biWidth;int h = lpBitsInfo-bmiHeader.biHeight;/ 计算源图像中每行的字节数(必须是4的倍数)int LineBytes = (w * lpBitsInfo-bmiHeader.biBitCount + 31)/32 * 4;/lpBits为指向图像数据的指针BYTE *lpBits = (BYTE*)&lpBitsInfo-bmiColorslpBitsInfo-bmiHeader.biClrUsed;/灰度映射表BYTE Map256;/计算灰度直方图数组(统计各灰度级的像素个数)Histogram();/ 计算灰度映射表for (i = 0; i 256; i+)/ 初始为0temp = 0;/累加求和for (j = 0; j = i ; j+)temp += Hj;/ 计算对应的新灰度值Mapi = (BYTE) (temp * 255 / w / h);for (i = 0; i h; i +)for (j = 0; j Enable(lpBitsInfo != NULL);