Zig-Zag Image Scanning

25Sep07

yadi on Sep 19th, 2007 said:

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 0

jadi 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&lt;0) and (j&lt;0) then begin
      j := 0;
      turn;
      continue;
    end;
    if (dx&lt;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;



5 Responses to “Zig-Zag Image Scanning”

  1. 1 pebbie

    huh.. saya tidak yakin masalahnya dimana.. padahal dah disunting berkali-kali tetapi tetap saja tanda < tsb tidak mau hilang..

  2. 2 dimaz

    thank for a bit. yaahh hehe,, a lot..

  3. 3 vals

    mas pebbie,,saya mau minta tolong ne…sorry lo ngerepotin..
    saya bingung cari algoritma buat Run-length encoding scanning vertical dan zig-zag..trims

  4. 4 initial.nVn

    wew…
    ini yang saya cari”…
    maaf kalo rada pemalas untuk memikirkan algoritmanya…
    capi ijin Kopas boleh yah…
    thx…


  1. 1 PressPosts / User / lullabyprincess / Submitted

Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s


Ikuti

Get every new post delivered to your Inbox.

Bergabunglah dengan 271 pengikut lainnya.