社区
机器视觉
帖子详情
请问哪里有熵编码器的源码?
binling
2004-01-05 04:29:20
huffman 算术编码,网上应该有源码吧?
...全文
76
2
打赏
收藏
请问哪里有熵编码器的源码?
huffman 算术编码,网上应该有源码吧?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
编码器
源码
,可以供学习;学习视频算法的工程师可以下载学习用!
x265
编码器
源码
x265
编码器
源码
,2016.12.26发布的版本,本着互联网开放、共享的精神,不扣积分了...
基于Java实现的JPEG有损图像压缩
编码器
源码
+项目说明(课程大作业).zip
基于Java实现的JPEG有损图像压缩
编码器
源码
+项目说明(课程大作业).zip 一个基本由自己实现的JPEG有损图像压缩
编码器
,基于JFIF(JPEG文件交换格式)标准: 色彩空间转换(RGB to YUV) 色度抽样(采样因子4:2:0) MCU分块(16x16的最小编码单元,以Y1 Y2 Y3 Y4 U V的顺序写入比特流) DCT离散余弦变换 量化(基于50%压缩质量的亮度/色度量化表)
熵
编码 游程编码(RLE编码) 可变长整数编码(VLI编码) 范式霍夫曼编码(基于JPEG官方推荐的四张范式霍夫曼表) JPEG文件头构建及比特输出流写入 要注意的是,该项目并未完全实现JPEG
编码器
的全部功能,在这个项目中: 文件的读入和RGB色彩空间的读取仍然是基于ImageIO库来实现的 由范式霍夫曼表构建霍夫曼树参照了该项目目录下thirdparty/JpegEncoder.java的代码 此外: 本项目仅实现了JFIF标准要求的基本压缩算法,JPEG还支持许多其他的压缩算法(如
熵
编码部分还可以采用算术编码等) 本项目是基于SOF0(baseline基线式JPEG)的
aac编码
源码
aac编码
源码
,可以拿去试试。
JPEG
编码器
源代码分析
JPEG解码源代码及注释,JPEG
编码器
源代码分析
机器视觉
4,504
社区成员
15,372
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章