数字图像处理实验报告 (图像编码)(6)

2019-03-29 09:40

else

{ if((iCount>1)||(bChar1>= 0xC0)) { lpDst[dwBuffUsed] = iCount | 0xC0; lpDst[dwBuffUsed+1] = bChar1;

dwBuffUsed += 2;

} else { lpDst[dwBuffUsed] = bChar1;

dwBuffUsed++;

}

bChar1 = bChar2;

iCount =1;

}

}

if((iCount > 1) ||(bChar1>=0xC0)) { lpDst[dwBuffUsed] = iCount | 0xC0;

lpDst[dwBuffUsed+1]= bChar1;

dwBuffUsed+=2; } else { lpDst[dwBuffUsed] = bChar1;

dwBuffUsed++;

}

}

file.WriteHuge((LPSTR)lpDst,dwBuffUsed); delete[] lpDst;

lpDst = new BYTE[769]; * lpDst = 0x0C; for(i=0;i<256;i++) {

lpDst[i*3+1] =i; lpDst[i*3+2] =i; lpDst[i*3+3] =i; }

file.Write((LPSTR)lpDst,769); return TRUE; }

5.3.2 视图类处理函数OnRleCoding()

第 26 页 共 32 页

关于 PCXCoding的函数调用部分,在图像处理的主窗口菜单栏“图像编码”下添加“行程编码”项,对应的处理函数是CDImageProcessView视图类中的OnRleCoding()函数,具体代码如下。

void CDImageProcessView::OnPcxcoding()

{

CDImageProcessDoc* pDoc = GetDocument(); LPSTR lpDIB; LPSTR lpDIBBits;

lpDIB = (LPSTR) ::GlobalLock((HGLOBAL)pDoc->GetHObject()); lpDIBBits = pDoc->m_dib.GetBits(lpDIB); if(pDoc->m_dib.GetColorNum(lpDIB)!=256) {

MessageBox(\目前只支持256色位图!\系统提示\TION| MB_OK); ::GlobalUnlock((HGLOBAL)pDoc->GetHObject());

return; } int width; int height;

width= pDoc->m_dib.GetWidth(lpDIB); height= pDoc->m_dib.GetHeight(lpDIB); BeginWaitCursor(); CString strFilePath;

strFilePath = pDoc->GetPathName();

if(strFilePath.Right(4).CompareNoCase(\

{ strFilePath=strFilePath.Left(strFilePath.GetLength()-3)+\ } else { }

CfileDialog

dlg(FALSE,\Y|OFN_OVERWRITEPROMPT,\X图像文件(*.PCX) |*.PCX|所有文件(*.*)|*.*||\ if(dlg.DoModal()!=IDOK) {

strFilePath +=\

::GlobalUnlock((HGLOBAL)pDoc->GetHObject()); EndWaitCursor();

return; }

strFilePath = dlg.GetPathName(); CFile file; CFileException fe;

第 27 页 共 32 页

if(!file.Open(strFilePath,CFile::modeCreate|CFile::modeReadWrite|CFile::shareExclusive,&fe)) {

MessageBox(\打开指定PCX文件时失败!\系统提示\TION|MB_OK); return;

}

if(PCXCoding(lpDIBBits,width,height,file)) { } else {

MessageBox(\成功保存为PCX文件!\系统提示\

MessageBox(\保存为PCX文件失败!\系统提示\TION|MB_OK); }

::GlobalUnlock((HGLOBAL)pDoc->GetHObject()); EndWaitCursor();

六、实验结果:

如下图6.1所示,分别采用哈夫曼编码、香农-范诺编码和行程编码进行图像压缩处理,对比其压缩后的数据来分析编码的优缺点。

图6.1位图图像“原始lena图像”

6.1 哈弗曼编码结果

对位图图像“原始lena图像”进行哈夫曼编码压缩,如下图6.2所示。编码效率约为99.7%,图像熵值为7.44,平均码长7.47。

第 28 页 共 32 页

图6.2哈夫曼编码运行结果

6.2 香农-范诺编码结果

对位图图像“原始lena图像”进行香农-范诺编码压缩,如下图6.3所示。编码效率约为99.2%,平均码长为7.5,图像熵值7.44。

图6.3香农-范诺编码运行结果

6.3 行程编码结果

第 29 页 共 32 页

行程编码是将位图图像,即以.bmp为后缀的图像保存为以.PCX为后缀的文件格式

图6.4保存为以.PCX为后缀的文件

若保存成功,则弹出对话框提示成功保存,如图6.5所示。

图6.5成功保存提示对话框

保存成PCX文件后,其压缩程度可从属性中看出来,如图6.6所示。

第 30 页 共 32 页


数字图像处理实验报告 (图像编码)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:市政园林绿化工程施工管理中存在的问题研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: