Ceriwis

Ceriwis (https://forum.ceriwis.com/forum.php)
-   Programming (https://forum.ceriwis.com/forumdisplay.php?f=63)
-   -   Image Sharpening J2ME (https://forum.ceriwis.com/showthread.php?t=574346)

JagoVB 20th November 2011 09:09 AM

Image Sharpening J2ME
 

Saia nyoba2 bikin aplikasi J2ME buat menajamkan citra (image sharpening), trus saia punya contoh aplikasi tp dlm format Delphi.

Algoritma sharpening-nya pake masking kaia gini:


Code:

mask[-1,-1] := 0;
mask[ 0,-1] := -alpha;
mask[ 1,-1] := 0;
mask[-1, 0] := -alpha;
mask[ 0, 0] := 1+4*alpha;
mask[ 1, 0] := -alpha;
mask[-1, 1] := 0;
mask[ 0, 1] := -alpha;
mask[ 1, 1] := 0;

w := FormCitra.Image.Picture.Width;
h := FormCitra.Image.Picture.Height;
if (FormCitra.Image.Picture.Bitmap.PixelFormat = pf8bit)
then
begin
SetLength(Ki, w, h);
SetLength(Ko, w, h);
for y := 0 to h-1 do
begin
PC := FormCitra.Image.Picture.Bitmap.ScanLine[y];
PH := FormHasil.Image.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
begin
Ki[x, y] := PC[x];
Ko[x, y] := PH[x];
end;
end;
for x := 1 to w-2 do
for y := 1 to h-2 do
begin
jumlah := 0;
for u := -1 to 1 do
for v := -1 to 1 do
jumlah := jumlah+Mask[u,v]*Ki[x-u,y-v];
if (jumlah255) then
Ko[x,y] := 255
else
Ko[x,y] := Round(jumlah)
end;
for y := 0 to h-1 do
begin
PH := FormHasil.Image.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
PH[x] := Ko[x, y];
end;
Ki := nil;
Ko := nil;
end;

Dari analisa saia, algoritma tsb menajamkan suatu piksel dengan cara melakukan operasi penjumlahan dg piksel2 di sekitarnya melalui operasi masking.

Operasi tsb mengambil sampel piksel berbentuk matriks 3x3, dg piksel yg berada di tengah merupakan piksel target operasi, kira2 gambarannya kaia gini matriksnya:

+ + +

+ * +

+ + +



(bener ga ya? http://ceri.ws/smilies/small_homo.gif )



Trus saia konversi ke J2ME, jadinya:

<div style="margin:20px; margin-top:5px">
Code:

public static Image sharpen(Image srcImage)
{
Image imgOut=Image.createImage(srcImage.getWidth(), srcImage.getHeight());

int mask[][]={{0,-1,0},{-1,1+4,-1},{0,-1,0}};
int x,y,u,v,jumlah;
double r,g,b;
int tmp[];
Graphics gr=imgOut.getGraphics();

for(x=1;x


All times are GMT +7. The time now is 06:18 PM.