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