Últimas

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.

Pensando como o Software: Classificação Supervisionada Método da Distância Mínima da Média – MATLAB

Realização da Classificação Supervisionada de uma imagem multiespectral referente a uma região bem conhecida a priori, dispõe-se de um conjunto de dados de treinamento para três classes de informação, onde cada pixel é caracterizado em apenas duas componentes espectrais: B1 e B2.
Este exercício foi proposto por Elaine Costa, Professora de Processamento Digital de Imagens do IFG
Resolvendo o exercício no MATLAB
por: Amarildo Junior
%Classificação Supervisionada
%Metodo: Distancia Minima da Media
clear
clc
%CLASSE 1
C1B1=(16+18+20+11+17+18+14+10+4+7)/(10); %MEDIA DAS AMOSTRAS DA BANDA 1
C1B2=(13+13+13+12+12+11+11+10+9+9)/(10); %MEDIA DAS AMOSTRAS DA BANDA 2
%CLASSE 2
C2B1=(8+9+6+8+5+7+4+6+4+3)/(10); %MEDIA DAS AMOSTRAS DA BANDA 1
C2B2=(8+7+7+6+5+5+4+3+2+2)/(10); %MEDIA DAS AMOSTRAS DA BANDA 2
%CLASSE 3
C3B1=(19+19+17+17+16+14+13+13+11+11)/(10); %MEDIA DAS AMOSTRAS DA BANDA 1
C3B2=(6+3+8+1+4+5+8+1+6+3)/(10); %MEDIA DAS AMOSTRAS DA BANDA 2
M1=[C1B1;C1B2]
M2=[C2B1;C2B2]
M3=[C3B1;C3B2]
%Pixels:
X1=[5;9];
X2=[9;8];
X3=[15;9];
clc
fprintf(‘Calculo para o Primeiro Pixel’);
GM1=2*X1’*M1-M1’*M1
GM2=2*X1’*M2-M2’*M2
GM3=2*X1’*M3-M3’*M3
if GM1>GM2 & GM1>GM3
    fprintf(‘O pixel X1 pertence a Classe 1 \n’);
elseif GM2>GM1 & GM2>GM3
    fprintf(‘O pixel X1 pertence a Classe 2 \n’);
elseif GM3>GM1 & GM3>GM2
    fprintf(‘O pixel X1 pertence a Classe 3 \n’);
end
fprintf(‘\n’);
fprintf(‘—————————————————\n’);
fprintf(‘\n’);
fprintf(‘Calculo para o Segundo Pixel’);
GM12=2*X2’*M1-M1’*M1
GM22=2*X2’*M2-M2’*M2
GM32=2*X2’*M3-M3’*M3
if GM12>GM22 & GM12>GM32
    fprintf(‘O pixel X2 pertence a Classe 1 \n’);
elseif GM22>GM12 & GM22>GM32
    fprintf(‘O pixel X2 pertence a Classe 2 \n’);
elseif GM32>GM12 & GM32>GM22
    fprintf(‘O pixel X2 pertence a Classe 3 \n’);
end
fprintf(‘\n’);
fprintf(‘—————————————————\n’);
fprintf(‘\n’);
fprintf(‘Calculo para o Terceiro Pixel’);
GM13=2*X3’*M1-M1’*M1
GM23=2*X3’*M2-M2’*M2
GM33=2*X3’*M3-M3’*M3
if GM13>GM23 & GM13>GM33
    fprintf(‘O pixel X3 pertence a Classe 1 \n’);
elseif GM23>GM13 & GM23>GM33
    fprintf(‘O pixel X3 pertence a Classe 2 \n’);
elseif GM33>GM13 & GM33>GM23
    fprintf(‘O pixel X3 pertence a Classe 3 \n’);
end
RESULTADO:
Calculo para o Primeiro Pixel
GM1 =
   28.4600
GM2 =
   88.1900
GM3 =
  -14.2500
O pixel X1 pertence a Classe 2
—————————————————
Calculo para o Segundo Pixel
GM12 =
  113.8600
GM22 =
  126.3900
GM32 =
   96.7500
O pixel X2 pertence a Classe 2 
—————————————————
Calculo para o Terceiro Pixel
GM13 =
  298.4600
GM23 =
  208.1900
GM33 =
  285.7500
O pixel X3 pertence a Classe 1
>>

Visual C# + Mysql – Formulário de Cadastro de clientes para Web

Pessoal, este mês finalizei meu curso de Programação e como trabalho de conclusão desenvolvi
este formulário de Cadastro de Clientes para Web utilizando o Visual C# + Mysql.

Código:

Realizando a Conexão com o Banco de Dados

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;

namespace Trabalho1
{
public partial class _Default : System.Web.UI.Page
{
protected void Default_Load(object sender, EventArgs e)
{

}

protected void Salvar_bt_Click(object sender, EventArgs e)
{
MySqlConnection conn; //declaração da conexão
string conexao = “Server=localhost; User Id=root; Password=”; Database=cadastro;”;
conn = new MySqlConnection(conexao);
string comando = “insert into formulario (nome,cpf,endereco,cidade,estado,telefone,celular) “;
comando += “values (‘” + nome_tb.Text + “‘,'” + cpf_tb.Text + “‘,'”;
comando += endereco_tb.Text + “‘,'” + cidade_tb.Text + “‘,'” + estado_tb.Text;
comando += “‘,'” + telefone_tb.Text + “‘,'” + celular_tb.Text + “‘)”;
MySqlCommand cmd = new MySqlCommand(comando);
cmd.Connection = conn; //prepara a conexão para realizar a conexão
conn.Open(); //abrindo a conexão
cmd.ExecuteNonQuery(); //EXECUTAR a conexão MAS NÃO RETORNAR NENHUMA CONSULTA
conn.Close(); //fechando a conexão
id_1.Text = “”;
nome_tb.Text = “”;
cpf_tb.Text = “”;
endereco_tb.Text = “”;
cidade_tb.Text = “”;
estado_tb.Text = “Go”;
telefone_tb.Text = “”;
celular_tb.Text = “”;
}

}
}

Código do Formulário:

<%@ Page Title=”Cadastro” Language=”C#” MasterPageFile=”~/Site.master” AutoEventWireup=”true”
CodeBehind=”Default.aspx.cs” Inherits=”Trabalho1._Default” %>

<asp:Content ID=”HeaderContent” runat=”server” ContentPlaceHolderID=”HeadContent”>
</asp:Content>
<asp:Content ID=”BodyContent” runat=”server” ContentPlaceHolderID=”MainContent”>
<h2>
&nbsp;</h2>
<p>
&nbsp;<asp:Label ID=”id_lb” runat=”server” Text=”Id.:”></asp:Label>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:TextBox ID=”id_1″ runat=”server” Width=”36px”></asp:TextBox>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
<p>
&nbsp;<asp:Label ID=”Nome_lb” runat=”server” Text=”Nome.:”></asp:Label>
&nbsp;&nbsp;
<asp:TextBox ID=”nome_tb” runat=”server” Width=”275px”></asp:TextBox>
&nbsp;<asp:Label ID=”Cpf_lb” runat=”server” Text=”Cpf.:”></asp:Label>
&nbsp;<asp:TextBox ID=”cpf_tb” runat=”server”></asp:TextBox>
</p>
<p>
&nbsp;<asp:Label ID=”Endereco_lb” runat=”server” Text=”End.:”></asp:Label>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:TextBox ID=”endereco_tb” runat=”server” Width=”270px”></asp:TextBox>
</p>
<p>
<asp:Label ID=”Cidade_lb” runat=”server” Text=”Cidade.:”></asp:Label>
&nbsp;
<asp:TextBox ID=”cidade_tb” runat=”server”></asp:TextBox>
&nbsp;
<asp:Label ID=”Estado_lb” runat=”server” Text=”Estado.:”></asp:Label>
&nbsp;<asp:DropDownList ID=”estado_tb” runat=”server” AutoPostBack=”True” Height=”23px”
Width=”46px”>
<asp:ListItem>AC</asp:ListItem>
<asp:ListItem>AL</asp:ListItem>
<asp:ListItem>AP</asp:ListItem>
<asp:ListItem>AM</asp:ListItem>
<asp:ListItem>BA</asp:ListItem>
<asp:ListItem>CE</asp:ListItem>
<asp:ListItem>DF</asp:ListItem>
<asp:ListItem>ES</asp:ListItem>
<asp:ListItem>GO</asp:ListItem>
<asp:ListItem>MA</asp:ListItem>
<asp:ListItem>MS</asp:ListItem>
<asp:ListItem>MG</asp:ListItem>
<asp:ListItem>PA</asp:ListItem>
<asp:ListItem>PB</asp:ListItem>
<asp:ListItem>PR</asp:ListItem>
<asp:ListItem>PE</asp:ListItem>
<asp:ListItem>PI</asp:ListItem>
<asp:ListItem>RJ</asp:ListItem>
<asp:ListItem>RN</asp:ListItem>
<asp:ListItem>RS</asp:ListItem>
<asp:ListItem>RO</asp:ListItem>
<asp:ListItem>RR</asp:ListItem>
<asp:ListItem>SC</asp:ListItem>
<asp:ListItem>SP</asp:ListItem>
<asp:ListItem>SE</asp:ListItem>
<asp:ListItem>TO</asp:ListItem>
<asp:ListItem Value=”MT”></asp:ListItem>
</asp:DropDownList>
</p>
<p>
<asp:Label ID=”Telefone_lb” runat=”server” Text=”Telefone.:”></asp:Label>
<asp:TextBox ID=”telefone_tb” runat=”server”></asp:TextBox>
&nbsp;
<asp:Label ID=”Celular_lb” runat=”server” Text=”Celular.:”></asp:Label>
&nbsp;<asp:TextBox ID=”celular_tb” runat=”server”></asp:TextBox>
</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID=”Salvar” runat=”server” Text=”Salvar”
onclick=”Salvar_bt_Click” />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID=”Limpar_bt” runat=”server” Text=”Limpar” />
</p>
<p>
&nbsp;</p>
<p>
&nbsp;</p>
</asp:Content>

