Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vil_nitf2_image Class Reference

#include <vil_nitf2_image.h>

Inheritance diagram for vil_nitf2_image:

Inheritance graph
[legend]
List of all members.

Detailed Description

Class for reading NITF 2.1 imagery files.

It works just like any other vil_image_resource class except that it does support retrieving multiple images from the same file. Call nimages() to find out how many images are in this resource, and then call set_current_image() to tell the class which image you want to work with presently. All regular vil_image_resource functions will operate on the current image.

You can access image header information through get_image_headers() and file header information through get_header().

Known reading limitations:

Things that do work:

Definition at line 70 of file vil_nitf2_image.h.

Public Member Functions

 vil_nitf2_image (vil_stream *is)
 Instantiate an image resource, but doesn't read anything.
 vil_nitf2_image (const vcl_string &filePath, const char *mode)
virtual ~vil_nitf2_image ()
virtual unsigned nplanes () const
 return the image info the the current image.
virtual unsigned ni () const
 Dimensions: Planes x ni x nj.
virtual unsigned nj () const
 Dimensions: Planes x ni x nj.
virtual enum vil_pixel_format pixel_format () const
 Pixel Format.
virtual unsigned size_block_i () const
 Block size in columns.
virtual unsigned size_block_j () const
 Block size in rows.
virtual unsigned n_block_i () const
 Number of blocks in image width.
virtual unsigned n_block_j () const
 Number of blocks in image height.
char const * file_format () const
 returns "nitf vM.N".
bool is_jpeg_2000_compressed () const
virtual vil_image_view_base_sptr get_copy_view_decimated_j2k (unsigned i0, unsigned ni, unsigned j0, unsigned nj, double i_factor, double j_factor) const
virtual vil_image_view_base_sptr get_copy_view_decimated_j2k (double i_factor, double j_factor) const
virtual vil_image_view_base_sptr get_copy_view (unsigned i0, unsigned ni, unsigned j0, unsigned nj) const
 Create a read/write view of a copy of this data.
virtual vil_image_view_base_sptr get_copy_view () const
 Create a read/write view of a copy of all the data.
virtual bool put_view (const vil_image_view_base &, unsigned, unsigned)
 Put the data in this view back into the image source.
virtual bool put_block (unsigned, unsigned, const vil_image_view_base &)
 put the block into the resource at the indicated location.
virtual vil_image_view_base_sptr get_block (unsigned int blockIndexX, unsigned int blockIndexY) const
virtual bool get_property (char const *tag, void *property_value=0) const
 Extra property information.
const vcl_vector< vil_nitf2_image_subheader * > & get_image_headers () const
const vil_nitf2_headerget_header () const
const vcl_vector< vil_nitf2_des * > & get_des () const
virtual void set_current_image (unsigned int index)
 Since the VIL API (eg.
virtual unsigned int current_image () const
virtual unsigned int nimages () const
bool parse_headers ()
vil_nitf2_classification::file_version file_version () const
virtual vil_nitf2_field::field_treeget_tree () const
bool put_view (const vil_image_view_base &im)
 Put the data in this view back into the image source at the origin.
virtual vil_image_view_base_sptr get_block (unsigned block_index_i, unsigned block_index_j) const =0
 Block access.
virtual bool get_blocks (unsigned start_block_i, unsigned end_block_i, unsigned start_block_j, unsigned end_block_j, vcl_vector< vcl_vector< vil_image_view_base_sptr > > &blocks) const
 the multiple blocks are in col row order, i.e. blocks[i][j].
virtual bool put_blocks (unsigned start_block_i, unsigned end_block_i, unsigned start_block_j, unsigned end_block_j, vcl_vector< vcl_vector< vil_image_view_base_sptr > > const &blocks)
 put multiple blocks in raster order, i.e.
virtual vil_image_view_base_sptr get_view (unsigned i0, unsigned n_i, unsigned j0, unsigned n_j) const
 Create a read/write view of the data.
vil_image_view_base_sptr get_view () const
 Create a read/write view of all the data.
virtual bool view_fits (const vil_image_view_base &im, unsigned i0, unsigned j0)
 Check that a view will fit into the data at the given offset.

Static Public Attributes

static vil_image_view_base_sptr(* s_decode_jpeg_2000 )(vil_stream *vs, unsigned i0, unsigned ni, unsigned j0, unsigned nj, double i_factor, double j_factor)
 All instances of vil_nitf2_image will use s_decode_jpeg_2000() to decode JPEG 2000 streams if you set the function.

Protected Member Functions

virtual vil_image_view_base_sptr get_block_j2k (unsigned int blockIndexX, unsigned int blockIndexY) const
virtual vil_image_view_base_sptr get_copy_view_uncompressed (unsigned i0, unsigned ni, unsigned j0, unsigned nj) const
vil_streampos get_offset_to (vil_nitf2_header::section_type sec, vil_nitf2_header::portion_type por, unsigned int index=0) const
vil_streampos size_to (vil_nitf2_header::section_type sec, vil_nitf2_header::portion_type por, int index) const
vil_streampos get_offset_to_image_data_block_band (unsigned int imageIndex, unsigned int blockIndexX, unsigned int blockIndexY, int bandIndex) const
void clear_image_headers ()
const vil_nitf2_image_subheadercurrent_image_header () const
void clear_des ()
vil_image_view_base_sptr fill_block (unsigned i0, unsigned icrop, unsigned j0, unsigned jcrop, vil_image_view_base_sptr &view) const
bool block_i_offset (unsigned block_i, unsigned i, unsigned &i_offset) const
 Get the offset from the start of the block row for pixel position i.
bool block_j_offset (unsigned block_j, unsigned j, unsigned &j_offset) const
 Get the offset from the start of the block column for pixel position j.
bool trim_border_blocks (unsigned i0, unsigned ni, unsigned j0, unsigned nj, unsigned start_block_i, unsigned start_block_j, vcl_vector< vcl_vector< vil_image_view_base_sptr > > &blocks) const
vil_image_view_base_sptr glue_blocks_together (const vcl_vector< vcl_vector< vil_image_view_base_sptr > > &blocks) const
void ref ()
void unref ()

Protected Attributes

vil_nitf2_header m_file_header
vcl_vector< vil_nitf2_image_subheader * > m_image_headers
vcl_vector< vil_nitf2_des * > m_des
vil_streamm_stream
unsigned int m_current_image_index
int reference_count_

Friends

class vil_smart_ptr< vil_blocked_image_resource >
class vil_smart_ptr< vil_image_resource >

Related Functions

(Note that these are not member functions.)

template<class destT, class kernelT, class accumT>
vil_image_resource_sptr vil_convolve_1d (const vil_image_resource_sptr &src_im, const destT, const kernelT *kernel, int k_lo, int k_hi, const accumT, vil_convolve_boundary_option start_option, vil_convolve_boundary_option end_option)
 Create an image_resource object which convolve kernel[x] x in [k_lo,k_hi] with srcT.
template<class destT, class kernelT, class accumT>
vil_image_resource_sptr vil_correlate_1d (const vil_image_resource_sptr &src_im, const destT, const kernelT *kernel, vcl_ptrdiff_t k_lo, vcl_ptrdiff_t k_hi, const accumT, vil_convolve_boundary_option start_option, vil_convolve_boundary_option end_option)
 Create an image_resource object which correlate kernel[x] x in [k_lo,k_hi] with srcT.
bool vil_copy_deep (const vil_image_resource_sptr &src, vil_image_resource_sptr &dest)
 Copy src to dest.
vil_image_resource_sptr vil_crop (const vil_image_resource_sptr &src, unsigned i0, unsigned n_i, unsigned j0, unsigned n_j)
 Crop to a region of src.
vil_image_resource_sptr vil_decimate (const vil_image_resource_sptr &src, unsigned i_factor, unsigned j_factor=0)
 decimate to a region of src.
vil_image_resource_sptr vil_load_image_resource (char const *filename)
 Load an image resource object from a file.
vil_image_resource_sptr vil_new_image_resource (unsigned ni, unsigned nj, vil_image_resource_sptr const &prototype)
 Make a new image, similar format to the prototype.
vil_image_resource_sptr vil_new_image_resource (vil_stream *os, unsigned ni, unsigned nj, unsigned nplanes, vil_pixel_format format, char const *file_format)
 Make a new image.
vil_image_resource_sptr vil_new_image_resource (char const *filename, unsigned ni, unsigned nj, vil_image_resource_sptr const &prototype, char const *file_format)
 Make a new vil_image_resource, writing to file "filename", size ni x nj, copying pixel format etc from "prototype".
vil_image_resource_sptr vil_new_image_resource (char const *filename, unsigned ni, unsigned nj, unsigned nplanes, vil_pixel_format format, char const *file_format)
 Make a new image.
vil_image_resource_sptr vil_new_image_resource (vil_stream *os, unsigned ni, unsigned nj, vil_image_resource_sptr const &prototype, char const *file_format)
 Make a new vil_image_resource, writing to stream "os", size ni x nj, copying pixel format etc from "prototype".
vil_image_resource_sptr vil_new_image_resource (char const *filename, unsigned ni, unsigned nj, unsigned nplanes, vil_image_resource_sptr const &prototype, char const *format=0)
 Make a new vil_image_resource, writing to file "filename", size ni x nj, copying pixel format etc from "prototype".
vil_image_resource_sptr vil_new_image_resource (vil_stream *os, unsigned ni, unsigned nj, unsigned nplanes, vil_image_resource_sptr const &prototype, char const *file_format=0)
 Make a new vil_image_resource, writing to stream "os", size ni x nj, copying pixel format etc from "prototype".
bool vil_save_image_resource (const vil_image_resource_sptr &ir, char const *filename, char const *file_format)
 Send vil_image_resource to disk.
bool vil_save_image_resource (const vil_image_resource_sptr &ir, char const *filename)
 Save vil_image_resource to file, deducing format from filename.


Constructor & Destructor Documentation

vil_nitf2_image::vil_nitf2_image vil_stream is  ) 
 

Instantiate an image resource, but doesn't read anything.

You'll want to call parse_headers() before you do anything with me (eg. before you ask for any image data). If that returns false, then I am invalid and useless to you in every way.

Definition at line 137 of file vil_nitf2_image.cxx.

vil_nitf2_image::vil_nitf2_image const vcl_string &  filePath,
const char *  mode
 

Definition at line 144 of file vil_nitf2_image.cxx.

vil_nitf2_image::~vil_nitf2_image  )  [virtual]
 

Definition at line 172 of file vil_nitf2_image.cxx.


Member Function Documentation

bool vil_blocked_image_resource::block_i_offset unsigned  block_i,
unsigned  i,
unsigned &  i_offset
const [protected, inherited]
 

Get the offset from the start of the block row for pixel position i.

Definition at line 136 of file vil_blocked_image_resource.cxx.

bool vil_blocked_image_resource::block_j_offset unsigned  block_j,
unsigned  j,
unsigned &  j_offset
const [protected, inherited]
 

Get the offset from the start of the block column for pixel position j.

Definition at line 151 of file vil_blocked_image_resource.cxx.

void vil_nitf2_image::clear_des  )  [protected]
 

Definition at line 163 of file vil_nitf2_image.cxx.

void vil_nitf2_image::clear_image_headers  )  [protected]
 

Definition at line 155 of file vil_nitf2_image.cxx.

unsigned int vil_nitf2_image::current_image  )  const [virtual]
 

Definition at line 179 of file vil_nitf2_image.cxx.

const vil_nitf2_image_subheader * vil_nitf2_image::current_image_header  )  const [protected]
 

Definition at line 332 of file vil_nitf2_image.cxx.

char const * vil_nitf2_image::file_format  )  const [virtual]
 

returns "nitf vM.N".

Reimplemented from vil_image_resource.

Definition at line 314 of file vil_nitf2_image.cxx.

vil_nitf2_classification::file_version vil_nitf2_image::file_version  )  const
 

Definition at line 309 of file vil_nitf2_image.cxx.

vil_image_view_base_sptr vil_blocked_image_resource::fill_block unsigned  i0,
unsigned  icrop,
unsigned  j0,
unsigned  jcrop,
vil_image_view_base_sptr view
const [protected, inherited]
 

virtual vil_image_view_base_sptr vil_blocked_image_resource::get_block unsigned  block_index_i,
unsigned  block_index_j
const [pure virtual, inherited]
 

Block access.

Implemented in vil_tiff_image, vil_blocked_image_facade, and vil_cached_image_resource.

