毕设经验

1、func.cpp中用freopen保存文件后,没有fclose( stdout ),导致在encode.cpp中无法读取该保存的文件,困扰了很多天,以后切记每次文件操作后及时关闭输入输出流,这也是当初ACM使用freopen没有弄清的地方。


2、func.cpp中freopen( "w" ),在func.cpp中必须放前面,不能放中间和后面,否则会出错,实在不知道是为什么;


3、头文件重复包含问题:  http://zhidao.baidu.com/question/131426210.html


4、Floating point exception: 运算出错,比如计算阈值时,T0=1的时候,half = T0/2 = 0,而我用了 /half,0不能作除数;


5、120,220, 白色;    20, 40,黑色,越小越黑, -20灰色, -220近乎黑色;


6、nChannels = 1的图片才可以恢复出来,nChannels = 3的图片都只能恢复出左边部分;


7、自适应算术编码的结果码流长度可能会很长,需要开足够的空间;


8、自适应算术编码,当ezw的结果PN码流过于长(P,N,I,Z各种组合),由于精度问题导致 Left 和 Right 最后相等,在求CodeLength的时候,输出发现CodeLength为负的无穷大;
CodeLength = (int)( -log( right - left ) / log(2)) + 50;  


adaptive_encode的结果里,第一个编码在文本里没有显示,但是,如果把SIZE开到500那么大,整个程序还是可以运行,暂时这样了,待解决;


该如何解决;


9、ezw编码,迭代器注意初始化,breakpoint = ic1.end(); 没有初始化导致出错;


10、一个特殊情况,haar_encode像素值为0的矩阵,在ezw里会超时;
暂时的处理方式:  T0 = 0的时候特殊处理;


11、在解决第10个情况后,发现haar_encode的第一个元素为1,其余为0时会超时;
此时,max = 1, T0=1,则第二次扫描的时候,T0/=2, 即为0, 所以half也是0,导致超时;


暂时的处理方式:  在Auxiliary_scanning里,当T0=0时,return;


12、在解决第11个情况后,发现haar_encode的第一个元素为0.5,第二个为-0.5,其余为0时会超时;
也就是max小于1;


暂时的处理方式: max < 1的都按T0=0的方式处理;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值