4位16色灰度图像处理
生活随笔
收集整理的這篇文章主要介紹了
4位16色灰度图像处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
定義幾個輔助的宏,如下。
// 讀寫16色圖像的演示操作,將每個像素的值加上20 BOOL CImgProcess::Test4bppIndexedBitmap(CImgProcess *pTo) {// 首先檢查圖像是否是8位灰度圖像if (m_pBMIH->biBitCount != 4) {AfxMessageBox(_T("fuck, 這不是4位的圖像"));return FALSE;}// 小小測試一下BYTE grey = 0x4c; // 假設(shè)這個字節(jié)是16級灰度圖像的兩個像素BYTE hi = HIBITS(grey), // 0xflo = LOBITS(grey); // 0xcBYTE test = MAKEBITS(0x34, 0x56); // 把兩個字節(jié)的地位部分組成一個新的字節(jié),所以這里應(yīng)該輸出 0x64TRACE3("high=0x%x,low=0x%x, test=0x%x \n", hi, lo, test);//BYTE a =(lo + 20)%0xf;BYTE b = (hi + 20)%0xf;test = MAKEBITS(a, b);TRACE3("a=0x%x,b=0x%x, test add = 0x%d \n", a, b, test);//working................int nHeight = GetHeight(),nWidth = GetWidthPixel(); // 像素寬度TRACE2("width=%d,height=%d\n", nWidth, nHeight);int i,j;for(i=0; i<nHeight; i++){for(j=0; j < nWidth/2; j++) // nWidth是像素的個數(shù),但是只有nWidth/2個字節(jié){BYTE pixel2 = this->m_lpData[i][j]; //包含兩個像素的 hi = HIBITS(pixel2); // 像素分解lo = LOBITS(pixel2);a =(lo + 20) % 0xf;b = (hi + 20) % 0xf;test = MAKEBITS(a, b); // 重新合并像素pTo->m_lpData[i][j] = test; // 寫入數(shù)據(jù)}}return TRUE; }
總結(jié)
以上是生活随笔為你收集整理的4位16色灰度图像处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尺度空间(Scale space)理论
- 下一篇: 涨停后第二天洗盘特征