vil_image_view_base_sptr vil_nitf2_image::get_block unsigned int  blockIndexX,
unsigned int  blockIndexY
const [virtual]
 

Definition at line 633 of file vil_nitf2_image.cxx.

vil_image_view_base_sptr vil_nitf2_image::get_block_j2k unsigned int  blockIndexX,
unsigned int  blockIndexY
const [protected, virtual]
 

Definition at line 616 of file vil_nitf2_image.cxx.

bool vil_blocked_image_resource::get_blocks unsigned  start_block_i,
unsigned  end_block_i,
unsigned  start_block_j,
unsigned  end_block_j,
vcl_vector< vcl_vector< vil_image_view_base_sptr > > &  blocks
const [virtual, inherited]
 

the multiple blocks are in col row order, i.e. blocks[i][j].

Definition at line 37 of file vil_blocked_image_resource.cxx.

virtual vil_image_view_base_sptr vil_nitf2_image::get_copy_view  )  const [inline, virtual]
 

Create a read/write view of a copy of all the data.

Reimplemented from vil_image_resource.

Definition at line 125 of file vil_nitf2_image.h.

vil_image_view_base_sptr vil_nitf2_image::get_copy_view unsigned  i0,
unsigned  ni,
unsigned  j0,
unsigned  nj
const [virtual]
 

Create a read/write view of a copy of this data.

This function will always return a multi-plane scalar-pixel view of the data.

Returns:
0 if unable to get view of correct size, or if resource is write-only.

Reimplemented from vil_blocked_image_resource.

Definition at line 495 of file vil_nitf2_image.cxx.

virtual vil_image_view_base_sptr vil_nitf2_image::get_copy_view_decimated_j2k double  i_factor,
double  j_factor
const [inline, virtual]
 

Definition at line 120 of file vil_nitf2_image.h.

vil_image_view_base_sptr vil_nitf2_image::get_copy_view_decimated_j2k unsigned  i0,
unsigned  ni,
unsigned  j0,
unsigned  nj,
double  i_factor,
double  j_factor
const [virtual]
 

Definition at line 472 of file vil_nitf2_image.cxx.

vil_image_view_base_sptr vil_nitf2_image::get_copy_view_uncompressed unsigned  i0,
unsigned  ni,
unsigned  j0,
unsigned  nj
const [protected, virtual]
 

Definition at line 516 of file vil_nitf2_image.cxx.

const vcl_vector< vil_nitf2_des* >& vil_nitf2_image::get_des  )  const [inline]
 

Definition at line 144 of file vil_nitf2_image.h.

const vil_nitf2_header& vil_nitf2_image::get_header  )  const [inline]
 

Definition at line 142 of file vil_nitf2_image.h.

const vcl_vector< vil_nitf2_image_subheader* >& vil_nitf2_image::get_image_headers  )  const [inline]
 

Definition at line 140 of file vil_nitf2_image.h.

vil_streampos vil_nitf2_image::get_offset_to vil_nitf2_header::section_type  sec,
vil_nitf2_header::portion_type  por,
unsigned int  index = 0
const [protected]
 

Definition at line 59 of file vil_nitf2_image.cxx.

vil_streampos vil_nitf2_image::get_offset_to_image_data_block_band unsigned int  imageIndex,
unsigned int  blockIndexX,
unsigned int  blockIndexY,
int  bandIndex
const [protected]
 

Definition at line 197 of file vil_nitf2_image.cxx.

bool vil_nitf2_image::get_property char const *  tag,
void *  property_value = 0
const [virtual]
 

Extra property information.

Implements vil_blocked_image_resource.

Definition at line 797 of file vil_nitf2_image.cxx.

vil_nitf2_field::field_tree * vil_nitf2_image::get_tree  )  const [virtual]
 

Definition at line 823 of file vil_nitf2_image.cxx.

vil_image_view_base_sptr vil_image_resource::get_view  )  const [inline, inherited]
 

Create a read/write view of all the data.

Definition at line 68 of file vil_image_resource.h.

virtual vil_image_view_base_sptr vil_image_resource::get_view unsigned  i0,
unsigned  n_i,
unsigned  j0,
unsigned  n_j
const [inline, virtual, inherited]
 

Create a read/write view of the data.

