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

vil_tiff_image Class Reference

#include <vil_tiff.h>

Inheritance diagram for vil_tiff_image:

Inheritance graph
[legend]
List of all members.

Detailed Description

Generic image interface for image TIFF image files (could have multiple images).

Definition at line 143 of file vil_tiff.h.

Public Member Functions

 vil_tiff_image (tif_smart_ptr const &tif, vil_tiff_header *th, const unsigned nimages=1)
 ~vil_tiff_image ()
virtual unsigned nplanes () const
 Dimensions: planes x width x height x components.
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.
char const * file_format () const
 returns "tiff".
virtual unsigned size_block_i () const
 Block size in columns (must be a multiple of 16).
virtual unsigned size_block_j () const
 Block size in rows (must be a multiple of 16).
virtual unsigned n_block_i () const
 Number of blocks in image width.
virtual unsigned n_block_j () const
 Number of blocks in image height.
virtual vil_image_view_base_sptr get_block (unsigned block_index_i, unsigned block_index_j) const
 Block access.
virtual bool put_block (unsigned block_index_i, unsigned block_index_j, const vil_image_view_base &blk)
 put the block into the resource at the indicated location.
virtual bool put_view (const vil_image_view_base &im, unsigned i0, unsigned j0)
 Put the data in this view back into the image source.
virtual bool get_property (char const *tag, void *prop=0) const
 Return true if the property given in the first argument has been set.
unsigned int nimages () const
 indicates the number of images in the tiff file.
unsigned int index () const
 the image index for multiple image files.
void set_index (const unsigned int index)
 point to a particular image in the file.
virtual vil_image_view_base_sptr get_copy_view (unsigned i0, unsigned n_i, unsigned j0, unsigned n_j) const
 Create a read/write view of a copy of this data.
vil_image_view_base_sptr get_copy_view () const
 Create a read/write view of a copy of all the data.
bool put_view (const vil_image_view_base &im)
 Put the data in this view back into the image source at the origin.
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.

Protected Member Functions

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

int reference_count_

Private Member Functions

unsigned samples_per_block () const
 the number of samples in a block.
enum vil_pixel_format compute_pixel_format ()
void copy_byte_block (vxl_byte *data, const vxl_uint_32 nbytes, vil_memory_chunk_sptr &cnk) const
vil_image_view_base_sptr view_from_buffer (vil_pixel_format &fmt, vil_memory_chunk_sptr const &buf, unsigned samples_per_block, unsigned bits_per_sample) const
 convert a packed block to an expanded view.
vil_image_view_base_sptr fill_block_from_tile (vil_memory_chunk_sptr const &buf) const
 the key methods for decoding the file data.
vil_image_view_base_sptr fill_block_from_strip (vil_memory_chunk_sptr const &buf) const
bool put_block (unsigned bi, unsigned bj, unsigned i0, unsigned j0, const vil_image_view_base &im)
unsigned block_index (unsigned block_i, unsigned block_j) const
void pad_block_with_zeros (unsigned ioff, unsigned joff, unsigned iclip, unsigned jclip, unsigned bytes_per_pixel, vxl_byte *block_buf)
 fill out the block with leading zeros or trailing zeros if necessary.
void fill_block_from_view (unsigned bi, unsigned bj, unsigned i0, unsigned j0, unsigned ioff, unsigned joff, unsigned iclip, unsigned jclip, const vil_image_view_base &im, vxl_byte *&block_buf)
 fill the block with view data.
void bitpack_block (unsigned bytes_per_block, vxl_byte *in_block_buf, vxl_byte *out_block_buf)
bool write_block_to_file (unsigned bi, unsigned bj, unsigned block_size_bytes, vxl_byte *block_buf)

Private Attributes

tif_smart_ptr t_
 the TIFF handle to the open resource file.
vil_tiff_headerh_
 the TIFF header information.
unsigned int index_
 the default image header index.
unsigned int nimages_
 number of images in the file.

Friends

class vil_tiff_file_format
class vil_tiff_pyramid_resource
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_tiff_image::vil_tiff_image tif_smart_ptr const &  tif,
vil_tiff_header th,
const unsigned  nimages = 1
 

Definition at line 356 of file vil_tiff.cxx.

vil_tiff_image::~vil_tiff_image  ) 
 

Definition at line 408 of file vil_tiff.cxx.


Member Function Documentation

void vil_tiff_image::bitpack_block unsigned  bytes_per_block,
vxl_byte *  in_block_buf,
vxl_byte *  out_block_buf
[private]
 

Definition at line 987 of file vil_tiff.cxx.

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.

unsigned vil_tiff_image::block_index unsigned  block_i,
unsigned  block_j
const [private]
 

Definition at line 592 of file vil_tiff.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.

enum vil_pixel_format vil_tiff_image::compute_pixel_format  )  [private]
 

void vil_tiff_image::copy_byte_block vxl_byte *  data,
const vxl_uint_32  nbytes,
vil_memory_chunk_sptr cnk
const [private]
 

Definition at line 608 of file vil_tiff.cxx.

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

returns "tiff".

Reimplemented from vil_image_resource.

Definition at line 416 of file vil_tiff.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]
 

vil_image_view_base_sptr vil_tiff_image::fill_block_from_strip vil_memory_chunk_sptr const &  buf  )  const [private]
 

Definition at line 761 of file vil_tiff.cxx.

vil_image_view_base_sptr vil_tiff_image::fill_block_from_tile vil_memory_chunk_sptr const &  buf  )  const [private]
 

the key methods for decoding the file data.

Definition at line 741 of file vil_tiff.cxx.

void vil_tiff_image::fill_block_from_view unsigned  bi,
unsigned  bj,
unsigned  i0,
unsigned  j0,
unsigned  ioff,
unsigned  joff,
unsigned  iclip,
unsigned  jclip,
const vil_image_view_base im,
vxl_byte *&  block_buf
[private]
 

fill the block with view data.

Definition at line 884 of file vil_tiff.cxx.

vil_image_view_base_sptr vil_tiff_image::get_block unsigned  block_index_i,
unsigned  block_index_j
const [virtual]
 

Block access.

Implements vil_blocked_image_resource.

Definition at line 661 of file vil_tiff.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.

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

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

Reimplemented in vil_j2k_image, and vil_nitf2_image.

Definition at line 79 of file vil_image_resource.h.

vil_image_view_base_sptr vil_blocked_image_resource::get_copy_view unsigned  i0,
unsigned  n_i,
unsigned  j0,
unsigned  n_j
const [virtual, inherited]
 

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.

Implements vil_image_resource.

Reimplemented in vil_nitf2_image, and vil_blocked_image_facade.

Definition at line 241 of file vil_blocked_image_resource.cxx.

bool vil_tiff_image::get_property char const *  tag,
void *  prop = 0
const [virtual]
 

Return true if the property given in the first argument has been set.

currently defined: "quantisation_depth" - number of relevant bits per pixel "size_block_i" and "size_block_j" - block dimensions

Implements vil_blocked_image_resource.

Definition at line 362 of file vil_tiff.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.

unsigned int vil_tiff_image::index  )  const [inline]
 

the image index for multiple image files.

Definition at line 209 of file vil_tiff.h.

unsigned vil_tiff_image::n_block_i  )  const [virtual]
 

Number of blocks in image width.

Reimplemented from vil_blocked_image_resource.

Definition at line 570 of file vil_tiff.cxx.

unsigned vil_tiff_image::n_block_j  )  const [virtual]
 

Number of blocks in image height.

Reimplemented from vil_blocked_image_resource.

Definition at line 580 of file vil_tiff.cxx.

unsigned vil_tiff_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 529 of file vil_tiff.cxx.

unsigned int vil_tiff_image::nimages  )  const [inline]
 

indicates the number of images in the tiff file.

Definition at line 206 of file vil_tiff.h.

unsigned vil_tiff_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 536 of file vil_tiff.cxx.

unsigned vil_tiff_image::nplanes  )  const [virtual]
 

Dimensions: planes x width x height x components.

Implements vil_blocked_image_resource.

Definition at line 524 of file vil_tiff.cxx.

void vil_tiff_image::pad_block_with_zeros unsigned  ioff,
unsigned  joff,
unsigned  iclip,
unsigned  jclip,
unsigned  bytes_per_pixel,
vxl_byte *  block_buf
[private]
 

fill out the block with leading zeros or trailing zeros if necessary.

Definition at line 847 of file vil_tiff.cxx.

vil_pixel_format vil_tiff_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 403 of file vil_tiff.cxx.

bool vil_tiff_image::put_block unsigned  bi,
unsigned  bj,
unsigned  i0,
unsigned  j0,
const vil_image_view_base im
[private]
 

Definition at line 1029 of file vil_tiff.cxx.

bool vil_tiff_image::put_block unsigned  block_index_i,
unsigned  block_index_j,
const vil_image_view_base blk
[virtual]
 

put the block into the resource at the indicated location.

Implements vil_blocked_image_resource.

Definition at line 1105 of file vil_tiff.cxx.

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.

bool vil_tiff_image::put_view const vil_image_view_base im,
unsigned  i0,
unsigned  j0
[virtual]
 

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

Implements vil_blocked_image_resource.

Definition at line 1086 of file vil_tiff.cxx.

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

Definition at line 109 of file vil_image_resource.h.

unsigned vil_tiff_image::samples_per_block  )  const [private]
 

the number of samples in a block.

Definition at line 598 of file vil_tiff.cxx.

void vil_tiff_image::set_index const unsigned int  index  )  [inline]
 

point to a particular image in the file.

Definition at line 211 of file vil_tiff.h.

unsigned vil_tiff_image::size_block_i  )  const [virtual]
 

Block size in columns (must be a multiple of 16).

Implements vil_blocked_image_resource.

Definition at line 544 of file vil_tiff.cxx.

unsigned vil_tiff_image::size_block_j  )  const [virtual]
 

Block size in rows (must be a multiple of 16).

Implements vil_blocked_image_resource.

Definition at line 557 of file vil_tiff.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.

vil_image_view_base_sptr vil_tiff_image::view_from_buffer vil_pixel_format &  fmt,
vil_memory_chunk_sptr const &  buf,
unsigned  samples_per_block,
unsigned  bits_per_sample
const [private]
 

convert a packed block to an expanded view.

Definition at line 619 of file vil_tiff.cxx.

bool vil_tiff_image::write_block_to_file unsigned  bi,
unsigned  bj,
unsigned  block_size_bytes,
vxl_byte *  block_buf
[private]
 

Definition at line 971 of file vil_tiff.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]
 

Load an image resource object from a file.

Definition at line 52 of file vil_load.cxx.

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
[related, inherited]
 

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
[related, inherited]
 

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,
vil_image_resource_sptr const &  prototype,
char const *  file_format
[related, inherited]
 

Make a new vil_image_resource, writing to stream "os", size ni x nj, copying pixel format etc from "prototype".

Definition at line 141 of file vil_new.cxx.

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
[related, inherited]
 

Make a new image.

Definition at line 122 of file vil_new.cxx.