社区
机器视觉
帖子详情
请问哪里有熵编码器的源码?
binling
2004-01-05 04:29:20
huffman 算术编码,网上应该有源码吧?
...全文
58
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
}
基于Java实现的JPEG有损图像压缩
编码器
源码
+项目说明(课程大作业).zip
基于Java实现的JPEG有损图像压缩
编码器
源码
+项目说明(课程大作业).zip 一个基本由自己实现的JPEG有损图像压缩
编码器
,基于JFIF(JPEG文件交换格式)标准: 色彩空间转换(RGB to YUV) 色度抽样(采样因子4:2:0) ...
H.264解码器verilog源代码
H.264标准解码器全部verilog
源码
,包括帧内、帧间、变换编码、
熵
编码、滤波等所有模块
Java架构师基本功之
源码
第一课
目前很多BAT大厂的面试,都会考核面试者对于解读
源码
的能力,所以这个也常常成为面试者的一个拦路石 那么,为什么大厂总爱考核
源码
?因为单纯考核对API的使用,很难区分一个人的技术深度,所以这也成了大厂面试的一...
javabiginteger
源码
-jsbn:TomWu的纯JavaScript实现的任意精度整数算法
java biginteger
源码
JavaScript 中的 BigIntegers 和 RSA ...基本的
熵
收集器和 RNG 接口,需要一个 PRNG 后端来定义prng_newstate() 。 - ARC4基于PRNG后端为rng.js ,非常小。 - Base64 编码和解码例
浅析HEVC/H.265
编码器
中的
熵
编码
在保证视频图像质量的前提下,HEVC通过增加一定的计算复杂度,可以实现码流在H.264/AVC的基础上降低50%。为了实现目标,HEVC采用了一些全新的编码技术,比如:基于LCU...今天主要介绍一下HEVC/H.265编器码中的
熵
编码。
机器视觉
4,445
社区成员
15,335
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章