Análise e Processamento de Imagem



Documentos relacionados
O IDL é uma linguagem baseada em matrizes sejam elas unidimensionais (vetores) ou bidimensionais.

Gráfico em Linha. IDL> plot, chirp

Organização do Guia. Esta é uma tentativa de facilitar a compreensão deste manual de IDL. Foi utilizado um estilo de manual típico, como segue abaixo.

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;

Introdução à Linguagem

Introdução ao FORTRAN (Parte I)

Programação de Computadores. Professor Ilaim Costa Junior

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

OBS.: Qualquer variável utilizada num subprograma que não for parâmetro deve ser considerada como variável local.

JSP - ORIENTADO A OBJETOS

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 4 PROF. MARCELO LUIZ SILVA (R E D)

Linguagem de Programação. Introdução ao PHP. Prof Mauricio Lederer Ciência da Computação - UNIANDRADE 1

Componentes da linguagem C++

Rotinas de Manipulação de Arquivos

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Tipo de Dados em Linguagem C

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Sistemas Microcontrolados

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Introdução à Programação

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

Java Como Programar, 8/E

PROG. DE COMPUTADORES II SI Arquivos

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Algoritmos e Programação

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

APOSTILA PHP PARTE 1

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Programação Básica em Arduino Aula 2

3 Classes e instanciação de objectos (em Java)

Organização de programas em Python. Vanessa Braganholo

Sintaxe Básica de Java Parte 1

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

INTRODUÇÃO OBJECT PASCAL/DELPHI

Tutorial de Matlab Francesco Franco

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

ESTRUTURA BÁSICA DE UM PROGRAMA JAVA

#define SIM 1 equivale a definição de constantes; a palavra SIM é substituída por 1 toda vez que é utilizada no programa.

Capítulo 2: Introdução à Linguagem C

PROGRAMAÇÃO II 4. ÁRVORE

