Arsip: Konversi citra ke angka biner di delphi

 
user image
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)
user image
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;
user image
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
user image
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)
user image
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)
user image
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
Share to

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

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com