⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encoder.java

📁 jpeg2000算法实现
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                                if(pl.getParameter("Psop").equals("off")){                    pl.put("Psop","on");                    tempSop = true;                }                if(pl.getParameter("Peph").equals("off")){                    pl.put("Peph","on");                    tempEph = true;                    tempSop = true;                }                              }            if (pl.getParameter("pph_main").equals("on")){                pphMain = true;                tempSop = true;                                if(pl.getParameter("Psop").equals("off")){                    pl.put("Psop","on");                }                if(pl.getParameter("Peph").equals("off")){                    pl.put("Peph","on");                    tempEph = true;                }                              }            if(pphTile && pphMain)                error("Can't have packed packet headers in both main and"+                      " tile headers",2);            if(pl.getBooleanParameter("lossless") &&                pl.getParameter("rate")!=null &&                pl.getFloatParameter("rate")!=100 )                throw new IllegalArgumentException("Cannot use '-rate' and "+                                                   "'-lossless' option at "+                                                   " the same time.");            if (pl.getParameter("rate") == null) {                error("Target bitrate not specified",2);                return;            }            try {                rate = pl.getFloatParameter("rate");            }            catch (NumberFormatException e) {                error("Invalid value in 'rate' option: "+                      pl.getParameter("rate"),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            try {                pktspertp = pl.getIntParameter("tile_parts");                if(pktspertp != 0){                    if(pl.getParameter("Psop").equals("off")){                        pl.put("Psop","on");                        tempSop = true;                    }                    if(pl.getParameter("Peph").equals("off")){                        pl.put("Peph","on");                        tempEph = true;                    }                   }                           }                        catch (NumberFormatException e) {                error("Invalid value in 'tile_parts' option: "+                      pl.getParameter("tile_parts"),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            // **** ImgReader ****            sgtok = new StringTokenizer(pl.getParameter("i"));            ncomp = 0;            ppminput = false;            imreadervec = new Vector();            int nTokens = sgtok.countTokens();                        for(int  n=0; n<nTokens; n++){                infile = sgtok.nextToken();                try {                    if (imreadervec.size() < ncomp) {                        error("With PPM input format only 1 input file can "+                              "be specified",2);                        return;                    }                    if (infile.lastIndexOf('.') != -1) {                        inext = infile.substring(infile.lastIndexOf('.'),                                                 infile.length());                    }                    else {                        inext = null;                    }                    if (".PGM".equalsIgnoreCase(inext)) { // PGM file                        imreadervec.addElement(new ImgReaderPGM(infile));                        ncomp += 1;                    }                    else if (".PPM".equalsIgnoreCase(inext)) { // PPM file                        if (ncomp > 0) {                            error("With PPM input format only 1 input "+                                  "file can be specified",2);                            return;                        }                        imreadervec.addElement(new ImgReaderPPM(infile));                        ppminput = true;                        ncomp += 3;                    }                    else { // Should be PGX                        imreadervec.addElement(new ImgReaderPGX(infile));                        ncomp+=1;                    }                }                catch (IOException e) {                    error("Could not open or read from file "+infile +                          ((e.getMessage() != null) ?                           (":\n"+e.getMessage()) : ""),3);                    if(pl.getParameter("debug").equals("on"))                        e.printStackTrace();                    else {                        error("Use '-debug' option for more details",2);                    }                    return;                }                finally {                    if (exitCode != 0) {                        // Close the other files                        while (imreadervec.size() > 0) {                            try {                                ((ImgReader)imreadervec.                                 elementAt(imreadervec.size()-1)).close();                                imreadervec.                                    removeElementAt(imreadervec.size()-1);                            }                            catch (Exception e) {                            }                        }                    }                }            }            imreader = new ImgReader[imreadervec.size()];            imreadervec.copyInto(imreader);            imreadervec.removeAllElements();            imreadervec = null;            imsigned = new boolean[ncomp];            // **** ImgDataJoiner (if needed) ****            if (ppminput || ncomp == 1) { // Just one input                imgsrc = imreader[0];                for (i=0; i<ncomp; i++) {                    imsigned[i] = imreader[0].isOrigSigned(i);                }            }            else { // More than one reader => join all readers into 1                imgcmpidxs = new int[ncomp];                for (i=0; i<ncomp; i++) {                    imsigned[i] = imreader[i].isOrigSigned(0);                }                imgsrc = new ImgDataJoiner(imreader,imgcmpidxs);            }            // **** Tiler ****            // get nominal tile dimensions            stok =                new StreamTokenizer(new StringReader(pl.                                                     getParameter("tiles")));            stok.eolIsSignificant(false);            stok.nextToken();            if (stok.ttype != StreamTokenizer.TT_NUMBER) {                error("An error occurred while parsing the tiles option: "+                      pl.getParameter("tiles"),2);                return;            }            tw = (int) stok.nval;            stok.nextToken();            if (stok.ttype != StreamTokenizer.TT_NUMBER) {                error("An error occurred while parsing the tiles option: "+                      pl.getParameter("tiles"),2);                return;            }            th = (int) stok.nval;            // Get image reference point            sgtok = new StringTokenizer(pl.getParameter("ref"));            try {                refx = Integer.parseInt(sgtok.nextToken());                refy = Integer.parseInt(sgtok.nextToken());            }            catch (NoSuchElementException e) {                throw                    new IllegalArgumentException("Error while parsing 'ref' "+                                                 "option");            }            catch (NumberFormatException e) {                throw new IllegalArgumentException("Invalid number type in "+                                                   "'ref' option");            }            if (refx < 0 || refy < 0) {                throw new IllegalArgumentException("Invalid value in 'ref' "+                                                   "option ");            }            // Get tiling reference point            sgtok = new StringTokenizer(pl.getParameter("tref"));            try {                trefx = Integer.parseInt(sgtok.nextToken());                trefy = Integer.parseInt(sgtok.nextToken());            }            catch (NoSuchElementException e) {                throw                    new IllegalArgumentException("Error while parsing 'tref' "+                                                 "option");            }            catch (NumberFormatException e) {                throw new IllegalArgumentException("Invalid number type in "+                                                   "'tref' option");            }            if (trefx < 0 || trefy < 0 || trefx > refx || trefy > refy) {                throw new IllegalArgumentException("Invalid value in 'tref' "+                                                   "option ");            }                        // Instantiate tiler            try {                imgtiler = new Tiler(imgsrc,refx,refy,trefx,trefy,tw,th);            }            catch (IllegalArgumentException e) {                error("Could not tile image"+                      ((e.getMessage() != null) ?                       (":\n"+e.getMessage()) : ""),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }	    int ntiles = imgtiler.getNumTiles();	    // **** Encoder specifications ****            encSpec = new EncoderSpecs(ntiles, ncomp, imgsrc, pl);            // **** Component transformation ****            if (ppminput && pl.getParameter("Mct") != null &&                pl.getParameter("Mct").equals("off")) {                FacilityManager.getMsgLogger().                    printmsg(MsgLogger.WARNING,                             "Input image is RGB and no color transform has "+                             "been specified. Compression performance and "+                             "image quality might be greatly degraded. Use "+                             "the 'Mct' option to specify a color transform");            }            try {                fctransf = new ForwCompTransf(imgtiler,encSpec);            }            catch (IllegalArgumentException e) {                error("Could not instantiate forward component "+                      "transformation"+                          ((e.getMessage() != null) ?                           (":\n"+e.getMessage()) : ""),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            // **** ImgDataConverter ****	    converter = new ImgDataConverter(fctransf);            // **** ForwardWT ****            try {                dwt = ForwardWT.createInstance(converter,pl,encSpec);            }            catch (IllegalArgumentException e) {                error("Could not instantiate wavelet transform"+                      ((e.getMessage() != null) ?                       (":\n"+e.getMessage()) : ""),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            // **** Quantizer ****            try{                quant = Quantizer.createInstance(dwt,encSpec);            }            catch(IllegalArgumentException e) {                error("Could not instantiate quantizer"+                      ((e.getMessage() != null) ?                       (":\n"+e.getMessage()) : ""),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            // **** ROIScaler ****            try{                rois = ROIScaler.createInstance(quant,pl,encSpec);            }            catch (IllegalArgumentException e) {                error("Could not instantiate ROI scaler"+                      ((e.getMessage() != null) ?                       (":\n"+e.getMessage()) : ""),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            // **** EntropyCoder ****            try {                ecoder = EntropyCoder.createInstance(rois,encSpec,pl);            }            catch (IllegalArgumentException e) {                error("Could not instantiate entropy coder"+                      ((e.getMessage() != null) ?                       (":\n"+e.getMessage()) : ""),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            // **** CodestreamWriter ****            try {                // Rely on rate allocator to limit amount of data                bwriter = new FileCodestreamWriter(outname,Integer.MAX_VALUE);            }            catch (IOException e) {                error("Could not open output file"+                      ((e.getMessage() != null) ?                       (":\n"+e.getMessage()) : ""),2);                if(pl.getParameter("debug").equals("on"))                    e.printStackTrace();                else {                    error("Use '-debug' option for more details",2);                }                return;            }            // **** Rate allocator ****            try {                ralloc = PostCompRateAllocator.createInstance(ecoder,pl,rate,                                                              bwriter,encSpec);            }            catch (IllegalArgumentException e) {                error("Could not instantiate rate allocator"+

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -