Menghitung Momen Invarian pada Delphi
udah lama ga ngepost gara-gara sibuk ama pekerjaan, jadi sekarang nyempatin diri buat ngepost,.
itung-itung amal,..hehehe
langsung aja pada topik kita kali ini yaitu "Menghitung Momen Invarian pada Delphi"...
tanpa berbasa basi,,,check this out gan!!!
procedure TForm1.hitMomen(var invarian: momen7; cs: pikselbyte);
var
temp: array of array of byte;
u, N: array [0 .. 3, 0 .. 3] of real;
m: array [0 .. 3, 0 .. 3] of real;
i, j, k, l: integer;
x1, y1: real;
begin
for i := 0 to 3 do
for j := 0 to 3 do
m[i, j] := 0;
setlength(temp, cs.h + 1, cs.w + 1);
// transfer mat citra >> mat biasa
for i := 1 to cs.h do
for j := 1 to cs.w do
begin
temp[i, j] := cs.isi[i - 1, j - 1];
end;
// HIT momen
for k := 0 to 3 do
for l := 0 to 3 do
for i := 1 to cs.h do
for j := 1 to cs.w do
m[k, l] := m[k, l] + ((XpangkatY(j, k)) * (XpangkatY(i, l)) * temp[i,
j]);
// hit x dan y aksen >> pusat koordinat obyek
x1 := m[1, 0] / m[0, 0];
y1 := m[0, 1] / m[0, 0];
// insialisasi momen pusat pusat & normalisasi
for i := 0 to 3 do
for j := 0 to 3 do
begin
u[i, j] := 0;
N[i, j] := 0;
end;
N[1, 1] := (m[1, 1] - y1 * m[1, 0]) / sqr(m[0, 0]);
N[2, 0] := (m[2, 0] - x1 * m[1, 0]) / sqr(m[0, 0]);
N[0, 2] := (m[0, 2] - y1 * m[1, 0]) / sqr(m[0, 0]);
N[3, 0] := (m[3, 0] - 3 * x1 * m[2, 0] + 2 * sqr(x1) * m[1, 0]) / XpangkatY
(m[0, 0], 2.5);
N[0, 3] := (m[0, 3] - 3 * y1 * m[0, 2] + 2 * sqr(y1) * m[0, 1]) / XpangkatY
(m[0, 0], 2.5);
N[2, 1] := (m[2, 1] - 2 * x1 * m[1, 1] - y1 * m[2, 0] + 2 * sqr(x1) * m[0,
1]) / XpangkatY(m[0, 0], 2.5);
N[1, 2] := (m[1, 2] - 2 * y1 * m[1, 1] - x1 * m[0, 2] + 2 * sqr(y1) * m[1,
0]) / XpangkatY(m[0, 0], 2.5);
for i := 1 to 7 do
invarian[i] := 0;
invarian[1] := N[2, 0] + N[0, 2];
invarian[2] := sqr(N[2, 0] - N[0, 2]) + 4 * sqr(N[1, 1]);
invarian[3] := sqr(N[3, 0] - 3 * N[1, 2]) + sqr(3 * N[2, 1] - N[0, 3]);
invarian[4] := sqr(N[3, 0] + N[1, 2]) + sqr(N[2, 1] + N[0, 3]);
invarian[5] := (N[3, 0] - 3 * N[1, 2]) * (N[3, 0] + N[1, 2]) *
(sqr(N[3, 0] + N[1, 2]) - 3 * sqr(N[2, 1] + N[0, 3])) +
(3 * N[2, 1] - N[0, 3]) * (N[2, 1] + N[0, 3]) *
(3 * sqr(N[3, 0] + N[1, 2]) - sqr(N[2, 1] + N[0, 3]));
invarian[6] := (N[2, 0] - N[0, 2]) *
(sqr(N[3, 0] + N[1, 2]) - sqr(N[2, 1] + N[0, 3])) + 4 * N[1, 1] *
(N[3, 0] + N[1, 2]) * (N[2, 1] - N[0, 3]);
invarian[7] := (3 * N[2, 1] - N[0, 3]) * (N[3, 0] + N[1, 2]) *
(sqr(N[3, 0] + N[1, 2]) - 3 * sqr(N[2, 1] + N[0, 3])) +
(3 * N[1, 2] - N[3, 0]) * (N[2, 1] + N[0, 3]) *
(3 * sqr(N[3, 0] + N[1, 2]) - sqr(N[2, 1] + N[3, 0]));
end;
ketujuh momen itu diambil dari persamaan berikut ini
dimana momen 7 merupakan tipe array [1..7] dengan tipe variabel extended dan piksel byte merupakan record yang didefenisikan sebagai berikut,..
type
pikselbyte = record
x, h, w: integer;
isi: array of array of integer;
spasi: boolean;
end;
muga-mugahan postingan ane kali ini tentang "Menghitung Momen Invarian pada Delphi" sekian dari ane semoga bermanfaat,..
itung-itung amal,..hehehe
langsung aja pada topik kita kali ini yaitu "Menghitung Momen Invarian pada Delphi"...
tanpa berbasa basi,,,check this out gan!!!
procedure TForm1.hitMomen(var invarian: momen7; cs: pikselbyte);
var
temp: array of array of byte;
u, N: array [0 .. 3, 0 .. 3] of real;
m: array [0 .. 3, 0 .. 3] of real;
i, j, k, l: integer;
x1, y1: real;
begin
for i := 0 to 3 do
for j := 0 to 3 do
m[i, j] := 0;
setlength(temp, cs.h + 1, cs.w + 1);
// transfer mat citra >> mat biasa
for i := 1 to cs.h do
for j := 1 to cs.w do
begin
temp[i, j] := cs.isi[i - 1, j - 1];
end;
// HIT momen
for k := 0 to 3 do
for l := 0 to 3 do
for i := 1 to cs.h do
for j := 1 to cs.w do
m[k, l] := m[k, l] + ((XpangkatY(j, k)) * (XpangkatY(i, l)) * temp[i,
j]);
// hit x dan y aksen >> pusat koordinat obyek
x1 := m[1, 0] / m[0, 0];
y1 := m[0, 1] / m[0, 0];
// insialisasi momen pusat pusat & normalisasi
for i := 0 to 3 do
for j := 0 to 3 do
begin
u[i, j] := 0;
N[i, j] := 0;
end;
N[1, 1] := (m[1, 1] - y1 * m[1, 0]) / sqr(m[0, 0]);
N[2, 0] := (m[2, 0] - x1 * m[1, 0]) / sqr(m[0, 0]);
N[0, 2] := (m[0, 2] - y1 * m[1, 0]) / sqr(m[0, 0]);
N[3, 0] := (m[3, 0] - 3 * x1 * m[2, 0] + 2 * sqr(x1) * m[1, 0]) / XpangkatY
(m[0, 0], 2.5);
N[0, 3] := (m[0, 3] - 3 * y1 * m[0, 2] + 2 * sqr(y1) * m[0, 1]) / XpangkatY
(m[0, 0], 2.5);
N[2, 1] := (m[2, 1] - 2 * x1 * m[1, 1] - y1 * m[2, 0] + 2 * sqr(x1) * m[0,
1]) / XpangkatY(m[0, 0], 2.5);
N[1, 2] := (m[1, 2] - 2 * y1 * m[1, 1] - x1 * m[0, 2] + 2 * sqr(y1) * m[1,
0]) / XpangkatY(m[0, 0], 2.5);
for i := 1 to 7 do
invarian[i] := 0;
invarian[1] := N[2, 0] + N[0, 2];
invarian[2] := sqr(N[2, 0] - N[0, 2]) + 4 * sqr(N[1, 1]);
invarian[3] := sqr(N[3, 0] - 3 * N[1, 2]) + sqr(3 * N[2, 1] - N[0, 3]);
invarian[4] := sqr(N[3, 0] + N[1, 2]) + sqr(N[2, 1] + N[0, 3]);
invarian[5] := (N[3, 0] - 3 * N[1, 2]) * (N[3, 0] + N[1, 2]) *
(sqr(N[3, 0] + N[1, 2]) - 3 * sqr(N[2, 1] + N[0, 3])) +
(3 * N[2, 1] - N[0, 3]) * (N[2, 1] + N[0, 3]) *
(3 * sqr(N[3, 0] + N[1, 2]) - sqr(N[2, 1] + N[0, 3]));
invarian[6] := (N[2, 0] - N[0, 2]) *
(sqr(N[3, 0] + N[1, 2]) - sqr(N[2, 1] + N[0, 3])) + 4 * N[1, 1] *
(N[3, 0] + N[1, 2]) * (N[2, 1] - N[0, 3]);
invarian[7] := (3 * N[2, 1] - N[0, 3]) * (N[3, 0] + N[1, 2]) *
(sqr(N[3, 0] + N[1, 2]) - 3 * sqr(N[2, 1] + N[0, 3])) +
(3 * N[1, 2] - N[3, 0]) * (N[2, 1] + N[0, 3]) *
(3 * sqr(N[3, 0] + N[1, 2]) - sqr(N[2, 1] + N[3, 0]));
end;
ketujuh momen itu diambil dari persamaan berikut ini
dimana momen 7 merupakan tipe array [1..7] dengan tipe variabel extended dan piksel byte merupakan record yang didefenisikan sebagai berikut,..
type
pikselbyte = record
x, h, w: integer;
isi: array of array of integer;
spasi: boolean;
end;
muga-mugahan postingan ane kali ini tentang "Menghitung Momen Invarian pada Delphi" sekian dari ane semoga bermanfaat,..
gan untuk TForm1.hitMomen itu mengarah ke tombol atau apa???
BalasHapusmakasi