Pensando como o Software II: Classificação Supervisionada Método do Paralelepípedo – MATLAB

Pessoal Neste tutorial apresento a resolução do exercício proposto no post anterior pelo Método
do Paralelepípedo, que apesar de ser um dos métodos mais simples da Classificação Supervisionada
tem o seu valor por ser mais rápido no processamento, mas informo que perdemos um pouco na
“eficiência” devido suas restrições na hora de classificar, por isso aconselho que seja utilizado quando
se deseja “separar” poucas variedades.

por exemplo:
Realizar a classificação em uma imagem que só tenha Aguá de Vegetação.
Pode parecer banal, mas acredite tem suas aplicações.

Vejam a Resolução no MATLAB:

%Classificação Supervisionada
%Método do Paralelepípedo

clear
clc

%CLASSE 1
C1B1=[16;18;20;11;17;18;14;10;4;7] %AMOSTRAS DA BANDA 1
C1B2=[13;13;13;12;12;11;11;10;9;9] %AMOSTRAS DA BANDA 2
%CLASSE 2
C2B1=[8;9;6;8;5;7;4;6;4;3] %AMOSTRAS DA BANDA 1
C2B2=[8;7;7;6;5;5;4;3;2;2] %AMOSTRAS DA BANDA 2
%CLASSE 3
C3B1=[19;19;17;17;16;14;13;13;11;11] %MEDIA DAS AMOSTRAS DA BANDA 1
C3B2=[6;3;8;1;4;5;8;1;6;3] %MEDIA DAS AMOSTRAS DA BANDA 2

%Pixels:
C1X=5;
C1Y=9;
C2X=9;
C2Y=8;
C3X=15;
C3Y=9;

%valores máximos e mínimos
MAXC1B1 = max(C1B1);
MINC1B1 = min(C1B1);
MAXC1B2 = max(C1B2);
MINC1B2 = min(C1B2);

MAXC2B1 = max(C2B1);
MINC2B1 = min(C2B1);
MAXC2B2 = max(C2B2);
MINC2B2 = min(C2B2);

MAXC3B1 = max(C3B1);
MINC3B1 = min(C3B1);
MAXC3B2 = max(C3B2);
MINC3B2 = min(C3B2);

fprintf(‘——————-Teste para C1——————-\n’);
if C1X<=MAXC1B1 & C1X>=MINC1B1 & C1Y<=MAXC1B2 & C1Y>=MINC1B2
fprintf(‘O pixel X1 pertence a Classe 1 \n’);
end

if C1X<=MAXC2B1 & C1X>=MINC2B1 & C1Y<=MAXC2B2 & C1Y>=MINC2B2
fprintf(‘O pixel X1 pertence a Classe 2 \n’);
end

if C1X<=MAXC3B1 & C1X>=MINC3B1 & C1Y<=MAXC3B2 & C1Y>=MINC3B2
fprintf(‘O pixel X1 pertence a Classe 3 \n’);
end

fprintf(‘\n’);
fprintf(‘—————————————————\n’);
fprintf(‘\n’);

fprintf(‘——————-Teste para C2——————-\n’);
if C2X<=MAXC1B1 & C2X>=MINC1B1 & C2Y<=MAXC1B2 & C2Y>=MINC1B2
fprintf(‘O pixel X2 pertence a Classe 1 \n’);
end

if C2X<=MAXC2B1 & C2X>=MINC2B1 & C2Y<=MAXC2B2 & C2Y>=MINC2B2
fprintf(‘O pixel X2 pertence a Classe 2 \n’);
end

if C2X<=MAXC3B1 & C2X>=MINC3B1 & C2Y<=MAXC3B2 & C2Y>=MINC3B2
fprintf(‘O pixel X2 pertence a Classe 3 \n’);
end

fprintf(‘\n’);
fprintf(‘—————————————————\n’);
fprintf(‘\n’);

fprintf(‘——————-Teste para C3——————-\n’);
if C3X<=MAXC1B1 & C3X>=MINC1B1 & C3Y<=MAXC1B2 & C3Y>=MINC1B2
fprintf(‘O pixel X3 pertence a Classe 1 \n’);
end

if C3X<=MAXC2B1 & C3X>=MINC2B1 & C3Y<=MAXC2B2 & C3Y>=MINC2B2
fprintf(‘O pixel X3 pertence a Classe 2 \n’);
end

if C3X<=MAXC3B1 & C3X>=MINC3B1 & C3Y<=MAXC3B2 & C3Y>=MINC3B2
fprintf(‘O pixel X3 pertence a Classe 3 \n’);
end

fprintf(‘\n’);
fprintf(‘—————————————————\n’);
fprintf(‘\n’);

RESULTADO:
C1B1 =

16
18
20
11
17
18
14
10
4
7
C1B2 =

13
13
13
12
12
11
11
10
9
9
C2B1 =

8
9
6
8
5
7
4
6
4
3
C2B2 =

8
7
7
6
5
5
4
3
2
2
C3B1 =

19
19
17
17
16
14
13
13
11
11
C3B2 =

6
3
8
1
4
5
8
1
6
3

——————-Teste para C1——————-
O pixel X1 pertence a Classe 1

—————————————————

——————-Teste para C2——————-
O pixel X2 pertence a Classe 2

—————————————————

——————-Teste para C3——————-
O pixel X3 pertence a Classe 1

—————————————————

>>

O interessante é perceber a diferença entre as classificações, os resultados foram diferentes devido o Método

da Distância Mínima da Média ser mais eficiente do que o Método do Paralelepípedo.
Existem outros métodos melhores, um dos mais usados é o Máxima verossimilhança, mas irei parar por aqui!

=)

Espero que tenham gostado.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s