社区
机器视觉
帖子详情
请问哪里有熵编码器的源码?
binling
2004-01-05 04:29:20
huffman 算术编码,网上应该有源码吧?
...全文
62
2
打赏
收藏
请问哪里有熵编码器的源码?
huffman 算术编码,网上应该有源码吧?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hahu
2004-01-09
打赏
举报
回复
上面是将rgb的数据进行编码,然后将结果显示到一个对话框
类变量如下
int m_iColorNum;//颜色数,24位也当它是256色,须提供
FLOAT *m_fFreq;//每一种颜色的出现概率,参考后面代码
CString *m_strCode;//指向编码结果数组的指针
// Dialog Data
//{{AFX_DATA(CDlgHuffman)
enum { IDD = IDD_CODE_HUFFMAN };
CListCtrl m_lstTable;
double m_dEntropy;//图像熵
double m_dAvgCodeLen;//平均码长
double m_dEfficiency;//编码概率
调用的时候
for(i=0;i<iColorNum;i++)
{
fFreq[i]=0.0;
}
for(i=0;i<lHeight;i++)
{
for(j=0;j<lWidth;j++)
{
lpSrc=(unsigned char*)lpDIBBits+lLineBytes*i+j;
fFreq[*(lpSrc)]+=1;//出现该颜色次数
}
}
lCountSum=lHeight*lWidth;
for(i=0;i<iColorNum;i++)
{
fFreq[i]/=(FLOAT)lCountSum;//求得概率
}
CDlgHuffman dlgPara;
dlgPara.m_fFreq=fFreq;
dlgPara.m_iColorNum=iColorNum;
dlgPara.DoModal();
hahu
2004-01-09
打赏
举报
回复
BOOL CDlgHuffman::OnInitDialog()
{
CDialog::OnInitDialog();
CString str;
LONG i;
LONG j;
LONG k;
FLOAT fT;
LV_ITEM lvitem;
int iActualItem;
m_dEntropy=0.0;
m_dAvgCodeLen=0.0;
for(i=0;i<m_iColorNum;i++)
{
if(m_fFreq[i]>0)
{
m_dEntropy-=m_fFreq[i]*log(m_fFreq[i])/log(2.0);
}
}
FLOAT *fTemp;
int *iMap;
fTemp=new FLOAT[m_iColorNum];
iMap=new int[m_iColorNum];
m_strCode=new CString[m_iColorNum];
for(i=0;i<m_iColorNum;i++)
{
fTemp[i]=m_fFreq[i];
iMap[i]=i;
}
for(j=0;j<m_iColorNum-1;j++)
{
for(i=0;i<m_iColorNum-j-1;i++)
{
if(fTemp[i]>fTemp[i+1])
{
fT=fTemp[i];
fTemp[i]=fTemp[i+1];
fTemp[i+1]=fT;
for(k=0;k<m_iColorNum;k++)
{
if(iMap[k]==i)
{
iMap[k]=i+1;
}
else if(iMap[k]==i+1)
{
iMap[k]=i;
}
}
}
}
}
for(i=0;i<m_iColorNum-1;i++)
{
if(fTemp[i]>0)
{
break;
}
}
for(;i<m_iColorNum-1;i++)
{
for(k=0;k<m_iColorNum;k++)
{
if(iMap[k]==i)
{
m_strCode[k]="1"+m_strCode[k];
}
else if(iMap[k]==i+1)
{
m_strCode[k]="0"+m_strCode[k];
}
}
fTemp[i+1]+=fTemp[i];
for(k=0;k<m_iColorNum;k++)
{
if(iMap[k]==i)
{
iMap[k]=i+1;
}
}
for(j=i+1;j<m_iColorNum-1;j++)
{
if(fTemp[j]>fTemp[j+1])
{
fT=fTemp[j];
fTemp[j]=fTemp[j+1];
fTemp[j+1]=fT;
for(k=0;k<m_iColorNum;k++)
{
if(iMap[k]==j)
{
iMap[k]=j+1;
}
else if(iMap[k]==j+1)
{
iMap[k]=j;
}
}
}
else
{
break;
}
}
}
for(i=0;i<m_iColorNum;i++)
{
m_dAvgCodeLen+=m_fFreq[i]*m_strCode[i].GetLength();
}
m_dEfficiency=m_dEntropy/m_dAvgCodeLen;
UpdateData(FALSE);
m_lstTable.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
m_lstTable.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_FLATSB);
m_lstTable.InsertColumn(0,"灰度值",LVCFMT_LEFT,60,0);
m_lstTable.InsertColumn(1,"出现概率",LVCFMT_LEFT,78,0);
m_lstTable.InsertColumn(2,"哈夫曼编码",LVCFMT_LEFT,110,1);
m_lstTable.InsertColumn(3,"码字长度",LVCFMT_LEFT,78,2);
lvitem.mask=LVIF_TEXT;
for(i=0;i<m_iColorNum;i++)
{
lvitem.iItem=m_lstTable.GetItemCount();
str.Format("%u",i);
lvitem.iSubItem=0;
lvitem.pszText=(LPTSTR)(LPCTSTR)str;
iActualItem=m_lstTable.InsertItem(&lvitem);
lvitem.iItem=iActualItem;
lvitem.iSubItem=1;
str.Format("%f",m_fFreq[i]);
lvitem.pszText=(LPTSTR)(LPCTSTR)str;
m_lstTable.SetItem(&lvitem);
lvitem.iSubItem=2;
lvitem.pszText=(LPTSTR)(LPCTSTR)m_strCode[i];
m_lstTable.SetItem(&lvitem);
lvitem.iSubItem=3;
str.Format("%u",m_strCode[i].GetLength());
lvitem.pszText=(LPTSTR)(LPCTSTR)str;
m_lstTable.SetItem(&lvitem);
}
delete []fTemp;
delete []iMap;
delete []m_strCode;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
MPEG2
编码器
源码
MPEG2
编码器
源码
是理解视频编码技术的重要参考资料,尤其对那些希望深入研究视频算法的工程师来说,具有很高的学习价值。MPEG2是最早的一代数字视频压缩标准,广泛应用于DVD、数字电视和视频流媒体等领域。下面将...
x265
编码器
源码
《深入解析x265
编码器
源码
》 在当今数字化时代,视频编码技术的重要性日益凸显,它在视频传输、存储以及播放等环节中扮演着关键角色。x265
编码器
作为HEVC(High Efficiency Video Coding,高效视频编码)标准的开源...
基于Java实现的JPEG有损图像压缩
编码器
源码
+项目说明(课程大作业).zip
基于Java实现的JPEG有损图像压缩
编码器
源码
+项目说明(课程大作业).zip 一个基本由自己实现的JPEG有损图像压缩
编码器
,基于JFIF(JPEG文件交换格式)标准: 色彩空间转换(RGB to YUV) 色度抽样(采样因子4:2:0) ...
JPEG
编码器
源代码分析
总结,JPEG
编码器
的源代码分析涉及颜色空间转换、DCT、量化、
熵
编码等多个图像处理领域的核心概念。通过深入学习和理解`nanojpeg.c`,我们可以更好地掌握JPEG压缩机制,并能应用于实际的图像处理和编码项目中。
aac编码
源码
8. **错误检测与恢复**:在传输过程中,可能会有数据丢失,因此AAC
编码器
可能会加入错误检测和恢复机制,如CRC校验。 学习和研究AAC编码
源码
可以帮助开发者了解音频编码的底层机制,优化编码效率,或者实现自定义的...
机器视觉
4,499
社区成员
15,349
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章