Zig-Zag Image Scanning
Mas pebbie..saya minta tolong ni…
saya buat fungsi untuk baca image bmp grayscale kemudian saya mau ubah nilai matriks pixel bmp ke dalam baris(array) dengan metode zig-zag misalnya.
matriks 4 x 4
23 10 3 1
9 7 2 0
8 1 0 0
4 1 0 0jadi kalo di ubah ke dalam baris [23 10 9 8 7 3 1 2 1 4 1 0 0 0 0 0]
untuk melakukan traversal terhadap citra dengan alur zig-zag sebenarnya cukup melakukan modifikasi terhadap variabel iterasi dengan arah yang sesuai (kanan atas). misal untuk matriks berukuran 4×5 (lebar x tinggi) maka pembacaannya akan sesuai dengan angka pada contoh berikut :
1 2 6 7
3 5 8 14
4 9 13 15
10 12 16 19
11 17 18 20
untuk kasus pembacaan seperti pada pertanyaan di atas, yang perlu diubah dari kode di bawah ini hanya bagian operasi utama yang diganti dengan pembacaan nilai pixel citra.
procedure fill_matrix;
var
i, j : integer;
dx, dy : integer;
ctr : integer;
procedure turn;
begin
dy := -dy;
dx := -dx;
end;
begin
{ posisi awal }
i := 0;
j := 0;
{ arah awal : kanan atas }
dx := 1;
dy := -1;
for ctr := 1 to width*height do begin
{ operasi utama : tulis }
matriks[j][i] := ctr;
{ update posisi }
i := i + dx;
j := j + dy;
{ kasus pojok }
if (j<0) and (i>=width) then begin
j := 1;
i := width-1;
turn;
continue;
end;
if (i<0) and (j>=height) then begin
i := 1;
j := height-1;
turn;
continue;
end;
{ kasus mentok segitiga atas }
if (dy<0) and (j<0) then begin
j := 0;
turn;
continue;
end;
if (dx<0) and (i < 0) then begin
i := 0;
turn;
continue;
end;
{ kasus mentok segitiga bawah }
if (dy > 0) and (j >= height) then begin
j := height-1;
i := i + 2;
turn;
continue;
end;
if (dx > 0) and (i >= width) then begin
i := width-1;
j := j + 2;
turn;
continue;
end;
end;
end;
Filed under: delphi, image processing, programming | 5 Komentar
huh.. saya tidak yakin masalahnya dimana.. padahal dah disunting berkali-kali tetapi tetap saja tanda < tsb tidak mau hilang..
thank for a bit. yaahh hehe,, a lot..
mas pebbie,,saya mau minta tolong ne…sorry lo ngerepotin..
saya bingung cari algoritma buat Run-length encoding scanning vertical dan zig-zag..trims
wew…
ini yang saya cari”…
maaf kalo rada pemalas untuk memikirkan algoritmanya…
capi ijin Kopas boleh yah…
thx…