IMG Versão Beta

12
1 Cekeikon 4.XX Última revisão: 03/04/2014 Rotinas e Programas em C++ para Processamento, Análise e Síntese de Imagens e Vídeos para usar com OpenCV 2.4.8, MINGW-BUILDS 4.8.1 e OpenGL/FreeGlut2.8.0. Hae Yong Kim I. Direitos autorais (copyright): Cekeikon4 pode ser utilizado livremente tanto para fins não-lucrativos (acadêmicos e educa- cionais) como para fins comerciais, desde que: Os trabalhos resultantes do uso desta biblioteca reconheçam a utilização do Cekeikon4, divul- gando o site onde se encontra o sistema: http://www.lps.usp.br/~hae/software . O autor não assume nenhuma responsabilidade por hipotéticos danos que o uso do Cekeikon4 possa causar.

Transcript of IMG Versão Beta

Page 1: IMG Versão Beta

1

Cekeikon 4.XX Última revisão: 03/04/2014

Rotinas e Programas em C++

para Processamento, Análise e Síntese de Imagens e Vídeos

para usar com OpenCV 2.4.8, MINGW-BUILDS 4.8.1

e OpenGL/FreeGlut2.8.0.

Hae Yong Kim

I. Direitos autorais (copyright):

Cekeikon4 pode ser utilizado livremente tanto para fins não-lucrativos (acadêmicos e educa-

cionais) como para fins comerciais, desde que:

Os trabalhos resultantes do uso desta biblioteca reconheçam a utilização do Cekeikon4, divul-

gando o site onde se encontra o sistema:

http://www.lps.usp.br/~hae/software.

O autor não assume nenhuma responsabilidade por hipotéticos danos que o uso do Cekeikon4

possa causar.

Page 2: IMG Versão Beta

2

II. Instalação

1. Programas a serem instalados

Para usar Cekeikon4, você deve instalar os seguintes programas:

1.1 Compilador GCC distribuição MINGW-BUILDS (obrigatório)

GCC 32 bits x32-4.8.1-posix-dwarf-rev5 (para Windows 32 ou 64 bits). Instale este

compilador se você estiver na dúvida.

GCC 64 bits x64-4.8.1-posix-seh-rev5 (só em Windows 64 bits). Instale este compilador só se

você souber o que está fazendo.

1.2 Cekeikon4 (obrigatório): Cekeikon_NP4??.zip

1.3 OpenCV248 (obrigatório): opencv248.zip (com “build” para GCC).

1.4 Algum visualizador de imagens JPG/BMP/TGA/P?M/PNG (opcional):

GIMP: GNU Image Manipulation Program. Pode ser obtida gratuitamente.

http://www.gimp.org/

Paint Shop Pro: Programa comercial. O site oficial de PSP é http://www.corel.com/

1.5 Visualizador de vídeo quadro-a-quadro e Codecs (opcional):

VirtualDub - visualizador

VirtualDubMod - visualizador

FFDSHOW – codecs

1.6 Editor de programas (opcional):

CEDT - Crimson editor é um bom editor de programas. Você pode usar qualquer outro

editor de textos.

Você também pode usar ambientes integrados de desenvolvimento IDE tais como co-

de::blocks, CodeLite, etc.

1.7 Proeikon (opcional):

Se você quiser rodar antigos programas feitos em Proeikon, instale também Proeikon.

Nota: O compilador MinGW usado no Cekeikon4 não é compatível com Proeikon.

Você deve usar compilador dev-cpp para compilar programas de Proeikon.

Page 3: IMG Versão Beta

3

2. Instalação

2.1 Instalação de MINGW-BUILDS, Cekeikon4 e OpenCV:

Tentei facilitar ao máximo a instalação dos programas. Por isso, a instalação deve ser feita

obrigatoriamente no disco rígido C:, com os nomes dos diretórios definidos abaixo:

1. Descompacte Cekeikon_np4??.ZIP, mantendo a estrutura de subdiretórios, para o dire-

tório C:\Cekeikon4.

2. Instale o compilador mingw-builds, executando o programa de instalação mingw-builds-

install.exe. Você pode instalar versão 32 bits ou 64 bits. Se você estiver em dúvida, instale a

