Arsip: Konversi citra ke angka biner di delphi

more 17 years ago
em052007
aku mau tanya nih, ada yang pernah membuat aplikasi pengolahan citra di delphi ga ya khususnya untuk menkonversi citra ke angka biner. misalnya saya punya satu gambar huruf A, saya ingin tahu gambar huruf A tersebut angka biner nya berapa, ada yang tahu ga kira2 komponen/fungsi/property apa yang disediakan delphi untuk mengkonversi hal tsb? (membaca pixel sebuah citra)
terima kasih sebelumnya atas perhatiannya.
(Tolongin saya ya, saya butuh banget nih)

more 17 years ago
dark85cc
ubah dulu ke Hex (contoh dari string ke Hex):
function StringtoHex(Data: string): string;
var
i, i2: Integer;
s: string;
begin
i2 := 1;
for i := 1 to Length(Data) do
begin
Inc(i2);
if i2 = 2 then
begin
s := s + ' ';
i2 := 1;
end;
s := s + IntToHex(Ord(Data[i]), 2);
end;
Result := s;
end;
lalu ubah Hex ke bin
function HexToBin(Hexadecimal: string): string;
const
BCD: array of string =
('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
'1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
var
i: integer;
begin
for i := Length(Hexadecimal) downto 1 do
Result := BCD[StrToInt('$' + Hexadecimal[i])] + Result;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(HexToBin('FFA1'));
// Returns 1111111110100001
end;

more 17 years ago
pebbie
@em052007: aku mau tanya nih, ada yang pernah membuat aplikasi pengolahan citra di delphi ga ya khususnya untuk menkonversi citra ke angka biner. misalnya saya punya satu gambar huruf A, saya ingin tahu gambar huruf A tersebut angka biner nya berapa, ada yang tahu ga kira2 komponen/fungsi/property apa yang disediakan delphi untuk mengkonversi hal tsb? (membaca pixel sebuah citra) terima kasih sebelumnya atas perhatiannya. (Tolongin saya ya, saya butuh banget nih)scan aja gambarnya, untuk tiap pixel tentukan batas (threshold) untuk menentukan apakah pixel tersebut di-assign ke biner 1 atau 0. utk mengakses pixel di delphi(7): http://pebbie.wordpress.com

more 17 years ago
em052007
mas peb, terus gmn caranya untuk menentukan batas (threshold) tiap pixel untuk menentukan apakah pixel tersebut di-assign ke biner 1 atau 0 ? sebenarnya citra yang saya olah adalah citra biner karena hanya untuk membaca hasil scan jawaban soal ujian (hurufnya berwarna hitam saja dan background warna putih). aku masih bingung menentukan apakah pixel (0,0) nilai biner 1 atau 0.
(maaf aku awam banget masalah pengolhan citra)

more 17 years ago
pebbie
nilai batas bisa ditentukan secara eksplisit, lalu bisa diubah-ubah (static thresholding) coba saja mulai dari 127 (0.5 intensitas maksimum)
kalau mau ngoprek lebih jauh bisa dicari berdasarkan perbedaan intensitas suatu titik dengan titik tetangganya (adaptive thresholding)

more 17 years ago
sketsa
wah.....nih sama dengan permasalahan yang sedang ku hadapi...
saya lagi buat aplikasi citra to biner - biner to citra. (dah jalan...)
tapi selain itu saya pengen bisa mengkompress bit biner tersebut dengan metode run length...
gimana ya? mudah mudahan "em052007" bisa membatu saya...
(ya...mudah mudahan kita bisa saling membantu...)
ni coding untuk merubah image to biner - biner to image ...
procedure BitmapToStrs2(Bitmap: TBitmap; Strs: TStrings);
type
TRGBArray = ARRAY OF TRGBTriple; // pf24bit
pRGBArray = ^TRGBArray;
var
ScanlinePtr : PByte;
ScanlineIncrement : integer;
LastScanline : PByte;
x : integer;
Line: pRGBArray;
n, xx : integer;
r, g, b : string;
s : string;
begin
Assert(Bitmap.PixelFormat = pf24bit); // ! must be pf24bit
x := Bitmap.Width;
s := StringOfChar(#32, (x 24)+(x -1));
Strs.Clear;
ScanlinePtr := Bitmap.Scanline[0];
ScanlineIncrement := integer(Bitmap.Scanline[1]) - integer(ScanlinePtr);
LastScanline := ScanlinePtr;
Inc(LastScanLine, ScanlineIncrement Bitmap.Height);
repeat
Line := pRGBArray(ScanLinePtr);
xx := 1;
for n := 0 to x -1 do
begin
r := ByteToStr(Line[n].rgbtRed);
g := ByteToStr(Line[n].rgbtGreen);
b := ByteToStr(Line[n].rgbtBlue);
MoveMemory(@s[xx], @r[1], Cool;
MoveMemory(@s[xx +8], @g[1], Cool;
MoveMemory(@s[xx +16], @b[1], Cool;
Inc(xx, 25);
end;
Strs.Add(s);
Inc(ScanlinePtr, ScanlineIncrement); // move to the next scanline
until (ScanlinePtr = LastScanline);
end;
procedure StrsToBitmap2(Bitmap: TBitmap; Strs: TStrings);
type
TRGBArray = ARRAY OF TRGBTriple; // pf24bit
pRGBArray = ^TRGBArray;
var
ScanlinePtr : PByte;
ScanlineIncrement : integer;
LastScanline : PByte;
x : integer;
Line: pRGBArray;
i, n, xx : integer;
r, g, b : string;
s : string;
begin
if (Strs.Count > 1) and ( ((Length(Strs[0]) +1) div 25) > 1) then
begin
Bitmap.Width := (Length(Strs[0]) +1) div 25;
Bitmap.Height := Strs.Count;
Bitmap.PixelFormat := pf24bit;
x := Bitmap.Width;
ScanlinePtr := Bitmap.Scanline[0];
ScanlineIncrement := integer(Bitmap.Scanline[1]) - integer(ScanlinePtr);
LastScanline := ScanlinePtr;
Inc(LastScanLine, ScanlineIncrement * Bitmap.Height);
r := '00000000';
g := '00000000';
b := '00000000';
i := 0;
repeat
Line := pRGBArray(ScanLinePtr);
s := Strs[i];
xx := 1;
n := 0;
while (n < x) and (xx +6 <= Length(s)) do
begin
MoveMemory(@r[1], @s[xx], Cool;
MoveMemory(@g[1], @s[xx +8], Cool;
MoveMemory(@b[1], @s[xx +16], Cool;
Line[n].rgbtRed := StrToByte(r);
Line[n].rgbtGreen := StrToByte(g);
Line[n].rgbtBlue := StrToByte(b);
Inc(n);
Inc(xx, 25);
end;
Inc(i);
Inc(ScanlinePtr, ScanlineIncrement); // move to the next scanline
until (ScanlinePtr = LastScanline) or (i +1 >= Strs.Count);
end;
end;
lalu untuk memanggil proceure tersebut digunakan button dengan listring program sbb :
procedure TForm1.Button5Click(Sender: TObject); //citra ke biner2
var
bmp : TBitmap;
Strs : TStringList;
begin
bmp := TBitmap.Create;
Strs := TStringList.Create;
try
bmp.Width := Image1.Picture.Width;
bmp.Height := Image1.Picture.Height;
bmp.PixelFormat := pf24bit;
bmp.Canvas.Draw(0, 0, Image1.Picture.Graphic);
BitmapToStrs2(bmp, Strs);
//save strings to a tmp file
Strs.SaveToFile( ChangeFileExt(ParamStr(0), '.pmb') );
RichEdit1.Lines.Assign(Strs);
finally
Strs.Free;
bmp.Free;
end;
end;
procedure TForm1.Button6Click(Sender: TObject); //biner ke citra2
var
bmp : TBitmap;
Strs : TStringList;
begin
bmp := TBitmap.Create;
Strs := TStringList.Create;
try
// Strs.Assign(RichEdit1.Lines);
//load the strings from the tmp file
Strs.LoadFromFile( ChangeFileExt(ParamStr(0), '.pmb') );
StrsToBitmap2(bmp, Strs);
Image2.Picture.Assign(bmp);
finally
Strs.Free;
bmp.Free;
end;
end;
kalo "em052007" punya solusi untk saya saya tunggu jawabannya di luwing_03@yahoo.com atau bedah kasus nya delphi-id.org dengan topik
"tolong aku (biner to image - image to biner)"....
semoga ada manfaatnya...
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- [ASK] Keluar fatal error ???
by RoenZ in Tip n Trik Pemrograman more 17 years ago - mw tanya,,,klo script count di mysql itu bisa memfilter data
by aliexdsg in MySQL more 14 years ago - Client gak bisa connect ke MySQL server II
by rusli_chow in Tip n Trik Pemrograman more 16 years ago - NO Mouse
by brodien in Tip n Trik Pemrograman more 18 years ago - Multi user di paradox
by hello_kitty in Paradox more 18 years ago - monitoring jaringan menggunakan PING
by e_soep in Tip n Trik Pemrograman more 17 years ago - membuat if statement untuk array
by fenan in Tip n Trik Pemrograman more 16 years ago - Apakah MySQL Gratis ?
by hendrang in MySQL more 17 years ago - Aplikasi Stok Antar Provinsi
by Thunder in Web Programming more 16 years ago - menambah / menjadi // atau \\
by rurouni in Hal umum tentang Pascal Indonesia more 14 years ago