www.gusucode.com > 自己编写的一个基于matlab的图像压缩程序,有GUI界面,不能程度的压缩效果以及信噪比 > 自己编写的一个基于matlab的图像压缩程序,有GUI界面,不能程度的压缩效果以及信噪比/BP神经网络的图像压缩/wavelets压缩/getwavelet.m

    function [Seq,ScaleS,ScaleD,Family] = getwavelet(WaveletName)
%GETWAVELET   Get wavelet lifting scheme sequence.
% Pascal Getreuer 2005-2006

WaveletName = strrep(WaveletName,'bior','spline');
ScaleS = 1/sqrt(2);
ScaleD = 1/sqrt(2);
Family = 'Spline';

switch strrep(strrep(lower(WaveletName),'2d',''),' ','')
case {'haar','d1','db1','sym1','spline1.1','rspline1.1'}
   Seq = {1,0;-0.5,0};
   ScaleD = -sqrt(2);
   Family = 'Haar';
case {'d2','db2','sym2'}
   Seq = {sqrt(3),0;[-sqrt(3),2-sqrt(3)]/4,0;-1,1};
   ScaleS = (sqrt(3)-1)/sqrt(2);
   ScaleD = (sqrt(3)+1)/sqrt(2);
   Family = 'Daubechies';
case {'d3','db3','sym3'}
   Seq = {2.4254972439123361,0;[-0.3523876576801823,0.0793394561587384],0;
      [0.5614149091879961,-2.8953474543648969],2;-0.0197505292372931,-2};
   ScaleS = 0.4318799914853075;
   ScaleD = 2.3154580432421348;
   Family = 'Daubechies';
case {'d4','db4'}
   Seq = {0.3222758879971411,-1;[0.3001422587485443,1.1171236051605939],1;
      [-0.1176480867984784,0.0188083527262439],-1;
      [-0.6364282711906594,-2.1318167127552199],1;
      [0.0247912381571950,-0.1400392377326117,0.4690834789110281],2};   
   ScaleS = 1.3621667200737697;
   ScaleD = 0.7341245276832514;
   Family = 'Daubechies';
case {'d5','db5'}
   Seq = {0.2651451428113514,-1;[-0.2477292913288009,-0.9940591341382633],1;
      [-0.2132742982207803,0.5341246460905558],1;
      [0.7168557197126235,-0.2247352231444452],-1;
      [-0.0121321866213973,0.0775533344610336],3;0.035764924629411,-3};   
   ScaleS = 1.3101844387211246;
   ScaleD = 0.7632513182465389;
   Family = 'Daubechies';
case {'d6','db6'}
   Seq = {4.4344683000391223,0;[-0.214593449940913,0.0633131925095066],0;
      [4.4931131753641633,-9.970015617571832],2;
      [-0.0574139367993266,0.0236634936395882],-2;
      [0.6787843541162683,-2.3564970162896977],4;
      [-0.0071835631074942,0.0009911655293238],-4;-0.0941066741175849,5};   
   ScaleS = 0.3203624223883869;
   ScaleD = 3.1214647228121661;
   Family = 'Daubechies';
case 'sym4'
   Seq = {-0.3911469419700402,0;[0.3392439918649451,0.1243902829333865],0;
      [-0.1620314520393038,1.4195148522334731],1;
      -[0.1459830772565225,0.4312834159749964],1;1.049255198049293,-1};   
   ScaleS = 0.6366587855802818;
   ScaleD = 1.5707000714496564;
   Family = 'Symlet';
case 'sym5'
   Seq = {0.9259329171294208,0;-[0.1319230270282341,0.4985231842281166],1;
      [1.452118924420613,0.4293261204657586],0;
      [-0.2804023843755281,0.0948300395515551],0;
      -[0.7680659387165244,1.9589167118877153],1;0.1726400850543451,0};
   ScaleS = 0.4914339446751972;
   ScaleD = 2.0348614718930915;
   Family = 'Symlet';
case 'sym6'
   Seq = {-0.2266091476053614,0;[0.2155407618197651,-1.2670686037583443],0;
      [-4.2551584226048398,0.5047757263881194],2;
      [0.2331599353469357,0.0447459687134724],-2;
      [6.6244572505007815,-18.389000853969371],4;
      [-0.0567684937266291,0.1443950619899142],-4;-5.5119344180654508,5};
   ScaleS = -0.5985483742581210;
   ScaleD = -1.6707087396895259;
   Family = 'Symlet';
case 'coif1'
   Seq = {-4.6457513110481772,0;[0.205718913884,0.1171567416519999],0;
      [0.6076252184992341,-7.468626966435207],2;-0.0728756555332089,-2};   
   ScaleS = -0.5818609561112537;
   ScaleD = -1.7186236496830642;
   Family = 'Coiflet';