versão 32 bits.

Para instalar o compilador 32 bits (que roda tanto em Windows 32bits como 64 bits), faça as

escolhas da figura abaixo e instale no diretório default:

C:\Program Files (x86)\mingw-builds\x32-4.8.1-posix-dwarf-rev5.

Page 4: IMG Versão Beta

4

Se quiser utilizar compilador de 64 bits (tem que ter windows 64 bits), selecione:

e instale no diretório default (C:\Program Files\mingw-builds\x64-4.8.1-posix-seh-rev5).

3. Descompacte opencv248.zip, mantendo a estrutura de subdiretórios, para o diretório

C:\opencv248.

Importante: Se você fez download do opencv248.zip antes de 01/03/2014, você deve copiar o arquivo:

c:\OpenCV248\sources\3rdparty\ffmpeg\opencv_ffmpeg.dll

para os diretórios

C:\OpenCV248\build\x86\mingw-ns\bin e

C:\OpenCV248\build\x86\mingw-se\bin

mudando o nome para opencv_ffmpeg248.dll.

Caso contrário, não será possível codificar vídeo usando compilador de 32 bits. OpenCV248.zip que deixei em

01/03/2014 já possuem estes arquivos nos diretórios corretos.

4. Toda vez que quiser executar Cekeikon4, deve-se abrir um prompt do comando e executar

um dos três batches:

cekx86se.bat (letras brancas)

cekx64se.bat (letras amarelas)

cekx86ns.bat (letras azuis) - se você estiver em dúvida, use este batch.

para criar as variáveis de ambiente. Para automatizar este processo, sugiro uma duas duas op-

ções:

4a. Opção mais simples: Crie uma cópia de prompt de comando e coloque no propriedades-

atalho-destino:

%comspec% /k "c:\cekeikon4\bin\cekx????.bat"

Page 5: IMG Versão Beta

5

Isto fará com que c:\cekeikon4\bin\cekx????.bat seja executado automaticamente toda vez que

abrir este prompt de comando. Fazendo isto, os programas feitos em Cekeikon só podem ser

chamados de dentro deste prompt de comando.

4b. Opção que dá mais trabalho: Acrescente ou altere as variáveis de ambiente em “windows

explorer -> computador -> botão direita do mouse -> propriedades -> configurações avança-

das do sistema -> variáveis de ambiente -> variáveis do sistema”. Se fizer isto, é possível exe-

cutar os programas feitos em Cekeikon mesmo a partir do windows explorer. Veja como fi-

cam as variáveis de ambiente após executar cekx????.bat e edite-as manualmente para efetuar

as mudanças permanentes. As variáveis que devem ser editadas são:

CEKEIKON=c:\cekeikon4

OPCAO=x86\mingw-se

OPENCVVER=248

OPENCV=c:\opencv248

PATH=...

LIBRARY_PATH=...

C_INCLUDE_PATH=...

CPLUS_INCLUDE_PATH=...

Pronto!

Page 6: IMG Versão Beta

6

Explicações mais avançadas sobre a escolha da versão:

Cekeikon4/OpenCV248 vem com 3 compilações (“builds”):

a) Compilação “x86\MinGW-SE”: Os programas foram compilados usando GCC 32 bits u-

sando todas as instruções SSE e AVX encontrados em processadores modernos. Roda tanto

em Windows 64 como 32 bits. O seu computador deve ser “moderno” para poder usar esta

compilação, pois instruções AVX foram definidas em 2008. Permite compilar programas para

OpenCL (programação usando placa GPU).

b) Compilação “x64\MinGW-SE”: Os programas foram compilados usando GCC 64 bits u-

sando as instruções até SSE3 (definidos em 2004). O seu computador deve ter Windows

64bits mas pode ter processador um pouco mais antigo. Não permite compilar programas em

OpenCL.

c) Compilação “x86\MinGW-NS”. Os programas foram compilados usando GCC 32 bits sem

usar instruções SSE. O seu computador pode ter um processador mais antigo. Roda tanto em

Windows 64 como 32 bits. Permite compilar programas em OpenCL.

Para descobrir quais instruções (SSE, SSE2, SSE3, SSE4, AVX) o seu processador suporta,

