毕设经验

来源:互联网 发布:上瘾网络剧新闻发布会 编辑:程序博客网 时间:2024/05/19 15:21
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的方式处理;
原创粉丝点击