case 'coif2'
   Seq = {-2.5303036209828274,0;[0.3418203790296641,-0.2401406244344829],0;
      [15.268378737252995,3.1631993897610227],2;
      [-0.0646171619180252,0.005717132970962],-2;
      [13.59117256930759,-63.95104824798802],4;
      [-0.0018667030862775,0.0005087264425263],-4;-3.7930423341992774,5};
   ScaleS = 0.1076673102965570;
   ScaleD = 9.2878701738310099;
   Family = 'Coiflet';
case 'bcoif1'
   Seq = {0,0;-[1,1]/5,1;[5,5]/14,0;-[21,21]/100,1};
   ScaleS = sqrt(2)*7/10;
   ScaleD = sqrt(2)*5/7;
   Family = 'Nearly orthonormal Coiflet-like';
case {'lazy','spline0.0','rspline0.0','d0'}
   Seq = {0,0};
   ScaleS = 1;
   ScaleD = 1;
   Family = 'Lazy';
case {'spline0.1','rspline0.1'}
   Seq = {1,-1};
   ScaleD = 1;
case {'spline0.2','rspline0.2'}
   Seq = {[1,1]/2,0};
   ScaleD = 1;
case {'spline0.3','rspline0.3'}
   Seq = {[-1,6,3]/8,1};
   ScaleD = 1;
case {'spline0.4','rspline0.4'}
   Seq = {[-1,9,9,-1]/16,1};
   ScaleD = 1;
case {'spline0.5','rspline0.5'}
   Seq = {[3,-20,90,60,-5]/128,2};   
   ScaleD = 1;
case {'spline0.6','rspline0.6'}
   Seq = {[3,-25,150,150,-25,3]/256,2};   
   ScaleD = 1;
case {'spline0.7','rspline0.7'}
   Seq = {[-5,42,-175,700,525,-70,7]/1024,3};  
   ScaleD = 1;
case {'spline0.8','rspline0.8'}
   Seq = {[-5,49,-245,1225,1225,-245,49,-5]/2048,3};
   ScaleD = 1;
case {'spline1.0','rspline1.0'}
   Seq = {0,0;-1,0};
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);   
case {'spline1.3','rspline1.3'}
   Seq = {0,0;-1,0;[-1,8,1]/16,1};
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
case {'spline1.5','rspline1.5'}
   Seq = {0,0;-1,0;[3,-22,128,22,-3]/256,2};
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
case {'spline1.7','rspline1.7'}
   Seq = {0,0;-1,0;[-5,44,-201,1024,201,-44,5]/2048,3};   
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
case {'spline2.0','rspline2.0'}
   Seq = {0,0;-[1,1]/2,1};
   ScaleS = sqrt(2);
   ScaleD = 1;
case {'spline2.1','rspline2.1'}
   Seq = {0,0;-[1,1]/2,1;0.5,0};
   ScaleS = sqrt(2);
case {'spline2.2','rspline2.2','cdf5/3','legall5/3','s+p(2,2)','lc5/3'}
   Seq = {0,0;-[1,1]/2,1;[1,1]/4,0};
   ScaleS = sqrt(2);
case {'spline2.4','rspline2.4'}
   Seq = {0,0;-[1,1]/2,1;[-3,19,19,-3]/64,1};
   ScaleS = sqrt(2);
case {'spline2.6','rspline2.6'}
   Seq = {0,0;-[1,1]/2,1;[5,-39,162,162,-39,5]/512,2};
   ScaleS = sqrt(2);
case {'spline2.8','rspline2.8'}
   Seq = {0,0;-[1,1]/2,1;[-35,335,-1563,5359,5359,-1563,335,-35]/16384,3};
   ScaleS = sqrt(2);
case {'spline3.0','rspline3.0'}
   Seq = {-1/3,-1;-[3,9]/8,1};   
   ScaleS = 3/sqrt(2);
   ScaleD = 2/3;
case {'spline3.1','rspline3.1'}
   Seq = {-1/3,-1;-[3,9]/8,1;4/9,0};
   ScaleS = 3/sqrt(2);
   ScaleD = -2/3;
case {'spline3.3','rspline3.3'}
   Seq = {-1/3,-1;-[3,9]/8,1;[-3,16,3]/36,1};
   ScaleS = 3/sqrt(2);
   ScaleD = -2/3;
case {'spline3.5','rspline3.5'}
   Seq = {-1/3,-1;-[3,9]/8,1;[5,-34,128,34,-5]/288,2};
   ScaleS = 3/sqrt(2);
   ScaleD = -2/3;
case {'spline3.7','rspline3.7'}
   Seq = {-1/3,-1;-[3,9]/8,1;[-35,300,-1263,4096,1263,-300,35]/9216,3};
   ScaleS = 3/sqrt(2);
   ScaleD = -2/3;
case {'spline4.0','rspline4.0'}
   Seq = {-[1,1]/4,0;-[1,1],1};
   ScaleS = 4/sqrt(2);
   ScaleD = 1/sqrt(2);
   ScaleS = 1; ScaleD = 1;
case {'spline4.1','rspline4.1'}
   Seq = {-[1,1]/4,0;-[1,1],1;6/16,0};
   ScaleS = 4/sqrt(2);
   ScaleD = 1/2;