Modifying this view might modify the actual data. If you want to modify this data in place, call put_view after you done, and it should work efficiently. This function will always return a multi-plane scalar-pixel view of the data.

Returns:
0 if unable to get view of correct size, or if resource is write-only.
If you want to fill an existing view (e.g. a window onto some other image), then use
   vil_reformat(data->get_view(..), window);
  

Reimplemented in vil_dicom_image, vil_clamp_image_resource, vil_crop_image_resource, vil_decimate_image_resource, vil_flip_lr_image_resource, vil_flip_ud_image_resource, vil_memory_image, vil_plane_image_resource, and vil_transpose_image_resource.

Definition at line 63 of file vil_image_resource.h.

vil_image_view_base_sptr vil_blocked_image_resource::glue_blocks_together const vcl_vector< vcl_vector< vil_image_view_base_sptr > > &  blocks  )  const [protected, inherited]
 

Definition at line 72 of file vil_blocked_image_resource.cxx.

bool vil_nitf2_image::is_jpeg_2000_compressed  )  const
 

Definition at line 462 of file vil_nitf2_image.cxx.

unsigned int vil_nitf2_image::n_block_i  )  const [virtual]
 

Number of blocks in image width.

Reimplemented from vil_blocked_image_resource.

Definition at line 438 of file vil_nitf2_image.cxx.

unsigned int vil_nitf2_image::n_block_j  )  const [virtual]
 

Number of blocks in image height.

Reimplemented from vil_blocked_image_resource.

Definition at line 443 of file vil_nitf2_image.cxx.

unsigned vil_nitf2_image::ni  )  const [virtual]
 

Dimensions: Planes x ni x nj.

The number of pixels in each row.

Implements vil_blocked_image_resource.

Definition at line 343 of file vil_nitf2_image.cxx.

unsigned int vil_nitf2_image::nimages  )  const [virtual]
 

Definition at line 190 of file vil_nitf2_image.cxx.

unsigned vil_nitf2_image::nj  )  const [virtual]
 

Dimensions: Planes x ni x nj.

The number of pixels in each column.

Implements vil_blocked_image_resource.

Definition at line 357 of file vil_nitf2_image.cxx.

unsigned vil_nitf2_image::nplanes  )  const [virtual]
 

return the image info the the current image.

Implements vil_blocked_image_resource.

Definition at line 338 of file vil_nitf2_image.cxx.

bool vil_nitf2_image::parse_headers  ) 
 

Definition at line 275 of file vil_nitf2_image.cxx.

enum vil_pixel_format vil_nitf2_image::pixel_format  )  const [virtual]
 

Pixel Format.

A standard RGB RGB RGB of chars image has pixel_format() == VIL_PIXEL_FORMAT_BYTE

Implements vil_blocked_image_resource.

Definition at line 371 of file vil_nitf2_image.cxx.

virtual bool vil_nitf2_image::put_block unsigned  ,
unsigned  ,
const vil_image_view_base
[inline, virtual]
 

put the block into the resource at the indicated location.

Implements vil_blocked_image_resource.

Definition at line 131 of file vil_nitf2_image.h.

bool vil_blocked_image_resource::put_blocks unsigned  start_block_i,
unsigned  end_block_i,
unsigned  start_block_j,
unsigned  end_block_j,
vcl_vector< vcl_vector< vil_image_view_base_sptr > > const &  blocks
[virtual, inherited]
 

put multiple blocks in raster order, i.e.

, blocks[i][j].

Definition at line 58 of file vil_blocked_image_resource.cxx.

bool vil_image_resource::put_view const vil_image_view_base im  )  [inline, inherited]
 

Put the data in this view back into the image source at the origin.

Definition at line 91 of file vil_image_resource.h.

virtual bool vil_nitf2_image::put_view const vil_image_view_base ,
unsigned  ,
unsigned 
[inline, virtual]
 

Put the data in this view back into the image source.

The view must be of scalar components. Assign your view to a scalar-component view if this is not the case.

Returns:
false if failed, because e.g. resource is read-only, format of view is not correct (if it is a compound pixel type, try assigning it to a multi-plane scalar pixel view.)

Implements vil_blocked_image_resource.

Definition at line 128 of file vil_nitf2_image.h.

void vil_image_resource::ref  )  [inline, protected, inherited]
 

Definition at line 109 of file vil_image_resource.h.

