Arsip: convert gambar dr 24bit jadi 1 bit

more 14 years ago
wasqto
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!!

more 14 years ago
sukuguci
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.

more 14 years ago
pebbie
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)

more 12 years ago
Leonardo
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 :roll:

more 12 years ago
Leonardo
ini cupilikan function yang aku bikin, dan tolong di koreksi kalo ada yang salah ya...

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[j3]) 0.11{Blue my Man!!})+round((pixArrRGB[j3+1]) 0.59{Green Cing!})+round((pixArrRGB[j3+2]) 0.3{MERAH Euy!});
pixArrGrey[j3]:= GrayVal;
pixArrGrey[j 3+1]:= GrayVal;
pixArrGrey[j3+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[j3+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>


more 12 years ago
betamax
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 ...
:)

more 12 years ago
pebbie
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 8);
end
else
pixArrBin[j div 8] := pixArrBin[j div 8] or (0 shl j mod 8);
end

more 12 years ago
pebbie
eh salah.. yang black itu harusnya
pixArrBin[j div 8] := pixArrBin[j div 8] and not (1 shl j mod 8);

more 12 years ago
Leonardo
terima kasih atas saran mas-mas semua.... setelah beberapa lama ...saya kembali ke prinsip awal programming...yaitu..."Manusia harus bisa ngakali mesin... " :P ,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
more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
Last Articles
- Project Group dalam Lazarus
- FastPlaz Database Explorer
- Release: FastPlaz Super Mom v0.12.22
- PascalClass #3: Web Development with Free Pascal
- Makna Pascal di Pascal Indonesia
- Kulgram : Instalasi Lazarus di Perangkat Berbasis ARM
- PascalClass #1: Analisa Database dan Machine Learning
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
- Mengenal OXYGENE – Pascal For .NET
- PascalTalk #5: UX: Research, Design and Engineer
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 months ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 1 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 8 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 8 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 8 years ago
Random Topic
- Tanya wireless
by Apakekdah in Network, Files, I/O & System more 14 years ago - menjalankan dos command
by dinox in Tip n Trik Pemrograman more 15 years ago - membuat TComponen pada saat runtime
by old_shutterhand in Tip n Trik Pemrograman more 13 years ago - mohon bantuannya
by daeng in Tip n Trik Pemrograman more 11 years ago - Send and Receive RS232 From Skema
by scrafthole in Network, Files, I/O & System more 9 years ago - [release] Bring Back My Mbek!
by ZeAL in Games more 15 years ago - ada yang tau cara disable systemtime change?
by $tring in OOT more 11 years ago - autolock
by marvel in Hal umum tentang Pascal Indonesia more 15 years ago - mo create project bareng, apa mungkin????
by sukuguci in Hal umum tentang Pascal Indonesia more 13 years ago - Delphi 2006 - Firebird (for PDA)
by rendzecutive in FireBird more 11 years ago