10) REGISTROS : Exemplos: var N,I: integer; A,B,C: real; CHAVE: boolean; CARAC: char; V: array[1..20] of real; M: array[1..10,1..

ESTRUTURA DE DADOS PILHA

AMBIENTE DE PROGRAMAÇÃO PYTHON

Algoritmos e Programação _ Departamento de Informática

A4 Projeto Integrador e Lista de Jogos

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

Linguagem de Programação

ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS. Prof. Angelo Augusto Frozza, M.Sc.

Pragmática das Linguagens de Programação 2004/2005

Resumo da Introdução de Prática de Programação com C. A Linguagem C

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Javascript 101. Parte 2

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.

Nenhum dado é perdido durante o processo de compressão. Preserva todas as informações que permitirão a reconstrução exata da imagem. Reversível.

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Programando em C++ Histórico da Linguagem C

Aluísio Eustáquio da Silva

CONVENÇÃO DE CÓDIGO JAVA

Tarefa Orientada 18 Procedimentos armazenados

PROGRAMAÇÃO PARA DESIGNERS - OPERADORES

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Introdução a POO. Introdução a Linguagem C++ e POO

Informática II Ficha 5_resolução

INF 1005 Programação I

Programação em C++: Introdução

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Pratica JFlex. Prática criando o primeiro analisador léxico

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Algumas notas sobre PASCAL

Polimorfismo. Prof. Leonardo Barreto Campos 1

1. Domínio dos Atributos

Linguagens de Programação

Programação de Computadores III

1. PROLOGO ==========

Logado no OracleXE vamos acessar a opção:

Programação Básica em STEP 7 Blocos de Dados. SITRAIN Training for Automation and Drives. Página 8-1

Programação Recursiva versão 1.02

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Capítulo 13. VARIÁVEIS DO TIPO REAL DUPLA

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

AULA Uma linguagem de programação orientada a objetos

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

Tabela de símbolos: tabelas de espalhamento

Transcrição:

Análise e Processamento de Imagem Rui Bernardes rcbengbiomed@gmail.com Case insensitive, excepto em comandos que interagem com o sistema operativo Regras que ajudam a interpretar o código comandos e keywords com a primeira letra maiúscula, ex: surface, data, charsize=2.0, color=180 vs. Surface, data, CharSize=2.0, Color=180 variáveis com a primeira letra sempre minúscula (embora possam existir outras maiúsculas), ex: data = FIndGen(11) buttonvalue = thisvalue prttodata = Ptr_New() data = FIndGen(11) buttonvalue = thisvalue prttodata = Ptr_New() Eng. Biomédica 2007/08 1

Caractere de continuação de linha $ info = { r:r, $ g:g, $ b:b } é equivalente a info = { r:r, g:g, b:b } Múltiplos comandos na mesma linha, caractere & a = 3 & b = 5 Comentários tudo o que se seguir a ; no inicio, ou não, de uma linha de comando ; isto é um comentário FOR j=0,10 DO BEGIN data = j*2 count = count + j ; actualiza count comentário inútil ENDFOR Contour, peak, lon, lat, XStyle=1, YStyle=1, /Follow, $ Levels=vals, C_Labels=[1,0,1,0,0,1,1,0] Contour é o nome do comando que se pretende correr, tudo o resto são parâmetros desse comando... As variáveis peak, lon, lat são parâmetros posicionais, que neste caso são parâmetros de entrada... Não é possível distinguir (sem conhecer os comandos em questão) se um parâmetro é de entrada, saída ou ambos... Os parâmetros posicionais têm uma ordem definida. Os parâmetros keyword não têm uma ordem definida e podem estar misturados com os posicionais (embora não seja uma boa ideia para a clareza do código). Exemplos: XStyle=1, YStyle=1, Levels=vals, C_Labels=[1,0,1,0,0,1,1,0]. As keyword parameters podem também ser usadas na forma /keyword, ex. /Follow, para o caso da parâmetros binários. Neste caso /Follow é o mesmo que Follow=1. O mesmo poderia ter sido feito com XStyle=1 (/XStyle), mas isso daria a impressão que XStyle seria binária, o que não é... Eng. Biomédica 2007/08 2

Procedimentos e Funções No caso das funções, os parâmetros posicionais e os parâmetros keyword são colocados entre parêntesis curvos (). No caso de um procedimento, os parâmetros são listados na linha de comandos. Ao contrário de um procedimento, uma função devolve obrigatoriamente um valor, que pode ser de qualquer um dos tipos definidos (escalares, vectores ou estruturas). Procedimentos e funções podem coexistir na mesma linha de comando. Ex: é o mesmo que: scaled = BytScl(image, Top=199, Min=0, Max=maxValue) TV, scaled TV, BytScl(image, Top=199, Min=0, Max=maxValue) Obter ajuda acerca de um comando, IDL>? <comando> Ex: IDL>? TVSCL Variáveis, podem ter até 255 caracteres de comprimento, devem começar por uma letra e podem conter o caracter $. As variáveis têm dois atributos importantes: o tipo de dados e a estrutura. Os tipos de dados encontram-se descritos na tabela seguinte (Tabela 1). A estrutura das variáveis podem ser do tipo: escalares (valores únicos) vectores (matrizes de dimensão 1) matrizes (até dimensão 8) estruturas (podem conter variáveis, de vários tipos, e estruturas) Eng. Biomédica 2007/08 3

Existem 14 tipos distintos de variáveis. Tabela 1 Data Type Size (bytes) Variable Creation Data Type Function Byte 1 var = 0B thisvar = Byte(variable) 16-Bit Signed Integer 2 var = 0 thisvar = Fix(variable) 32-Bit (Long) Signed Integer 4 var = 0L thisvar = Long(variable) 64-Bit Signed Integer 8 var = 0LL thisvar = Long64(variable) 16-Bit Unsigned Integer 2 var = 0U thisvar = UInt(variable) 32-Bit (Long) Unsigned Integer 4 var = 0UL thisvar = ULong(variable) 64-Bit Unsigned Integer 8 var = 0ULL thisvar = ULong64(variable) Floating Point 4 var = 0.0 thisvar = Float(variable) Double-Precision Floating 8 var = 0.0D thisvar = Double(variable) Complex 8 var = Complex(0.0, 0.0) thisvar = Complex(variable) Double-Precision Complex 16 var = DComplex(0.0D, 0.0D) thisvar = DComplex(variable) String 0-32767 var = ' ' or var = " " thisvar = String(variable) Pointer 4 var = Ptr_New() None Object 4 var = Obj_New() None O IDL está vocacionado para a operação com vectores/matrizes. Existem comandos para a inicialização destas variáveis, quer com zeros quer como sequências de índices. Tabela 2 Data Type Initialization Index Generating Byte BytArr BIndGen 16-Bit Signed Integer IntArr IndGen 32-Bit (Long) Signed Integer LonArr LIndGen 64-Bit Signed Integer Lon64Arr L64IndGen 16-Bit Unsigned Integer UIntArr UIndGen 32-Bit (Long) Unsigned Integer ULonArr ULIndGen 64-Bit Unsigned Integer ULon64Arr UL64IndGen Floating Point FltArr FIndGen Double Precision Floating DblArr DIndGen Complex ComplexArr CIndGen Double Precision Complex DComplexArr DCIndGen String StrArr SIndGen Pointer PtrArr None Object ObjArr None Eng. Biomédica 2007/08 4

Exemplos: array = BytArr(100, 100) vector = FIndGen(100) ; matriz de zeros de 100x100 (do tipo Byte) ; vector de 100 elementos (do tipo Floating Point) ; com valores 0, 1, 2,... 99 Os atributos de uma variável mudam dinamicamente. Exemplos: num = 3 Num = num * 5.2 ; num é do tipo inteiro (integer) ; num passa a ser do tipo floating point Cuidados com os inteiros... result = 12/5 ; result toma o valor 2 e não 2.4 porque ambos os ; números envolvidos são do tipo integer result = 12/5.0 ; result 2.4... Exemplo: determinar o aspect ratio do monitor. aspectratio =!D.Y_Size /!D.X_Size ; aspectratio é 0 aspectratio = Float(!D.Y_Size) /!D.X_Size ; aspectratio é 0.8 ; (dimx = 640 e dimy = 512) Um inteiro (integer) no IDL tem 2 bytes, logo o valor máximo possível de representar é de 32768. Se se pretender um contador com um limite superior é necessário garantir que utilizamos um inteiro do tipo long integer...exemplo: FOR j=0,50000 DO print, j ; erro de execução, 50000 está fora da ; gama de valores permitidos FOR j=0l,50000 DO print, j ; OK Eng. Biomédica 2007/08 5

Vectores e Matrizes Criar um vector: IDL> vector = [1, 2, 3] IDL> Help, vector VECTOR INT = Array[3] IDL> vector = [vector 4] IDL> Print, vector 1 2 3 4 Acesso com índices: IDL> Print, vector[0:2] 1 2 3 De notar que o primeiro índice é 0 (zero) ; a var vector é do tipo inteiro porque todos ; os elementos o são Criar uma matriz: IDL> matriz = [ [1, 2, 3], [4, 5, 6] ] IDL> Print, matriz 1 2 3 4 5 6 Isto significa que no IDL os vectores e as matrizes estão organizadas por linhas. IDL> Print, matriz[0,1] 4 NOTA: ao contrário da normal indexação das matrizes, o IDL toma como primeiro índice a coluna e como segundo índice a linha... IDL> Print, matriz[4] ; pode usar-se o indexamento simples 5 ; como resultado da organização por linhas... Eng. Biomédica 2007/08 6

Pode utilizar-se um vector de índices... IDL> indices = [0, 3, 5] IDL> Print, matriz[indices] 1 4 6 Extracção de vectores e submatrizes... ; matriz com 10 colunas e 20 linhas ; com valores aleatórios (pseudo-aleatórios) IDL> data = RandomU(seed, 10, 20) IDL> submatriz = data[5:9, 11:14] ; submatriz composta pelos dados da matriz data com as colunas 6 a 10 ; e linhas 12 a 15 IDL> Plot, data[7, *] ; faz o plot dos dados da 8ª coluna e todas a linhas (*) IDL> submatriz = data[5:*, *] ; submatriz composta pelos dados da matriz data com as colunas 6 até ao final ; e todas as linhas Existem 4 tipos do programas em IDL: * batch file * main-level IDL program * IDL procedure * IDL function IDL batch file conjunto de comandos tal como seriam introduzidos na linha de comandos. Para evocar este tipo de programa deve preceder-se o nome do mesmo por @. Exemplo: IDL> thisimage = BytScl(image, Top=199) IDL> LoadCT, 5, NColors=200 IDL> s = Size(image, /Dimensions) IDL> Window, /Free, XSize=s[0], YSize=s[1] IDL> TV, thisimage Eng. Biomédica 2007/08 7

teste.pro thisimage = BytScl(image, Top=199) LoadCT, 5, NColors=200 s = Size(image, /Dimensions) Window, /Free, XSize=s[0], YSize=s[1] TV, thisimage IDL> @teste.pro Main-level IDL program ao contrário do anterior, este módulo necessita de ser compilado e tem de terminar com END. teste2.pro thesefiles = FindFile('*.img', Count=numFiles) Print, 'Number of files found: ', numfiles FOR j=0,numfiles-1 DO BEGIN OpenR, lun, thesefiles[j], /Get_Lun image = BytArr(512, 512) ReadU, lun, image Free_Lun, lun thisimage = BytScl(image, Top=199) LoadCT, 5, NColors=200 s = Size(image, /Dimensions) Window, /Free, XSize=s[0], YSize=s[1] TV, thisimage ENDFOR END IDL>.RUN teste2 Eng. Biomédica 2007/08 8

IDL procedure program semelhante ao anterior. Na prática está a criar-se um novo comando que ficará disponível no IDL. Tem de começar pela declaração de definição de procedimento. teste3.pro PRO teste3 thesefiles = FindFile('*.img', Count=numFiles) Print, 'Number of files found: ', numfiles FOR j=0,numfiles-1 DO BEGIN OpenR, lun, thesefiles[j], /Get_Lun image = BytArr(512, 512) ReadU, lun, image Free_Lun, lun thisimage = BytScl(image, Top=199) LoadCT, 5, NColors=200 s = Size(image, /Dimensions) Window, /Free, XSize=s[0], YSize=s[1] TV, thisimage ENDFOR END IDL>.COMPILE teste3 IDL> teste3 IDL procedure program definição de parâmetros. teste4.pro PRO teste4, parametroposicional1, parametrokeyword1=varinsideproc numparameters = N_Params() IF numparameters EQ 2 THEN Print, varinsideproc END IDL>.COMPILE teste4 IDL> teste4, textparam, parametrokeyword1=4.27 Eng. Biomédica 2007/08 9

IDL function program semelhante ao caso anterior. Se não tiver uma declaração de Return, devolverá sempre 0 (zero), senão devolve o parâmetro de Return. teste5.pro FUNCTION teste5, parametroposicional1, parametrokeyword1=varinsideproc numparameters = N_Params() IF numparameters EQ 2 THEN Print, varinsideproc Return, numparameters END IDL> a = teste5 ( textparam, parametrokeyword1=4.27) Eng. Biomédica 2007/08 10