- 1. Processamento de imagem usando a janela do editor MATLAB
- 2. Processamento de imagem com MATLAB GUI
- Criação da interface gráfica do usuário MATLAB para processamento de imagens
- Código MATLAB GUI para processamento de imagem
- Execute o código MATLAB GUI para processamento de imagem
Imagine apontar sua câmera para algum objeto e a câmera dizer o nome desse objeto, sim, o Google Lens em smartphones Android está fazendo a mesma coisa usando processamento de imagem. Isso dá ao computador uma visão para detectar e reconhecer as coisas e agir de acordo. O processamento de imagens tem muitos aplicativos como detecção e reconhecimento de rosto, impressão do polegar, realidade aumentada, OCR, leitura de código de barras e muitos mais. Existem muitos softwares disponíveis para processamento de imagens, entre eles o MATLAB é o mais adequado para começar.
O MATLAB pode realizar muitas operações de processamento de imagem avançado, mas para começar com o processamento de imagem no MATLAB, aqui vamos explicar algumas operações básicas como RGB para cinza, girar a imagem, conversão binária etc. Você pode fazer programas automatizados para remoção de ruído, imagem clareza, filtrando usando as funções explicadas neste tutorial.
Antes de prosseguir, se você é novo no MATLAB, pode verificar nossos tutoriais anteriores do MATLAB para compreender melhor:
- Introdução ao MATLAB: uma introdução rápida
- Interface do Arduino com MATLAB - LED piscando
- Controle de motor DC usando MATLAB e Arduino
- Controle de motor de passo usando MATLAB e Arduino
- Como traçar um gráfico de temperatura em tempo real usando MATLAB
No MATLAB, como sempre, existem duas maneiras de realizar qualquer algoritmo de processamento de imagem, uma é inserindo diretamente o comando na janela do editor / comando e outra é criando uma GUI para o mesmo. Aqui, mostraremos os dois métodos para realizar operações básicas de processamento de imagens no MATLAB.
1. Processamento de imagem usando a janela do editor MATLAB
Agora, vamos escrever o código para realizar algumas operações básicas de processamento de imagens na janela do editor. Para se familiarizar com toda a terminologia básica usada no MATLAB, siga o link. Copie e cole o código abaixo na janela do editor, a = imread ('F: \ resumo do circuito \ processamento de imagem usando matlab \ camerman.jpg'); subtrama (2,3,1); imshow (a); b = rgb2gray (a); subtrama (2,3,2); imshow (b); c = im2bw (a); subtrama (2,3,3); imshow (c); d = imadjust (b); subtrama (2,3,4); imshow (d); e = a; e = rgb2gray (e); subtrama (2,3,5); imhist (e); imfinfo ('F: \ resumo do circuito \ processamento de imagem usando matlab \ beard-man.jpg') = size (a) % mapa de cores ('spring')
Na variável 'a', estamos importando imagem usando o comando imread ('nome do arquivo') e, em seguida, fazendo um gráfico de '2' linha e '3' coluna usando subplot (linha, coluna, posição) e exibindo a imagem importada na posição ' 1 '. Para mostrar a imagem usamos o comando imshow ('filename') .
Abaixo estão alguns comandos para realizar algum processamento básico na imagem enviada:
- Na variável 'b', estamos convertendo a imagem RGB em imagem de intensidade em tons de cinza usando o comando rgb2gray ('nome do arquivo') e exibindo-o no gráfico na posição '2'.
- Na variável 'c', estamos convertendo a imagem em imagem binária ou você pode dizer no formato '0' (preto) e '1' (branco) usando o comando im2bw ('nome do arquivo') e exibindo-o no gráfico em posição '3'.
- Na variável 'd', estamos ajustando ou mapeando os valores de intensidade da imagem em tons de cinza usando o comando imadjust ('nome do arquivo') e exibindo-o no gráfico na posição '4'.
- Na variável 'e', estamos traçando o histograma da imagem em tons de cinza usando o comando imhist ('nome do arquivo') e exibindo-o no gráfico na posição '5'. Para traçar o histograma, você sempre deve converter a imagem em tons de cinza e então poderá ver o histograma desse arquivo gráfico.
- O comando Imfinfo ('nome do arquivo com localização') é usado para exibir informações sobre o arquivo gráfico.
- O comando = size ('filename') é usado para exibir o tamanho e os planos de cores de um arquivo gráfico específico.
- mapa de cores ('spring') é usado para alterar o tipo de mapa de cores do arquivo gráfico. Aqui, em meu código, defino este comando como comentário, mas você pode usá-lo removendo o sinal de porcentagem. Existem muitos tipos de cores no MATLAB como Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Gray, Bone, Copper, Pink, Lines e spring.
Como estes, existem vários comandos no MATLAB que podem ser usados para realizar diferentes tarefas, você pode verificar as funções de processamento de imagens no MATLAB seguindo o link.
2. Processamento de imagem com MATLAB GUI
Criação da interface gráfica do usuário MATLAB para processamento de imagens
Para construir uma GUI (Graphical User Interface) para processamento de imagens, inicie a GUI digitando o comando abaixo na janela de comando .
guia
Uma janela pop-up será aberta, selecione uma nova GUI em branco, conforme mostrado na imagem abaixo,
Agora temos que escolher o número de botões (cada botão irá realizar uma tarefa diferente) e um eixo para exibir a imagem.
Para redimensionar ou alterar a forma do Botão ou dos Eixos, basta clicar sobre ele e você poderá arrastar os cantos do botão. Ao clicar duas vezes em qualquer um deles, você poderá alterar a cor, string, tag e outras opções daquele botão específico. Após a personalização, ficará assim
Você pode personalizar os botões de acordo com sua escolha. Agora, quando você salva isso, um código é gerado na janela do Editor do MATLAB. Edite o código gerado para definir a tarefa para diferentes botões. Abaixo nós editamos o código MATLAB.
Código MATLAB GUI para processamento de imagem
O código MATLAB completo para processamento de imagens usando MATLAB GUI é fornecido no final deste projeto. Além disso, estamos incluindo o arquivo GUI (.fig) e o arquivo de código (.m) aqui para download, usando o qual você pode personalizar os botões ou o tamanho dos eixos de acordo com sua necessidade. Editamos o código gerado conforme explicado abaixo.
Na função 'uploadimage' , copie e cole o código abaixo para inserir o arquivo do PC. Aqui, o comando uigetfile ('tipo de extensão de imagem') é usado para importar imagens na GUI do MATLAB. Leia esse arquivo usando o comando imread () e exiba-o com o comando imshow () em eixos1 usando eixos (alças.axes1) . Agora, com o comando setappdata (), armazene a variável na GUI para que a variável fique acessível a uma parte da GUI para a outra parte da GUI.
a = uigetfile ('. jpg') a = imread (a); eixos (alças.axes1); imshow (a); setappdata (0, 'a', a)
Agora, em cada função, você verá o comando getappdata (), que é usado para recuperar dados armazenados usando setappdata () na GUI.
Aqui vamos explicar oito funções comumente usadas no processamento de imagens
S. No. |
Comando |
Nome do Botão |
Tarefa a ser realizada |
1 |
uigetfile () |
Enviar Imagem |
Clique para importar a imagem do disco |
2 |
rgb2gray () |
RGB para cinza |
Clique para converter a imagem RGB em tons de cinza |
3 - |
im2bw () |
Converter para imagem binária |
Clique para converter a imagem em binário |
4 |
- |
REDEFINIR |
Clique para redefinir a imagem como original |
5 |
imhist () |
Histograma |
Clique para ver o histograma da imagem |
6 |
imcomplement () |
Imagem Complementar |
Clique para verificar a imagem do complemento |
7 |
borda (nome do arquivo, método) |
Detecção de Borda |
Clique para detectar as bordas da imagem |
8 |
imrotate (nome do arquivo, ângulo) |
Rode no sentido dos ponteiros do relógio |
Clique para girar a imagem no sentido horário |
9 |
imrotate (nome do arquivo, ângulo) |
Girar no sentido anti-horário |
Clique para girar a imagem no sentido anti-horário |
1. Converta a imagem RGB em tons de cinza
Na função 'rgb2gray' , copie e cole o código abaixo para converter a imagem RGB em tons de cinza usando o comando rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); eixos (alças.axes1); imshow (agray);
2. Converter em imagem binária
Na função 'im2bw' , copie e cole o código abaixo para converter a imagem em imagem binária ou você pode dizer no formato de '0' (preto) e '1' (branco) usando o comando im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); eixos (alças.axes1); imshow (abw);
3. Redefinir para a imagem original
Na função 'redefinir' , copie e cole o código abaixo para redefinir a imagem editada na imagem original.
a = getappdata (0, 'a'); eixos (alças.axes1); imshow (a);
4. Plotar o histograma da imagem
Na função 'histograma' , copie e cole o código abaixo para plotar o histograma da imagem em tons de cinza usando o comando imhist ('nome do arquivo') e exiba-o nos eixos1 . Para traçar o histograma, você sempre deve converter a imagem em tons de cinza e então poderá ver o histograma desse arquivo gráfico.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (ahist); eixos (alças.axes1); imhist (ahist);
5. Converter em imagem de complemento
Na função 'complementimage' , copie e cole o código abaixo para ver o complemento do arquivo gráfico inserido usando o comando imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = implantar (acomp); eixos (alças.axes1); imshow (acomp);
6. Detecção de borda usando o método Canny
Na função 'edge' , copie e cole o código abaixo para detectar e encontrar bordas em imagens em tons de cinza usando o comando edge ('nome do arquivo', 'método') . No lugar do método, você pode escolher entre estes três, Canny, Prewitt e montagem . Estamos usando o método Canny para detecção de bordas. Além disso, você não pode detectar a borda diretamente da imagem original, primeiro você tem que convertê-la em tons de cinza e então você pode detectar as bordas.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = edge (aedge , 'Canny') ' eixos (alças.axes1); imshow (aedge);
7. Girar imagem no sentido horário
Na função 'sentido horário' , copie e cole o código abaixo para girar a imagem no sentido horário usando o comando imrotate (nome do arquivo, 'ângulo')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); eixos (alças.axes1); imshow (aclock);
8. Girar imagem no sentido anti-horário
Na função 'anti-horário' , copie e cole o código abaixo para girar a imagem no sentido anti-horário usando o comando imrotate (nome do arquivo, 'ângulo')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); eixos (alças.axes1); imshow (aclock);
Execute o código MATLAB GUI para processamento de imagem
Agora, clique no botão 'EXECUTAR' para executar o código editado no arquivo.m
O MATLAB pode levar alguns segundos para responder, não clique em nenhum botão da GUI até que o MATLAB exiba uma mensagem de ocupado no canto inferior esquerdo, conforme mostrado abaixo,
Quando tudo estiver pronto, importe a imagem do PC clicando no botão 'Upload Image'. Agora, você poderá converter ou girar a imagem clicando em qualquer botão apropriado. A tabela abaixo mostrará a tarefa que estamos realizando com o clique de qualquer botão específico:
O resultado ao clicar em cada botão será mostrado abaixo,
O funcionamento completo de cada botão é demonstrado no Vídeo abaixo.
Você pode até fazer um nível avançado de processamento de imagem com a Caixa de Ferramentas de Processamento de Imagens, que pode ser adquirida no site oficial do MATHWORKS. Algumas das operações de nível avançado estão listadas abaixo:
- Operações geométricas
- Operações de bloco
- Filtragem linear e design de filtro
- Transforma
- Análise e aprimoramento de imagens
- Operações binárias de imagem