Introdução ao PID Processamento de Imagens Digitais Introdução ao Octave + Pacote de Processamento de Imagens Glaucius Décio Duarte Instituto Federal Sul-rio-grandense : Campus Pelotas Engenharia Elétrica Atualizado em 09mar2015 1 de 7
1. Introdução ao Octave + Pacote de Processamento de Imagens GNU Octave é uma linguagem computacional, desenvolvida para computação matemática. Possui uma interface em linha de comando para a solução de problemas numéricos, lineares e não-lineares, também é usada em experimentos numéricos. Faz parte do projeto GNU, é um software livre sob os termos da licença GPL. Foi escrito por John W. Eaton. Possui compatibilidade com MATLAB, possuindo um grande número de funções semelhantes. O GNU/Octave conta com interação através de uma linguagem de programação de alto nível, programada inicialmente para cálculo numérico. Fornece uma linha de comando conveniente resolvendo problemas lineares e não-lineares numericamente, e executando outras tarefas numéricas usando uma linguagem que é bastante compatível com o MATLAB. Pode também ser usado como uma linguagem orientada a grupos. Possui ferramentas extensivas para a resolução de problemas lineares numéricos comuns de álgebra, cálculo aproximado de raízes de equações não-lineares, funções ordinárias, polinómios, cálculo de integrais, e integração numérica de equações diferenciais ordinárias e diferenciais-algébricas. Pode ser facilmente expandido e adaptado através de funções definidas pelo utilizador, escritas na própria linguagem presente ou usando módulos dinamicamente carregados escritos em outras linguagens como C++, em C, em Fortran. Página para download do aplicativo+pacotes adicionais: http://octave.sourceforge.net 1.1 Instalação do Octave (Linux) 1.1.1. Em um terminal Linux: sudo apt get install octave sudo apt get install octave image octave Figura 1 Octave sendo executado em um terminal Linux. 2 de 7
1.2 Instalação do Octave (Windows) 1.2.1. Faça o download do arquivo: octave-3-6-4-vs2010-setup.exe 1.2.2. Baixar o arquivo image-1.0.14.tar.gz : http://octave.sourceforge.net/image 1.2.3. Execute o Octave a partir do ícone instalado na área de trabalho. 1.2.4. Entre no diretório onde está o arquivo image-1.0.14.tar.gz pkg install image 1.0.14.tar.gz 1.3 Instalação do Octave (Mac OS X Lion) 1.3.1. Execute o aplicativo Terminal e digite os seguintes comandos: sudo port install fftw 3 single sudo port install curl sudo touch /opt/local/include/curl/types.h sudo port install octave 1.3.2. Entre no Octave e proceda a instalação do pacote de processamento de imagens: octave pkg install image octave 1.4 Comandos Básicos Comando clc; clf; figure(n); im=imread('arq.ext'); imshow(im); subplot(nlin,ncol,pos); info=imfinfo('arq.ext'); title('..descrição..'); imwrite(im,'arq.ext'); imcinza=rgb2gray(imrgb); Descrição Limpa a tela e posiciona o prompt de comandos no canto superior esquerdo Limpa a janela gráfica Abre uma nova janela gráfica, identificada por n Cria uma matriz im, representativa da imagem contida no arquivo arq.ext Exibe na janela gráfica atual, a imagem contida em im Posiciona a célula de exibição da imagem, onde: nlin=número de linhas; ncol=número de colunas; pos=posição de exibição Atribui a info informações sobre o arquivo de imagem Exibe uma descrição acima da imagem exibida Salva a imagem im em um arquivo arq.ext Converte imagem RGB (3 canais de cores) em uma imagem em tons de cinza (1 canal). 3 de 7
*** Exemplos: % Exibe uma imagem rgb = uint8(imread ('resistor.png')); % Exibe informações da imagem info = imfinfo('resistor.png') % Converte RGB para Tons de Cinza rgb = uint8(imread ("resistor.png")); gray=rgb2gray(rgb); imshow(gray); title(' IMAGEM GRAY '); % Mostra componentes cromáticas RGB subplot(2,2,1); rgb = imread('resistor.png'); subplot(2,2,2); imshow(rgb(:,:,1)); title(' Canal R '); subplot(2,2,3); imshow(rgb(:,:,2)); title(' Canal G '); subplot(2,2,4); imshow(rgb(:,:,3)); title(' Canal B '); 4 de 7
% Converte RGB para BW salva a imagem resultante rgb = imread ("resistor.png"); gray = rgb2gray(rgb); bw = im2bw(gray,0.5); imshow(bw); imwrite(bw,"resistor_bw.png"); title(' IMAGEM BW '); % Converte RGB para NTSC rgb = imread ("resistor.png"); ntsc = rgb2ntsc(rgb); imshow(ntsc); title(' IMAGEM NTSC '); % Converte RGB para HSV rgb = imread ("resistor.png"); hsv = rgb2hsv(rgb); imshow(hsv); title(' IMAGEM HSV '); 5 de 7
% Negativo de uma imagem em tons de cinza cla; clf; rgb = uint8(imread ("resistor.png")); subplot(1,3,1); gray=rgb2gray(rgb); subplot(1,3,2); imshow(gray); title(' IMAGEM GRAY '); neg = uint8(255 double(gray)); subplot(1,3,3); imshow(neg); title(' NEGATIVO GRAY '); 6 de 7