java.lang.Object|+ - - ImageAccess
classe pública ImageAccess
estende java.lang.Object
ImageAccess é uma camada
da relação para facilitar o acesso aos pixels das
imagens de ImageJ. Os métodos de ImageAccess fornecem uma maneira fácil e robusta de
acesso aos pixels das imagens. Os dados são
armazenados em formato double. Muitos métodos get/put são disponíveis para acessar os dados. Se houver uma
tentativa do usuário de acessar fora da imagem, as condições de contorno de simetria
especular serão aplicadas.
|
|
|
Sumário de Construtores |
|
|
|
|
|
|
|
|
|
Sumário de Métodos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Um objeto ImageAccess
chama este método para acessar uma coluna inteira da imagem. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Métodos herdados da classe java.lang.Object |
|
public static final int PATTERN_SQUARE_3x3
public static final int PATTERN_CROSS_3x3
public ImageAccess(double[][] array)
Cría um
objeto novo de ImageAccess
de uma matriz 2D de double dos pixels.
O tamanho da matriz determina o tamanho da imagem.
Parâmetros:
array
- uma matriz de pixels (2D)
public ImageAccess(ij.process.ImageProcessor ip)
Cría um
objeto novo da classe ImageAccess
de um objeto ImageProcessor. O objeto ImageProcessor contem os dados da
imagem, o tamanho e o tipo da imagem. O ImageProcessor
está fornecido por ImageJ, ele se por um 8-bit,
16-bit.
Parâmetros:
IP
- um objeto de ImageProcessor
fornecido por ImageJ
public ImageAccess(ij.process.ColorProcessor cp,
int colorPlane)
Cría um
objeto novo da classe ImageAccess
de um objeto de ColorProcessor. O objeto de ImageProcessor contem os dados da
imagem, o tamanho e o tipo da imagem. O ColorProcessor
é fornecido por ImageJ, o ImageAccess
contem um plano (vermelho, verde ou azul) selecionado com o parâmetro do colorPlane.
Parâmetros:
PC
- um objeto de ColorProcessor
colorPlane
- índice do plano de cor 0, 1 ou 2
public ImageAccess(int nx,
int ny)
Cría um
objeto novo da classe ImageAccess.
O tamanho da imagem é dado como o parâmetro. Os pixels
dos dados estão vazios e não são inicializados.
Parâmetros:
nx
- o tamanho da imagem ao longo do eixo x
ny
- o tamanho da imagem ao longo
do eixo y
public int getWidth()
Retorne a largura da imagem.
Retornos:
a
largura da imagem
public int getHeight()
Retorna a altura da imagem.
Retornos:
a altura
da imagem
public double getMaximum()
Retorna o valor máximo de ImageAccess.
Retornos:
o valor
máximo
public double getMinimum()
Retorna o valor mínimo de ImageAccess.
Retornos:
o valor
mínimo
public double getMean()
Retorna o valor médio de ImageAccess.
Retornos:
o valor
médio
public double[][] getArrayPixels()
Retorna uma cópia dos dados do pixel organizados em uma matriz 2D.
Retornos:
a 2D
disposição do double
public double[] getPixels()
Retorna uma referência aos dados
dos pixels em double (1D).
Retornos:
Vetor de double
dos pixels em 1D
public ij.process.FloatProcessor createFloatProcessor()
Cria um FloatProcessor dos dados do pixel.
Retornos:
o FloatProcessor
public ij.process.ByteProcessor createByteProcessor()
Cria um ByteProcessor dos dados do pixel.
Retornos:
o ByteProcessor
public ImageAccess duplicate()
Cria um objeto novo de ImageAccess pela duplicação do objeto
corrente de ImageAccess.
Retornos:
um
objeto novo de ImageAccess
public double getPixel(int x,
int y)
Um objeto de ImageAccess chama este método para acessar o nível
cinzento de um pixel selecionado. As condições da
beira do espelho são aplicadas.
Parâmetros:
a entrada x
, o inteiro coordenada x de um pixel
a entrada y
, o inteiro coordenada y de um pixel
Retornos:
o nível
de cinza do pixel (double)
public double getInterpolatedPixel(double x,
double y)
Um objeto de ImageAccess chama este método para acessar o nível de
cinza de um pixel selecionado usando interpolação bilinear. As coordenadas devem ser dadas em double e a interpolação bilinear
é aplicada para achar o nível de cinza. As condições da contorno
do espelho são aplicadas.
Parâmetros:
a
entrada x
, a coordenada double x de um pixel
a
entrada y
, a coordena double y de um pixel
Retornos:
o nível de
cinzao do pixel (double)
public void getColumn(int x,
double[] column)
Um objeto de ImageAccess chama este método para acessar uma coluna
inteira da imagem. A coluna deve criada já com o tamanho correto [ny].
Parâmetros:
x
- a entrada, o inteiro x-coordena
de uma coluna
column
- saída, uma disposição do double do tipo
public void getColumn(int x,
int y,
double[] column)
Um objeto de ImageAccess chama este método para acessar uma parte
da coluna. O ponto início é dado pelo parâmetro de y e o final determinado pelo
tamanho do parâmetro colunm. O parâmetro column já deve estar criado.
Parâmetros:
x
- entrada, o inteiro coordenada x de uma coluna
y
- entrada, ponto início
column
- saída, um vetor do tipo double
public void getRow(int y,
double[] row)
Um objeto de ImageAccess chama este método para acessar uma linha
inteira da imagem. A linha deve criado já com o tamanho correto [ nx ].
Parâmetros:
y
- a entrada, o inteiro coordenada y de uma linha
row
- saída, um vetor do tipo double
public void getRow(int x,
int y,
double[] row)
Um objeto de ImageAccess chama este método para acessar uma parte
da linha. O ponto início é dado pelo parâmetro de y e o fim determinado pelo
tamanho do parâmetro row. O parâmetro row deve estar criado já.
Parâmetros:
x
- entrada, ponto início
y
- a entrada, o inteiro coordenada y de uma linha
row
- saída, um vetor do tipo double
public void getNeighborhood(int x,
int y,
double[][] neigh)
Um objeto ImageAccess chama este método para acessar uma
vizinhança em torno da posição de um pixel. O parâmetro
neigh já deve estar criado. O tamanho da matriz
determina o tamanho da vizinhança. Condições de fronteiras reflexivas são
aplicadas.
O valor de pixel de (x-n/2,
y-n/2) é colocado em neigh[0][0]
...
O valor de pixel de (x+n/2,
y+n/2) é colocado em neigh[n-1][n-1]
Por exemplo, se neigh é um double[4][4]:
O valor de pixel de (x-1, y-1) é colocado em neigh[0][0]
O valor de pixel de (x , y ) é colocado em neigh[1][1]
O valor de pixel de (x+1, y+1) é colocado em neigh[2][2]
O valor de pixel de (x+2, y+2) é colocado em neigh[3][3]
...
Por exemplo, se neigh é um double[5][5]:
O valor de pixel de (x-2, y-2) é colocado em neigh[0][0]
O valor de pixel de (x-1, y-1) é colocado em neigh[1][1]
O valor de pixel de (x , y ) é colocado em neigh[2][2]
O valor de pixel de (x+1, y+1) é colocado em neigh[3][3]
O valor de pixel de (x+2, y+2) é colocado em neigh[4][4]
Parameters:
x
- o inteiro coordenada x de um pixel central selecionado
y
- o inteiro coordenada y de um pixel central selecionado
neigh
- output, a 2D array s
public void getPattern(int x,
int y,
double[] neigh,
int pattern)
Um objeto ImageAccess chama este método para acessar uma
vizinhança de padrão definido em torno de um pixel
selecionado (x,y).
Os padrões disponíveis são:
- um bloco 3*3: PATTERN_SQUARE_3x3 (8-connect)
- uma cruz 3*3: PATTERN_CROSS_3x3 (4-connect)
Condições de fronteiras reflexivas são aplicadas.
Os pixels são arranjados em um vetor 1D, de acordo
com as seguintes regras:
Se o padrão é PATTERN_SQUARE_3x3 (8-connect)
O valor de pixel de (x-1, y-1) é colocado em neigh[0]
O valor de pixel de (x , y-1) é colocado em neigh[1]
O valor de pixel de (x+1,
y-1) é colocado em neigh[2]
O valor de pixel de (x-1, y ) é colocado em neigh[3]
O valor de pixel de (x , y ) é colocado em neigh[4]
O valor de pixel de (x+1, y
) é colocado em neigh[5]
O valor de pixel de (x-1, y+1)
é colocado em neigh[6]
O valor de pixel de (x , y+1)
é colocado em neigh[7]
O valor de pixel de (x+1, y+1) é colocado em neigh[8]
Se o padrão é PATTERN_CROSS_3x3 (4-connect)
O valor de pixel de (x , y-1) é colocado em neigh[0]
O valor de pixel de (x-1, y ) é colocado em neigh[1]
O valor de pixel de (x , y ) é colocado em neigh[2]
O valor de pixel de (x+1, y
) é colocado em neigh[3]
O valor de pixel de (x , y+1)
é colocado em neigh[4]
O vetor neigh deve já estar criado como um vetor double de 9 elementos para PATTERN_SQUARE_3x3 ou 5 elementos para PATTERN_CROSS_3x3.
Parâmetros:
x
– coordenada x de um pixel
central selecionado
y
- coordenada y de um pixel
central selecionado
neigh
– saida, um vetor de 9 ou 5 elementos
pattern
- PATTERN_SQUARE_3x3 ou PATTERN_CROSS_3x3.
public void getSubImage(int x,
int y,
ImageAccess output)
An ImageAccess object
calls this method to get a sub-image with the upper left corner in the
coordinate (x,y). The sub-image
ouptut should be already created.
Parameters:
x
- x-coordinate in the source image
y
- y-coordinate in the source image
output
- an ImageAccess
object with the sub-image;
public void putPixel(int x,
int y,
double value)
An ImageAccess object
calls this method in order a value of the gray level to be put to a position
inside it given by the coordinates.
Parameters:
x
- input,
the integer x-coordinate of a pixel
y
- input,
the integer y-coordinate of a pixel
value
- input, a value of the gray level
of the type double
public void putColumn(int x,
double[] column)
An ImageAccess object
calls this method to put a whole column in a specified position into the image.
Parameters:
x
- input,
the integer x-coordinate of a column
column
- input, an array of the type
double
public void putColumn(int x,
int y,
double[] column)
An ImageAccess object
calls this method to put a part of column into the image. The starting poisition in given by y and the ending position is
determined by the size of the column array.
Parameters:
x
- input,
the integer x-coordinate of a column
y
- input,
the integer y-coordinate of a column
column
- input, an array of the type
double
public void putRow(int y,
double[] row)
An ImageAccess object
calls this method to put a whole row in a specified position into the image.
Parameters:
y
- input,
the integer x-coordinate of a column
row
- input, an array of the type
double
public void putRow(int x,
int y,
double[] row)
An ImageAccess object
calls this method to put a part of row into the image. The starting poisition in given by x and the ending position is
determined by the size of the row array.
Parameters:
x
- input,
the integer x-coordinate of a column
y
- input, the
integer y-coordinate of a column
row
- input, an array of the type
double
public void putArrayPixels(double[][] array)
An ImageAccess object
calls this method in order to put an 2D array of
double in an ImageAccess.
Parameters:
array
- input, the double array
public void putSubImage(int x,
int y,
ImageAccess input)
An ImageAccess object
calls this method to put a sub-image with the upper left corner in the
coordinate (x,y). The
sub-image input should be already created.
Parameters:
x
- x-coordinate in the source image
y
- y-coordinate in the source image
input
- an ImageAccess
object that we want to put;
public void setConstant(double constant)
An ImageAccess object
calls this method to set a constant value to all pixels of the image.
Parameters:
constant
- a constant value
public void normalizeContrast()
Stretches the contrast inside an
image so that the gray levels are in the range 0 to 255.
public void show(java.lang.String title,
java.awt.Point loc)
Display an image at a specific position (x, y).
Parameters:
title
- a string for the title
loc
- Point for the location
public void show(java.lang.String title)
Display an image.
Parameters:
title
- a string for the title of the
window
public void abs()
Compute the absolute value.
public void sqrt()
Compute the square root of an ImageAccess.
public void pow(double a)
Raised an ImageAccess
object to the power a.
Parameters:
a
- input
public void add(double constant)
An ImageAccess object
calls this method for adding a constant to each pixel.
Parameters:
constant
- a constant to be added
public void multiply(double constant)
An ImageAccess object
calls this method for multiplying a constant to each pixel.
Parameters:
constant
- a constant to be multiplied
public void subtract(double constant)
An ImageAccess object
calls this method for adding a constant to each pixel.
Parameters:
constant
- a constant to be added
public void divide(double constant)
An ImageAccess object
calls this method for dividing a constant to each pixel.
Parameters:
constant
- a constant to be multiplied
public void add(ImageAccess im1,
ImageAccess im2)
An ImageAccess object
calls this method for adding two ImageAccess objects.
[this = im1 + im2] The resulting ImageAccess
and the two operands should have the same size.
Parameters:
im1
- an ImageAccess
object to be added
im2
- an ImageAccess
object to be added
public void multiply(ImageAccess im1,
ImageAccess im2)
An ImageAccess object
calls this method for multiplying two ImageAccess
objects. The resulting ImageAccess and the two
operands should have the same size. [this = im1 * im2]
Parameters:
im1
- an ImageAccess
object to be multiplied
im2
- an ImageAccess
object to be multiplied
public void subtract(ImageAccess im1,
ImageAccess im2)
An ImageAccess object
calls this method for subtracting two ImageAccess
objects. The resulting ImageAccess and the two
operands should have the same size. [this = im1 - im2]
Parameters:
im1
- an ImageAccess
object to be subtracted
im2
- an ImageAccess
object to be subtracted
public void divide(ImageAccess im1,
ImageAccess im2)
An ImageAccess object
calls this method for dividing two ImageAccess
objects. [this = im1 / im2] The resulting ImageAccess and the two operands should have the same size.
Parameters:
im1
- numerator
im2
- denominator