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的方式处理;
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的方式处理;