| Author |
Message |
wasqto |
| Location: |
|
|
Post subject: convert gambar dr 24bit jadi 1 bit
Posted: 19/Jun/2006 12:50
|
|
Joined: 15-Jun-2006
Posts: 1
Status: Offline
|
|
haloo teman2 yang jago2 delphi...saya anggota baru nihh...
saya mau bikin tugas kuliah. salah satunya untuk meng-convert gambar dari 24 bit / true colors jadi gambar 1 bit alias black/white. gimana caranya yah??
mohon bantuannya...
thanx a lot!! |
|
|
| |
|
|
|
 |
sukuguci |
| Location: |
|
|
Post subject: Covert graphic 24 to 1bit
Posted: 20/Jun/2006 21:57
|
|
onIntermediate
Joined: 28-Jan-2006
Posts: 49
Status: Offline
|
|
| coba kamu baca buku rinaldi munir terbitan informatika bandung tentang pengolahan algoritma pengolahan citra dengan bahasa pengantar C++. Prisip nya sederhana, semua pixel dengan intensitas 0(hitam) sampai dengan (2^24)/2 akan dijadikan hitam atau 0 dan diatas itu jadi putih atau 1. |
|
|
| |
|
|
|
 |
pebbie |
| Location: di dapur |
|
Post subject:
Posted: 19/Jan/2007 10:48
|
|
onUber-Skilled
Joined: 16-Sep-2006
Posts: 459
Location: di dapur
Status: Offline
|
|
just for information.
binerisasi gambar true color terjadi dua tahap :
- konversi ke format intensitas (greyscale) . ada beberapa cara : bisa sekedar rata-rata komponen r, g, dan b (setiap komponen koefisiennya 1). atau dengan koefisien tertentu untuk tiap r, g, dan b.
- tresholding : konversi greyscale (256 tingkat intensitas) ke biner (2 tingkat intensitas). ditentukan nilai tertentu sebagai ambang (t) jika intensitas suatu pixel lebih besar atau sama dengan t maka pixel tersebut diset ke maksimum (biner 1), dan minimum jika lebih kecil dari nilai ambang t (biner 0) |
|
|
| |
|
|
|
 |
Leonardo |
| Location: |
|
Post subject:
Posted: 28/Feb/2008 11:58
|
|
onBeginner
Joined: 28-Feb-2008
Posts: 4
Status: Offline
|
|
Aku uda nyoba cara konversi dari pf24bit ke pf1bit,(untuk conversi dari RGB->grascale->biner)tapi ketika uda jadi biner warna yang ada koq bukan putih hitam yah?...tapi malah hitam dan coklat (tanpa function), tapi klo aq pisah jadi function sendiri koq malah jadi biru sama hitam ya...tlg  |
|
|
| |
|
|
|
 |
pebbie |
| Location: di dapur |
|
Post subject:
Posted: 28/Feb/2008 12:57
|
|
onUber-Skilled
Joined: 16-Sep-2006
Posts: 459
Location: di dapur
Status: Offline
|
|
| masalahnya bukan pada TBitmap, tapi pada komponen penampilnya (TImage). |
|
|
| |
|
|
|
 |