No próximo post estarei explicando como criar um Banco de Dados com o Mysql

Visitem também nosso site GeoSenso

Derivative Calculator – Cálculo de Derivadas online

Todo Tecnólogo em Geoprocessamento se depara com a tal das derivadas em suas matérias iniciais,
hoje apresento à vocês um site que realiza o cálculo destas derivadas. Achei a página muito interessante
e resolvi compartilhar com vocês  para servir como base aos seus cálculos.

Para acessar clique na imagem abaixo.

Façam bom proveito.

acesse também http://www.geosenso.com

Criando máquina Virtual no Virtualbox para instalar o Sistema OSGeo Live – Geoprocessamento

Divulguei um vídeo no post anterior que ensina instalar o sistema Linux OSGeo Live em uma máquina Virtual, neste tutorial estarei explicando os passos para se criar a máquina virtual para ser instalada o sistema, ou seja, é necessário realizar os passos deste tutorial para após realizar o do post anterior.

1º Passo: clicar em Novo para dar início a criação da máquina virtual

2º Passo: clique em Próximo

3º Passo: Determinar o Nome para o Sistema, especificar o Sistema como Linux e a Versão como Ubuntu e clique em Próximo

4º Passo: Especificar o Tamanho da memória que será alocada para a máquina virtual, aconselho que seja de 750MB à cima.

5º Passo: Deixe a opção Disco de Boot marcado e a Criar novo disco rígido selecionada e clique em Próximo

6º Passo: Deixaremos a opção como está e vamos avançar clicando em Próximo

7º Passo: Caso deseje reservar um Local fixo Marque a opção Tamanho fixo em nosso exemplo utilizaremos um Armazenamento Dinamicamente alocado. Clique em Próximo

8º Passo: Nesta Janela configure o local aonde será salvo o arquivo e especifique o tamanho do disco virtual conforme sua preferência e clique em Próximo para prosseguir.

9º Passo: Sumário, Clique em Criar

10º Passo: Sumário Final, Clique em Criar  e pronto!

Agora basta assistir o vídeo do post anterior “Instalando Linux em máquina Virtual – OSGeo Live” e terá sua maquina virtual com o sistema OSGEO Live instalada.

Instalando Linux em máquina Virtual – OSGeo Live

Vídeo Tutorial:
Instalando o melhor sistema para Geoprocessamento em Linux
utilizando máquina virtual [Virtual Box].

O OSGeo Live é um sistema bem completo para geoprocessamento
Veja os aplicativos inclusos que mais se destacam:

WebGIS/Webmapping:

-OpenLayers 2.10
-Geomajas — 1.8
-MapFish 2.2
-GeoMoose 2.4
-GeoServer 2.1.1
-MapServer 6.0.1
-GeoNetwork 2.6.4

Mapeamento e Gestão de Eventos Extremos (Desastres):

-Sahana Eden 0.5.5
-Ushahidi 2.1

Banco de Dados Geográfico:

-PostGIS 1.5
-SpatiaLite 2.3.1 / 2.4 beta
-Rasdaman 8.2 (banco de dados raster)
-pgRouting 1.05 (encaminhamento para PostGIS)

Desktop GIS

-Quantum GIS (QGIS) 1.7.0
-GRASS GIS 6.4.1
-gvSIG desktop 1.11
-uDig 1.2.2
-Kosmo GIS 2.0.1
-OpenJUMP GIS 1.4.0.1
-SAGA 2.0.7
-OSSIM 1.8.6 (Processamento de Imagens)
-Geopublisher 1.7 (Catálogos)
-AtlasStyler 1.7 (Editor de Estilo)

obs: Utilizei uma versão no vídeo roda pelo DVD não sendo necessário instalar no HD,
portando, deste modo toda vez que desejar executar este sistema, será necessário
executar novamente o arquivo do DVD conforme mostrado nos tutoriais.

espero que tenham gostado.
Mais tutoriais:
http://www.geosenso.com/

Propagação de Variância [Ajustamento de Observações] – Código Matlab

% PROPAGAÇÃO DE VARIÂNCIA
% DADOS
A01=60; %azimute
d01=1000; %distância 1
dpA=10; %precisão A
dpd=0.02; %precisão de d
X0=0;
Y0=0;
A01=A01*pi/180;
% CALCULO DAS COORDENADAS
X1=X0+d01*sin(A01);
Y1=Y0+d01*cos(A01);
% propagacao
D=[ sin(A01) d01*cos(A01) ;
cos(A01) -d01*sin(A01) ];

MVCdA=[ dpd^2 0 ;
0 ((dpA/3600)*pi/180)^2];

MVCX1Y1=D*MVCdA*D’;

dpX1=sqrt(MVCX1Y1(1,1));
dpY1=sqrt(MVCX1Y1(2,2));
corX1Y1=MVCX1Y1(1,2)/(dpX1*dpY1);

X1
dpX1
Y1
dpY1
corX1Y1