001/* 002 * $RCSfile: ROI.java,v $ 003 * $Revision: 1.1 $ 004 * $Date: 2005/02/11 05:02:22 $ 005 * $State: Exp $ 006 * 007 * Class: ROI 008 * 009 * Description: This class describes a single ROI 010 * 011 * 012 * 013 * COPYRIGHT: 014 * 015 * This software module was originally developed by Raphaël Grosbois and 016 * Diego Santa Cruz (Swiss Federal Institute of Technology-EPFL); Joel 017 * Askelöf (Ericsson Radio Systems AB); and Bertrand Berthelot, David 018 * Bouchard, Félix Henry, Gerard Mozelle and Patrice Onno (Canon Research 019 * Centre France S.A) in the course of development of the JPEG2000 020 * standard as specified by ISO/IEC 15444 (JPEG 2000 Standard). This 021 * software module is an implementation of a part of the JPEG 2000 022 * Standard. Swiss Federal Institute of Technology-EPFL, Ericsson Radio 023 * Systems AB and Canon Research Centre France S.A (collectively JJ2000 024 * Partners) agree not to assert against ISO/IEC and users of the JPEG 025 * 2000 Standard (Users) any of their rights under the copyright, not 026 * including other intellectual property rights, for this software module 027 * with respect to the usage by ISO/IEC and Users of this software module 028 * or modifications thereof for use in hardware or software products 029 * claiming conformance to the JPEG 2000 Standard. Those intending to use 030 * this software module in hardware or software products are advised that 031 * their use may infringe existing patents. The original developers of 032 * this software module, JJ2000 Partners and ISO/IEC assume no liability 033 * for use of this software module or modifications thereof. No license 034 * or right to this software module is granted for non JPEG 2000 Standard 035 * conforming products. JJ2000 Partners have full right to use this 036 * software module for his/her own purpose, assign or donate this 037 * software module to any third party and to inhibit third parties from 038 * using this software module for non JPEG 2000 Standard conforming 039 * products. This copyright notice must be included in all copies or 040 * derivative works of this software module. 041 * 042 * Copyright (c) 1999/2000 JJ2000 Partners. 043 */ 044package jj2000.j2k.roi.encoder; 045 046import jj2000.j2k.codestream.writer.*; 047import jj2000.j2k.wavelet.analysis.*; 048import jj2000.j2k.quantization.*; 049import jj2000.j2k.image.input.*; 050import jj2000.j2k.wavelet.*; 051import jj2000.j2k.image.*; 052import jj2000.j2k.util.*; 053import jj2000.j2k.roi.*; 054 055/** 056 * This class contains the shape of a single ROI. In the current 057 * implementation only rectangles and circles are supported. 058 * 059 * @see ROIMaskGenerator 060 */ 061public class ROI{ 062 063 /** ImgReaderPGM object with the arbrtrary ROI */ 064 public ImgReaderPGM maskPGM = null; 065 066 /** Where or not the ROI shape is arbitrary */ 067 public boolean arbShape; 068 069 /** Flag indicating whether the ROI is rectangular or not */ 070 public boolean rect; 071 072 /** The components for which the ROI is relevant */ 073 public int comp; 074 075 /** x coordinate of upper left corner of rectangular ROI */ 076 public int ulx; 077 078 /** y coordinate of upper left corner of rectangular ROI */ 079 public int uly; 080 081 /** width of rectangular ROI */ 082 public int w; 083 084 /** height of rectangular ROI */ 085 public int h; 086 087 /** x coordinate of center of circular ROI */ 088 public int x; 089 090 /** y coordinate of center of circular ROI */ 091 public int y; 092 093 /** radius of circular ROI */ 094 public int r; 095 096 097 /** 098 * Constructor for ROI with arbitrary shape 099 * 100 * @param comp The component the ROI belongs to 101 * 102 * @param maskPGM ImgReaderPGM containing the ROI 103 */ 104 public ROI(int comp, ImgReaderPGM maskPGM){ 105 arbShape = true; 106 rect = false; 107 this.comp = comp; 108 this.maskPGM = maskPGM; 109 } 110 111 /** 112 * Constructor for rectangular ROIs 113 * 114 * @param comp The component the ROI belongs to 115 * 116 * @param x x-coordinate of upper left corner of ROI 117 * 118 * @param y y-coordinate of upper left corner of ROI 119 * 120 * @param w width of ROI 121 * 122 * @param h height of ROI 123 */ 124 public ROI(int comp, int ulx, int uly, int w, int h){ 125 arbShape = false; 126 this.comp = comp; 127 this.ulx = ulx; 128 this.uly = uly; 129 this.w = w; 130 this.h = h; 131 rect = true; 132 } 133 134 /** 135 * Constructor for circular ROIs 136 * 137 * @param comp The component the ROI belongs to 138 * 139 * @param x x-coordinate of center of ROI 140 * 141 * @param y y-coordinate of center of ROI 142 * 143 * @param w radius of ROI 144 */ 145 public ROI(int comp, int x, int y, int rad){ 146 arbShape = false; 147 this.comp = comp; 148 this.x = x; 149 this.y = y; 150 this.r = rad; 151 } 152 153 /** 154 * This function prints all relevant data for the ROI 155 */ 156 public String toString(){ 157 if(arbShape) { 158 return "ROI with arbitrary shape, PGM file= "+maskPGM; 159 } 160 else if(rect) 161 return "Rectangular ROI, comp="+comp+" ulx="+ulx+" uly="+uly+ 162 " w="+w+" h="+h; 163 else 164 return "Circular ROI, comp="+comp+" x="+x+" y="+y+ 165 " radius="+r; 166 167 } 168 169} 170 171 172 173 174 175 176 177 178