abra um prompt de comando, vá para o diretório C:\Cekeikon4\bin e execute o programa

“cpuidh.exe”. Dependendo do processador disponível, decida se utilizará compilação

x86\MinGW-SE, x64\MinGW-SE ou x86\MinGW-NS.

Executar OpenCL

OpenCL permite usar GPU (placa gráfica) para acelerar o processamento. Para compilar e

executar os programas em OpenCL, é necessário editar nos arquivos cekx????.bat a seção

“@REM OPENCL” de acordo com o seu processador gráfico. Não é necessário fazer isto se

não vai usar programas OpenCL. Só compilador de 32 bits aceita compilar OpenCL.

Page 7: IMG Versão Beta

7

3. Teste de instalação

3.1 Teste de instalação Cekeikon4/OpenCV248:

Para testar se a instalação está correta, vá para o diretório c:\cekeikon4\samples\crt e execute: C:\cekeikon4\samples\crt>compila reta -cek

Este comando pede que compile reta.cpp e linke com cekeikon4. O compilador deve gerar re-

ta.exe. Execute-o: C:\cekeikon4\samples\crt>reta

Deve aparecer uma janela branca com uma linha vermelha. Pode tentar compilar e executar

outros programas.

3.2 Compilando programas em “opencv puro”:

O diretório c:\OpenCV248\build\x??\mingw-??\samples contém os exemplos do OpenCV248

já compilados. Os códigos fontes correspondentes encontram-se no diretório

c:\OpenCV248\sources\samples. Os exemplos de opencv em .CPP ou .C podem ser compila-

dos e linkados com a biblioteca OpenCV com o comando: C:\diretorio>compila nomeprog.c -ocv

3.3 Teste de instalação FreeGlut/OpenGL:

FreeGlut/OpenGL são bibliotecas usadas para Computação Gráfica. Para testar se a instalação

está correta, vá para o diretório c:\cekeikon4\samples\opengl e execute: C:\cekeikon4\samples\opengl>compila hello -cek -ogl

significa compile hello.cpp e linke com Cekeikon4/FreeGlut/OpenGL. O compilador deve ge-

rar hello.exe. Execute-o: C:\cekeikon4\samples\opengl>hello

O programa deve mostrar um quadrado branco.

Se quiser que o programa rode sem estar atrelado ao prompt de comando, compile: C:\cekeikon4\samples\opengl>compila hello -cek -ogl -win

Page 8: IMG Versão Beta

8

3. Usar Cekeikon em Code::Blocks (opcional):

Nota: Você não é obrigado a instalar nem usar Code::Blocks.

1) Instale MINGW-BUILDS, Cekeikon4 e OpenCV como descrito acima. Vou descrever a-

baixo só a instalação CekX86SE

2) Acrescente no path os caminhos:

C:\Program Files (x86)\mingw-builds\x32-4.8.1-posix-dwarf-rev5\mingw32\bin

c:\opencv248\build\x86\mingw-se\bin

c:\cekeikon4\bin

c:\cekeikon4\projs\bin

c:\cekeikon4\bin\x86\mingw-se

c:\cekeikon4\projs\bin\x86\mingw-se

Nota: Estes paths referem-se à instalação X86SE. Se instalar outras versões, modifique de a-

cordo.

Nota: Em Windows 7, você consegue acrescentar estes paths em “windows explorer -> com-

putador -> botão direita do mouse -> propriedades -> configurações avançadas do sistema ->

variáveis de ambiente -> variáveis do sistema”.

3) Instale Code::Blocks. O que escrevo em seguida refere-se à versão 13.12

4) Vá para setting->compiler e copie “GNU GCC Compiler” para “CekX86SE” (ou outro

nome qualquer).

5) No compiler settings -> compiler flags, apague todos os flags.

6) No compiler settings -> other options, escreva (ou copie):

-std=gnu++11

-s

-fmax-errors=2

-Ic:\opencv248\build\include

-Ic:\cekeikon4\src

Page 9: IMG Versão Beta

9

7) No linker settings -> other linker options, escreva (ou copie):

-Lc:\opencv248\build\x86\mingw-se\lib\

-Lc:\cekeikon4\bin\x86\mingw-se

-lopencv_calib3d248.dll

