Arsip: Membagi gambar bitmap dalam kotak-kotak

 
user image
more 17 years ago

alfa1412

1.Bagaimana jika punya gambar bitmap grayscale ( 0-255 )berukuran 100x100 piksel. Cara untuk membagi gambar bitmap tersebut menjadi 4 bagian masing-masing berukuran 50x50 piksel. Kemudian tiap kotak dinamakan dg K1,K2,K3 dan K4. 2.Bagaimana jika Setelah itu cara untuk mendapatkan nilai rata-rata piksel dari tiap kotak-kotak berukran 50x50 tersebut. Misal nilai rata-rata piksel itu disebut R1, R2, R3 dan R4. (nilai rata-rata adalah jumlahan nilai byte tiap piksel dibagi 2500 [karena 1 kotak tadi berukuran 50x50] ) Lalu bagaimana cara bisa menuliskan hasil R1, R2, R3 dan R4 ke dalam StringGrid.
user image
more 17 years ago

pebbie

scanningnya dalam rect aja.. rectnya dicalculate. asumsi bitmap greyscale pf8bit palet inkremental.

function calc_avg(bb:TBitmap; rr: TRect):real;
var
  ii, jj : integer;
  p : PByteArray;
begin
  result := 0; 
  for jj := rr.Top to rr.Bottom do begin
     p := bb.Scanline[jj];
     for ii := rr.Left to rr.Right do begin
        result := result + p[ii];
     end;
  end;
  result := result / ((rr.Bottom-rr.Top+1)(rr.Right-rr.Left+1));
end;
var
nw,nh:integer;
cell_sz : integer;
avg : real;
b : TBitmap;
i, j : integer;
begin
  cell_sz := 50;
  nw := b.Width div cell_sz;
  nh := b.Height div cell_sz;
  for j := 0 to nh-1 do begin
    for i := 0 to nw-1 do begin
       avg := calc_avg(b, rect(i   cell_sz, j  cell_sz, (i+1) cell_sz, (j+1)*cell_sz));
       { do whatever with avg value }
    end;
  end;
end
user image
more 17 years ago

DelphiExpert

lalu bagaimana cara menuliskan hasil R1, R2, R3 dan R4 ke dalam StringGrid kak pebbie? :mrgreen:
user image
more 17 years ago

pebbie

halah.. masak gitu aja mesti ditulis.. :P
user image
more 17 years ago

alfa1412

Thks balesannya ya gmn cara menuliskan r1,r2, r3 dan r4? soalnya susunan kotak k1, k2,k3,k4 di dalam gambar agar juga sesuai dengan dengan susunan rata2nya di stringgrid r1,r2, r3 dan r4 (kolom dan barisnya) gmn juga bila saya membuat batasan pada 3 kondisi: 1. Jika rata2 nilai piksel (avg) lebih besar dari 10000 maka termasuk kategori "Best" 2. Jika rata2 nilai piksel (avg) antara 5000-10000 maka termasuk kategori "good" 3. Jika rata2 nilai piksel (avg) kurang dari 5000 maka termasuk kategori "poor" kmudian string2 kondisi tadi masuk ke string grid matrik sesuai kolom dan barisnya.. thks
user image
more 17 years ago

pebbie

mustahil nyampe angka segitu.. wong nilai pikselnya cuma 0-255..
user image
more 17 years ago

alfa1412

oh ya..maaf lupa klo .. average.. ale kmrn q buat pake penambahan saja.. belum dibagi 2500 klo gmn juga bila saya membuat batasan pada 3 kondisi: 1. Jika rata2 nilai piksel (avg) lebih besar dari 150-255 maka termasuk kategori "Best" 2. Jika rata2 nilai piksel (avg) antara 70-149 maka termasuk kategori "good" 3. Jika rata2 nilai piksel (avg) kurang dari 0-70maka termasuk kategori "poor" kmudian string2 kondisi tadi masuk ke string grid matrik sesuai kolom dan barisnya..
user image
more 17 years ago

pebbie

lho? rata-ratanya integer to? silakan disesuaikan sendiri karena kupikir rata-rata yang real. klo avgnya integer... di bagian { do whatever with avg value } isi dengan

case avg of:
  150..255:  stringgrid1.cell[i, j] := 'BEST';
  70..149:  stringgrid1.cell[i, j] := 'GOOD';
  0..69:  stringgrid1.cell[i, j] := 'POOR';
klo real...

if avg > 150 then stringgrid1.cell[i, j] := 'BEST'
else if avg > 70 then stringgrid1.cell[i, j] := 'GOOD'
else stringgrid1.cell[i, j] := 'POOR';
user image
more 17 years ago

betamax

sip... di modif dikit udah jadi puzle yah ?? yuk yuk yuk..
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

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