void vil_nitf2_image::set_current_image unsigned int  index  )  [virtual]
 

Since the VIL API (eg.

get_view()) for retrieving image data doesn't support files with multiple images, clients will need to call this function to tell get_view() which image to read in.

Overloaded from vil_image_resource. The NITF 2.x file format does support multiple images per file and you can use this API to access each and every one of them.

Note: By default, the first image is always used. If you don't call this function at all, then you will only see the first image in a given file.

Definition at line 184 of file vil_nitf2_image.cxx.

unsigned int vil_nitf2_image::size_block_i  )  const [virtual]
 

Block size in columns.

Implements vil_blocked_image_resource.

Definition at line 428 of file vil_nitf2_image.cxx.

unsigned int vil_nitf2_image::size_block_j  )  const [virtual]
 

Block size in rows.

Implements vil_blocked_image_resource.

Definition at line 433 of file vil_nitf2_image.cxx.

vil_streampos vil_nitf2_image::size_to vil_nitf2_header::section_type  sec,
vil_nitf2_header::portion_type  por,
int  index
const [protected]
 

Definition at line 80 of file vil_nitf2_image.cxx.

bool vil_blocked_image_resource::trim_border_blocks unsigned  i0,
unsigned  ni,
unsigned  j0,
unsigned  nj,
unsigned  start_block_i,
unsigned  start_block_j,
vcl_vector< vcl_vector< vil_image_view_base_sptr > > &  blocks
const [protected, inherited]
 

Definition at line 168 of file vil_blocked_image_resource.cxx.

void vil_image_resource::unref  )  [inline, protected, inherited]
 

Definition at line 110 of file vil_image_resource.h.

bool vil_image_resource::view_fits const vil_image_view_base im,
unsigned  i0,
unsigned  j0
[virtual, inherited]
 

Check that a view will fit into the data at the given offset.

This includes checking that the pixel type is scalar.

Definition at line 30 of file vil_image_resource.cxx.


Friends And Related Function Documentation

template<class destT, class kernelT, class accumT>
vil_image_resource_sptr vil_convolve_1d const vil_image_resource_sptr src_im,
const destT  ,
const kernelT *  kernel,
int  k_lo,
int  k_hi,
const accumT  ,
vil_convolve_boundary_option  start_option,
vil_convolve_boundary_option  end_option
[related, inherited]
 

Create an image_resource object which convolve kernel[x] x in [k_lo,k_hi] with srcT.

Note:
This function reverses the kernel. If you don't want the kernel reversed, use vil_correlate_1d instead.
Parameters:
kernel should point to tap 0.

Definition at line 404 of file vil_convolve_1d.h.

bool vil_copy_deep const vil_image_resource_sptr src,
vil_image_resource_sptr dest
[related, inherited]
 

Copy src to dest.

This is useful if you want to copy on image into a window on another image. src and dest must have identical sizes, and pixel-types. Returns false if the copy failed. O(size).

Definition at line 44 of file vil_copy.cxx.

template<class destT, class kernelT, class accumT>
vil_image_resource_sptr vil_correlate_1d const vil_image_resource_sptr src_im,
const destT  ,
const kernelT *  kernel,
vcl_ptrdiff_t  k_lo,
vcl_ptrdiff_t  k_hi,
const accumT  ,
vil_convolve_boundary_option  start_option,
vil_convolve_boundary_option  end_option
[related, inherited]
 

Create an image_resource object which correlate kernel[x] x in [k_lo,k_hi] with srcT.

Note:
This function does not reverse the kernel. If you want the kernel reversed, use vil_convolve_1d instead.
Parameters:
kernel should point to tap 0.

Definition at line 214 of file vil_correlate_1d.h.

vil_image_resource_sptr vil_crop const vil_image_resource_sptr src,
unsigned  i0,
unsigned  n_i,
unsigned  j0,
unsigned  n_j
[related, inherited]
 

Crop to a region of src.

Definition at line 14 of file vil_crop.cxx.

vil_image_resource_sptr vil_decimate const vil_image_resource_sptr src,
unsigned  i_factor,
unsigned  j_factor = 0
[related, inherited]
 

decimate to a region of src.

vil_image_resource_sptr vil_load_image_resource char const *  filename  )  [related, inherited]