case {'spline4.2','rspline4.2'}
   Seq = {-[1,1]/4,0;-[1,1],1;[3,3]/16,0};
   ScaleS = 4/sqrt(2);
   ScaleD = 1/2;
case {'spline4.4','rspline4.4'}
   Seq = {-[1,1]/4,0;-[1,1],1;[-5,29,29,-5]/128,1};
   ScaleS = 4/sqrt(2);
   ScaleD = 1/2;
case {'spline4.6','rspline4.6'}
   Seq = {-[1,1]/4,0;-[1,1],1;[35,-265,998,998,-265,35]/4096,2};
   ScaleS = 4/sqrt(2);
   ScaleD = 1/2;
case {'spline4.8','rspline4.8'}
   Seq = {-[1,1]/4,0;-[1,1],1;[-63,595,-2687,8299,8299,-2687,595,-63]/32768,3};
   ScaleS = 4/sqrt(2);
   ScaleD = 1/2;
case {'spline5.0','rspline5.0'}
   Seq = {0,0;-1/5,0;-[5,15]/24,0;-[9,15]/10,1};   
   ScaleS = 3*sqrt(2);
   ScaleD = sqrt(2)/6;
case {'spline5.1','rspline5.1'}
   Seq = {0,0;-1/5,0;-[5,15]/24,0;-[9,15]/10,1;1/3,0};
   ScaleS = 3*sqrt(2);
   ScaleD = sqrt(2)/6;
case {'spline5.3','rspline5.3'}
   Seq = {0,0;-1/5,0;-[5,15]/24,0;-[9,15]/10,1;[-5,24,5]/72,1};
   ScaleS = 3*sqrt(2);
   ScaleD = sqrt(2)/6;
case {'spline5.5','rspline5.5'}
   Seq = {0,0;-1/5,0;-[5,15]/24,0;-[9,15]/10,1;[35,-230,768,230,-35]/2304,2};
   ScaleS = 3*sqrt(2);
   ScaleD = sqrt(2)/6;
case {'cdf9/7'}   
   Seq = {0,0;[1,1]*-1.5861343420693648,1;[1,1]*-0.0529801185718856,0;
      [1,1]*0.8829110755411875,1;[1,1]*0.4435068520511142,0};
   ScaleS = 1.1496043988602418;
   ScaleD = 1/ScaleS;
   Family = 'Cohen-Daubechies-Feauveau';
case 'v9/3'
   Seq = {0,0;[-1,-1]/2,1;[1,19,19,1]/80,1};
   ScaleS = sqrt(2);
   Family = 'HSV design';
case {'s+p(4,2)','lc9/7-m'}
   Seq = {0,0;[1,-9,-9,1]/16,2;[1,1]/4,0};   
   ScaleS = sqrt(2);
   Family = 'S+P';
case 's+p(6,2)'
   Seq = {0,0;[-3,25,-150,-150,25,-3]/256,3;[1,1]/4,0};
   ScaleS = sqrt(2);
   Family = 'S+P';
case {'s+p(4,4)','lc13/7-t'}
   Seq = {0,0;[1,-9,-9,1]/16,2;[-1,9,9,-1]/32,1};
   ScaleS = sqrt(2);
   Family = 'S+P';
case {'s+p(2+2,2)','lc5/11-c'}
   Seq = {0,0;[-1,-1]/2,1;[1,1]/4,0;-[-1,1,1,-1]/16,2};
   ScaleS = sqrt(2);
   Family = 'S+P';
case 'tt'
   Seq = {1,0;[3,-22,-128,22,-3]/256,2};
   ScaleD = sqrt(2);
   Family = 'Le Gall-Tabatabai polynomial';
case 'lc2/6'
   Seq = {0,0;-1,0;1/2,0;[-1,0,1]/4,1};
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
   Family = 'Reverse spline';
case 'lc2/10'
   Seq = {0,0;-1,0;1/2,0;[3,-22,0,22,-3]/64,2};
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
   Family = 'Reverse spline';
case 'lc5/11-a'
   Seq = {0,0;-[1,1]/2,1;[1,1]/4,0;[1,-1,-1,1]/32,2};   
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
   Family = 'Low complexity';
case 'lc6/14'
   Seq = {0,0;-1,0;[-1,8,1]/16,1;[1,-6,0,6,-1]/16,2};   
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
   Family = 'Low complexity';
case 'lc13/7-c'
   Seq = {0,0;[1,-9,-9,1]/16,2;[-1,5,5,-1]/16,1};   
   ScaleS = sqrt(2);
   ScaleD = -1/sqrt(2);
   Family = 'Low complexity';
otherwise
   Seq = {};
   return;
end

if ~isempty(findstr(lower(WaveletName),'rspline'))
   [Seq,ScaleS,ScaleD] = seqdual(Seq,ScaleS,ScaleD);
   Family = 'Reverse spline';
end

return;