-lopencv_contrib248.dll

-lopencv_core248.dll

-lopencv_features2d248.dll

-lopencv_flann248.dll

-lopencv_gpu248.dll

-lopencv_highgui248.dll

-lopencv_imgproc248.dll

-lopencv_legacy248.dll

-lopencv_ml248.dll

-lopencv_nonfree248.dll

-lopencv_objdetect248.dll

-lopencv_ocl248.dll

-lopencv_photo248.dll

-lopencv_stitching248.dll

-lopencv_superres248.dll

-lopencv_video248.dll

-lopencv_videostab248.dll

-lcekeikon

Nota: Se você instalar versões diferentes de X86SE, deve modificar as duas primeiras linhas.

Page 10: IMG Versão Beta

10

Para verificar se a instalação está OK, carregue (file->open) o arquivo

C:\cekeikon4\samples\crt\hello_cekeikon.cpp,

faça build e execute.

Page 11: IMG Versão Beta

11

III. Programas-Cekeikon4

1. Tutorial

Para exemplos de aplicações de Visão Computacional (Processamento e Análise de Imagens e

Vídeos) usando Cekeikon4, visite o site:

http://www.lps.usp.br/~hae/apostila

Para exemplos de apliações de Computação Gráfica (Síntese de Imagens e Vídeos) usando

Cekeikon4, visite o site:

http://www.lps.usp.br/~hae/apostila-CG

2. Categorias

Cekeikon4 está dividido em duas partes: a biblioteca de funções e os programas pré-

compiladas. Para executar os programas pré-compiladas, execute de qualquer diretório:

c:\>kcek

3. Leitura e gravação de imagens

OpenCV aceita os seguintes formatos de arquivos:

• Windows bitmaps - *.bmp, *.dib (always supported)

• JPEG files - *.jpeg, *.jpg, *.jpe

• JPEG 2000 files - *.jp2

• Portable Network Graphics - *.png

• Portable image format - *.pbm, *.pgm, *.ppm

• Sun rasters - *.sr, *.ras

• TIFF files - *.tiff, *.tif

Cekeikon4 aceita alguns tipos de arquivos a mais que OpenCV:

• Targa .tga não-compactado, 8 ou 24 bits, com ou sem palete.

• Arquivos texto .txt no formato: nr_linhas nr_colunas dado0 dado1 etc

• Arquivo de formato próprio .img para armazenar imagens em ponto flutuante e imagens

com pixels complexos.

Estas funções são acessíveis através das funções le(imagem,nome_arquivo) e imp(imagem,nome_arquivo).

A função imp permite especificar:

• Qualidade 0 a 99 de JPG (ex: imagem.jpg90).

• Taxa de compressão 0 a 9 de PNG (ex: imagem.png7).

• Tipo 0 (ascii) ou 1 (binário) de PBM, PGM e PPM (ex: imagem.ppm0).

Page 12: IMG Versão Beta

12

VI. Biblioteca-Cekeikon4

1.1 Exemplo de imagem grayscale

Exemplo1 abaixo cria e imprime a imagem ao lado.

// exemplo1.cpp

#include <cekeikon.h>

int main()

{ Mat_<GRY> a(60,80);

for (int l=0; l<a.rows; l++)

for (int c=0; c<a.cols; c++)

if (c%5==0) a(l,c)=0;

else a(l,c)=(16*l)%256;

imp(a,"exemplo1.png");

}

1.2 Exemplo de imagem colorida

Exemplo2 abaixo lê a imagem exemplo1.png gerada pelo exemplo1, converte-a numa imagem

colorida, cria dégradé colorido, e grava a imagem resultante em exemplo2.jpg qualidade 90.

//exemplo2.cpp

#include <cekeikon.h>

int main()

{ Mat_<COR> a;

le(a,"exemplo1.png");

for (int l=0; l<a.rows; l++)

for (int c=0; c<a.cols; c++) {

a(l,c)[2]=(5*c)%256;

a(l,c)[1]=(10*c)%256;

}

imp(a,"exemplo2.jpg90");

}

1.3 IMG_<tipo>

Estas duas classes foram criadas para facilitar o tratamento de bordas, para poder trabalhar da

mesma maneira que em Proeikon.