Leonardo |
| Location: |
|
Post subject:
Posted: 03/Mar/2008 10:40
|
|
onBeginner
Joined: 28-Feb-2008
Posts: 4
Status: Offline
|
|
ini cupilikan function yang aku bikin, dan tolong di koreksi kalo ada yang salah ya...
code : pascal function grayscaling(var gbrIn:TBitmap):TBitmap; Var GbrTmp:TBitmap; //GbrTmpTinggi,GbrTmpLebar:Cardinal; Bheight,Bwidth,i,j,c,GrayVal,GrayValCount :Cardinal; pixArrRGB,pixArrGrey:pbytearray; gbrOut:TBitmap; Begin GbrTmp:=TBitmap.Create; GbrIn.PixelFormat:=pf24bit; Try With GbrTmp Do Begin PixelFormat:=pf24bit; Height:=gbrIn.Height; Width:=gbrIn.Width; End; for i:=0 to gbrIn.height-1 do begin pixArrRGB:=gbrIn.ScanLine[i]; pixArrGrey:=GbrTmp.ScanLine[i]; for j:=0 to gbrIn.width-1 do begin GrayVal:=round((pixArrRGB[j*3]) * 0.11{Blue my Man!!}) round((pixArrRGB[j*3 1]) * 0.59{Green Cing!}) round((pixArrRGB[j*3 2]) * 0.3{MERAH Euy!}); pixArrGrey[j*3]:= GrayVal; pixArrGrey[j*3 1]:= GrayVal; pixArrGrey[j*3 2]:= GrayVal; GrayValCount:=GrayValCount GrayVal;//** c:=c 1; //** end end; GbrTmp.PixelFormat:=pf8bit; grayscaling:=GbrTmp; Finally //GbrTmp.Free; End; End; function binerisasi(var gbrIn:TBitmap):TBitmap; Var GbrTmp:TBitmap; GbrTmpTinggi,GbrTmpLebar:Cardinal; Bheight,Bwidth,i,j,c,GrayVal,GrayValCount :Cardinal; pixArrBin,pixArrGrey:pbytearray; gbrOut:TBitmap; Begin GbrTmp:=TBitmap.Create; GbrIn.PixelFormat:=pf8bit; Try With GbrTmp Do Begin PixelFormat:=pf1bit; Height:=gbrIn.Height; Width:=gbrIn.Width; End; for i:=0 to gbrIn.height-1 do begin pixArrGrey:=gbrIn.ScanLine[i]; pixArrBin:=GbrTmp.ScanLine[i]; for j:=0 to gbrIn.width-1 do begin if pixArrGrey[j]>=128then begin pixArrBin[j div 8]:=1; //gbrOut.Canvas.Pixels[i,j]:=255; //pixArrBin[j*3 1]:= 255; //pixArrBin[j*3 2]:= 255; end else pixArrBin[j div 8]:= 0;//ColorToRGB(clBlack);; //gbrOut.Canvas.Pixels[i,j]:=0; //pixArrBin[j*3 1]:= 0; //pixArrBin[j*3 2]:= 0; end end; binerisasi:=GbrTmp; Finally //GbrTmp.Free; End; End;
nah sekarang yang jadi masalah kenapa koq setelah berhasil bikin warnanya hitam putih, koq pixel yang kedetect lompat2 ya....
hasilnya mungkin kyk gini<br>
 |
|
|
| |
|
|
|
 |
|
|
Post subject:
Posted: 03/Mar/2008 16:42
|
|
onUber-Skilled

Joined: 17-May-2007
Posts: 263
|
|
coba mas periksa kembali kordinat piksel yang dirubah warnanya...
apa sudah sama dengan piksel asal ?? terutama pada for i:=0 to gbrIn.height-1 do ...
 |
_________________ -|[ H-412-RY]|-
|
| |
|
|
|
 |
