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.image.input.ImgReaderPGM; 047 048/** 049 * This class contains the shape of a single ROI. In the current 050 * implementation only rectangles and circles are supported. 051 * 052 * @see ROIMaskGenerator 053 */ 054public class ROI{ 055 056 /** ImgReaderPGM object with the arbrtrary ROI */ 057 public ImgReaderPGM maskPGM = null; 058 059 /** Where or not the ROI shape is arbitrary */ 060 public boolean arbShape; 061 062 /** Flag indicating whether the ROI is rectangular or not */ 063 public boolean rect; 064 065 /** The components for which the ROI is relevant */ 066 public int comp; 067 068 /** x coordinate of upper left corner of rectangular ROI */ 069 public int ulx; 070 071 /** y coordinate of upper left corner of rectangular ROI */ 072 public int uly; 073 074 /** width of rectangular ROI */ 075 public int w; 076 077 /** height of rectangular ROI */ 078 public int h; 079 080 /** x coordinate of center of circular ROI */ 081 public int x; 082 083 /** y coordinate of center of circular ROI */ 084 public int y; 085 086 /** radius of circular ROI */ 087 public int r; 088 089 090 /** 091 * Constructor for ROI with arbitrary shape 092 * 093 * @param comp The component the ROI belongs to 094 * 095 * @param maskPGM ImgReaderPGM containing the ROI 096 */ 097 public ROI(int comp, ImgReaderPGM maskPGM){ 098 arbShape = true; 099 rect = false; 100 this.comp = comp; 101 this.maskPGM = maskPGM; 102 } 103 104 /** 105 * Constructor for rectangular ROIs 106 * 107 * @param comp The component the ROI belongs to 108 * 109 * @param x x-coordinate of upper left corner of ROI 110 * 111 * @param y y-coordinate of upper left corner of ROI 112 * 113 * @param w width of ROI 114 * 115 * @param h height of ROI 116 */ 117 public ROI(int comp, int ulx, int uly, int w, int h){ 118 arbShape = false; 119 this.comp = comp; 120 this.ulx = ulx; 121 this.uly = uly; 122 this.w = w; 123 this.h = h; 124 rect = true; 125 } 126 127 /** 128 * Constructor for circular ROIs 129 * 130 * @param comp The component the ROI belongs to 131 * 132 * @param x x-coordinate of center of ROI 133 * 134 * @param y y-coordinate of center of ROI 135 * 136 * @param w radius of ROI 137 */ 138 public ROI(int comp, int x, int y, int rad){ 139 arbShape = false; 140 this.comp = comp; 141 this.x = x; 142 this.y = y; 143 this.r = rad; 144 } 145 146 /** 147 * This function prints all relevant data for the ROI 148 */ 149 public String toString(){ 150 if(arbShape) { 151 return "ROI with arbitrary shape, PGM file= "+maskPGM; 152 } 153 else if(rect) 154 return "Rectangular ROI, comp="+comp+" ulx="+ulx+" uly="+uly+ 155 " w="+w+" h="+h; 156 else 157 return "Circular ROI, comp="+comp+" x="+x+" y="+y+ 158 " radius="+r; 159 160 } 161 162} 163 164 165 166 167 168 169 170 171