Pseudocode LIP Logarithmic Image Processing LIP

3.3.6 Pseudocode LIP

Pseudocode yang digunakan untuk melakukan proses Logarithmic Image Processing secara umum dapat dilihat sebagai berikut : Begin buffer[] = bitmap.getBuffer; valueblue, valuegreen, valuered; medianblue, mediangreen, medianred; resultblue, resultgreen, resultred; for i = 0 to i bitmap.width do begin for j = 0 to j bitmap.height do begin medianblue = mediani, j, 0; mediangreen = mediani, j, 1; medianred = mediani, j, 2; valueblue = getvaluei, j, 0; valuegreen = getvaluei, j, 1; valuered = getvaluei, j, 2; resultblue = alpaLogmedianblue+1+betaLogvalueblue - Logmedianblue; resultgreen = alpaLogmediangreen+1+betaLogvaluegreen - Logmediangreen; resultred = alpaLogmedianred+1+beta Logvaluered - Logmedianred; bufferPos = i 3 + j width 3; result[bufferPos + 0] = resultblue; result[bufferPos + 1] = resultgreen; result[bufferPos + 2] = resultred; end; end; min = result.getMin; max = result.getMax; if max 1 then begin factor = max; end; else begin factor = 1; end; Universitas Sumatra Utara for i = 0 to i result.Length do begin result[i] = result[i] factor; end; min = result.getMin; max = result.getMax; for i = 0 to i+=3 result.Length - 2 do begin blue = result[i + 0]; green = result[i + 1]; red = result[i + 2]; resultbufferbgr[i + 0] = reColoringblue,min,max; resultbufferbgr[i + 1] = reColoringgreen,min,max; resultbufferbgr[i + 2] = reColoringred,min,max; end; Pseudocode di atas menjelaskan proses sebagai berikut : 1. Pertama kali, citra bitmap sebagai input akan diambil nilai pixel-nya dan disimpan ke dalam bentuk byte[]. 2. Kemudian akan dilakukan proses LIP ke seluruh pixel yang ada di dalam citra, dari 0,0 sampai width - 1,height - 1. Proses yang pertama kali dilakukan adalah mengambil nilai median pada koordinat x,y untuk tiap warna B, G dan R. Kemudian diambil nilai pixel pada koordinat x,y. Setelah itu dilakukan proses LIP. 3. Setelah semua pixel selesai diproses, maka akan terbentuk result[] baru. Kemudian akan dicari nilai max dan min dari result[] tersebut. 4. Kemudian akan dicari factor pembagi yang akan digunakan untuk memastikan nilai- nilai byte dalam result[] hanya akan mencapai nilai 1 dalam kondisi maksimum. 5. Setelah itu dicari kembali nilai max dan min dari result[] yang akan digunakan untuk proses recoloring. Dimana proses ini akan memastikan nilai-nilai yang ada di dalam result[] akan berada dalam selang 0 – 255. Universitas Sumatra Utara Berikut ini adalah pseudocode yang digunakan untuk mencari nilai median dari citra pada kernel : begin radius = size - 1 2; for baris = -radius to baris = radius do begin for kolom = -radius to kolom = radius do begin newX = x + baris; newY = y + kolom; bufferPos = newX 3 + newY width 3; if bufferPos 0 || bufferPos = width height 3 do begin result[indexresult] = 0.0; end; else begin result[indexresult] += buffer[bufferPos + color]; end; indexresult++; end; end; return getMedianresult; end. getMediandata[] begin sorted = data.sortingData; medianindex = sorted.Length - 1 2; return sorted[medianindex]; end. Pseudocode di atas dapat dijelaskan sebagai berikut: 1. Akan diambil data dari koordinat x,y dengan radius yang telah ditentukan. Pada kondisi ini, ukuran kernel yang digunakan adalah 3 x 3. Maka radius yang digunakan adalah 3-12 = 1. Sehingga akan diperoleh data baru. 2. Kemudian akan dilakukan sorting data sebelum diperoleh nilai mediannya. Setelah itu, diperoleh sorted data sebagai data yang telah disorting. 3. Untuk mendapatkan nilai median dari data tersebut, dicari nilai tengah dari panjang data. Kemudian dikembalikan nilai pada sorted [median index] sebagai nilai median. Universitas Sumatra Utara

3.3.7 Rancangan Antar Muka