pebbie |
| Location: di dapur |
|
Post subject:
Posted: 04/Mar/2008 09:46
|
|
onUber-Skilled
Joined: 16-Sep-2006
Posts: 459
Location: di dapur
Status: Offline
|
|
code : pascal for j:=0 to gbrIn.width-1 do begin if pixArrGrey[j]>=128then begin pixArrBin [j div 8] := pixArrBin [j div 8] or (1 shl j mod  "modules/PNphpBB2/images/smiles/icon_cool.gif" alt= "Cool" border= "0" />; end else pixArrBin [j div 8] := pixArrBin [j div 8] or (0 shl j mod  "modules/PNphpBB2/images/smiles/icon_cool.gif" alt= "Cool" border= "0" />; end
|
|
|
| |
|
|
|
 |
pebbie |
| Location: di dapur |
|
Post subject:
Posted: 04/Mar/2008 09:51
|
|
onUber-Skilled
Joined: 16-Sep-2006
Posts: 459
Location: di dapur
Status: Offline
|
|
eh salah.. yang black itu harusnya
code : pascal pixArrBin [j div 8] := pixArrBin [j div 8] and not (1 shl j mod  "modules/PNphpBB2/images/smiles/icon_cool.gif" alt= "Cool" border= "0" />;
|
|
|
| |
|
|
|
 |
Leonardo |
| Location: |
|
Post subject:
Posted: 06/Mar/2008 11:35
|
|
onBeginner
Joined: 28-Feb-2008
Posts: 4
Status: Offline
|
|
terima kasih atas saran mas-mas semua.... setelah beberapa lama ...saya kembali ke prinsip awal programming...yaitu..."Manusia harus bisa ngakali mesin... " ,sy telah berhasil mencoba konversi kemaren tetapi tidak menggunakan cara dari mas2 yang mas2 sarankan kemaren.., saya langsung mencoba untuk menembak tiap pixelnya dan langsung saya set jadi 0 dan 1..., dan ternyata malah berhasil...
oya...saya pengen tau kalo untuk bisa mengetahui resolusi screen scr otomatis gmn caranya yah?....THX |
|
|
| |
|
|
|
 |
pebbie |
| Location: di dapur |
|
Post subject:
Posted: 06/Mar/2008 14:57
|
|
onUber-Skilled
Joined: 16-Sep-2006
Posts: 459
Location: di dapur
Status: Offline
|
|
| caranya gimana? bagi-bagi juga dong di sini.. sapa tau lain waktu ada yang membutuhkan.. |
|
|
| |
|
|
|
 |
|
|
Post subject:
Posted: 06/Mar/2008 15:11
|
|
onUber-Skilled

Joined: 17-May-2007
Posts: 263
|
|
get desktop bisa, atau desktop.width / desktop.height
If Dekstop.width = 1024 and dekstop.height = 768 then ShowMessages('Resolusi Layar = 1024 x 768');
Di otak atik sendiri coba.. |
_________________ -|[ H-412-RY]|-
|
| |
|
|
|
 |
Leonardo |
| Location: |
|
Post subject:
Posted: 12/Mar/2008 11:14
|
|
onBeginner
Joined: 28-Feb-2008
Posts: 4
Status: Offline
|
|
Buat Mas Pebbie....sesegera mungkin sy posting source-nya...,berhubung hr ni bru ada masalah ni di-storage Server ....mw buka explorer ae...susahnya minta ampoun.....,apalagi buka Flashdisk
meskipun kmrn sy uda brhasil....tp kmrn saya ttp masih penasaran....dan sy tahu knp kemaren perubahan pixel nya lompat - lompat, ternyata yang bermasalah adalah di "[j div 8]", krn increment yang ada kn tidak smua_nya klipatan 8, perubahan yang terjadi hanya pada nilai index yg brklipatan 8,dan kmudian saya nyoba ngakali aja....dengan ngubah nilai index ttp "[j]" tnp dibagi 8, kmudian untuk pengubahan gambarNya, gbrTmp yg ada di function kmrn nilai pixelFormat-nya saya samakan dengan pixelFormat dari bitmap yang masuk, kmudian baru ketika akan dipassing keluar...sy biarkan biar Delphi yang mengkonversi pixelFormat-nya, nah kali ini sy yakin hasil akhirnya sudah 1bit...tp muncul masalah yang sama dgn peristiwa pertama dlu....yaitu warna yang muncul bukan hitam/putih tapi hitam/merah(tapi saya sudh yakin kalo gambar yang keluar sudah bnr2 1bit, karena dlm nilai index scanline-nya(pByteArray-nya, sudah bisa dimasukkan nilai semisal langsung 0 atau 1)), contohnya misal: pixArrBin[j]:=1, sudah langsung mau, tanpa muncul "errorException:Scanline index Out of Range"....wah skg msh bnr2 penasaran...apakah mas2 ada yang tau sebabnya?..., ataukah saya perlu meng-oprak2 sistem palette-nya ya...,skali lagi..., scepat mungkin akan saya posting source-nya agar mas2 tahu maksud permasalahan yang saya alami.... , |
|
|
| |
|
|
|
 |
|
|