how much do you miss me?

December 30th, 2009 by Andi Rusiawan

img_031

My wife often asks me how much i miss her. Awh..it’s kinda hard to measure it,isn’t it? Usually I say to her, “i miss you so much hunn..” But,she is not satisfied enough I guess. Or because I answered with that “much” phrase too often :P.
But what should I do, love;yearning and other feelings are unmeasurable,irrational value,arent they :P. Honestly, I understand that she wants me to answer with more romantic expression. But poor her,she got no romantic husband, me. Ehehe… But believe me, I’m in learning process of being romantic :P.
If by any chance you’re asked by your mate how much you miss her/him, here I share my collections eheheh..

Romantic way
1. I miss you so much honey.
She will know that you miss her much, but how much? I believe you need to prepare another answer. It’s too plain and common answer,indeed :P
2. I miss you as much as you miss me plus 1.
It’s still abstract though. But at least she has to accept it since she should know how much she misses you :P. And you are the winner! doesnt matter how much she misses you, you’ll be in advance :p
Romantic and scientific way
3. Honey, you are all my life. I miss you as many as my heart has beaten since the first time i’ve fallen in love with you.
If she keeps asking you how much, how much.. give her the datas :P. On average our heart beats 70 times/minute. 1 day = 1440 minutes. Hence, our hearts beats ~ 10000 times a day. Then ask her to calculate herself how many is it based on the time of your love has elapsed :P.
4. Honey, If you want to know how much I miss you, try to catch the raindrops. If the ones you catch are how much you miss me then the others you miss are how much i miss you.
Same as number 3, give her the datas. Rain drops in average 70-100 drops per square meter per second = A. Assume the surface of her hand palm = 2P (D.I.Y: if you dont know your mate’s handpalm, prepare your ruler to measure. do it with love! :P). Assume rain falls all over the wide of the area where she lives = W. Hence, how much you miss her is quantized as (W-2P)/A per unit time (the duration when you want to play in the rain) :P

Since we all know our feelings are always in fluctuation, above calculation is using general condition that feelings rate are constant. But if your mate is good at mathematic, feel free to use your own integral and differential equation :P.

Haha.. that’s just for fun. If you love your mate with all of your heart, Don’t ever try to calculate or quantize how much your mate’s feelings towards you, not only because it’s difficult :P, but when you finally come with the perfect solution, you’ll tend to stop loving her more at certain point.

Sibuk

December 30th, 2009 by Petra Novandi Barus

Agak sedih melihat bulan ini tulisan di blog ini hanya sedikit. Satu-satunya yang bisa disalahkan hanya kesibukan. Terlalu banyak yang harus dikerjakan. Beberapa kali juga terpaksa sering istirahat di kamar dalam waktu lama karena terlalu sering memaksakan diri bekerja.

Kadang juga lebih sering menulis di blog teknis karena ya sumber tulisan di sana banyak diambil dari pekerjaan yang sedang dilakukan.

Mungkin sebagai resolusi tahun depan, setiap minggu paling tidak harus ada minimal 3 tulisan.

R.I.P The Rev

December 29th, 2009 by Fajar Fathurrahman

The Rev

R.I.P The Rev

Posted in Music, News Tagged: A7X, dead, RIP, The Rev

Test

December 29th, 2009 by Petra Novandi Barus

Testing the new blog

Masa depan

December 29th, 2009 by Sawung


Seorang teman dimasa lalu pernah membaca garis tangan saya. Dia menyebutkan sebuah usia dimana saya akan mengalami sakit/musibah yang mendekati kematian apabila saya lolos akan memperoleh sesuatu kesuksesan. Dia bilang juga dari garis tangan saya bahwa ada banyk garis yang menyilang-nyilang garis hidup yang berarti banyak tantangan. Bacaan iseng tersebut tidak saya pikirkan sampai tadi ada note ramalan yg ditag kk ke saya. Bacaan tentang kematian terbukti berapa tahun lampau, entah yang lainnya...

dimuntahkan oleh sawung@psik-itb.org
jendral tanpa pasukan, tentara tanpa senjata

New Splash in Blogosphere

December 27th, 2009 by Muhammad Insan Al Amin
Wow.. so quiet here. LETTSSS ROCCCCKKK. make some noise guys !! Since the deep penetration of facebook this past 6 months, many bloggers hijrah to facebook. I m new to blogging. And I find that, blogging is also fun. We can connect between blog and facebook now.

Nyoba posting via Word 2007

December 26th, 2009 by Peb Ruswono Aryan

Baru baca posting puja di sini ternyata bisa toh posting wp pake word. Hoho.. selain dah lama nggak nulis (baik tugas ataupun blog), ternyata nggak dioprek juga yang udah ada di laptop gara-gara terbiasa pake word 2003. Sekalian juga nambahin gambar deh. Sebetulnya sudah diupload di facebook tapi yang bisa melihat dibatasi.

Gambar di atas merupakan cuplikan hasil kerja untuk riset KK tahun 2009 yang dilanjutkan untuk tahun 2010. Gambar pertama menampikan visualisasi citra medis dalam format DICOM yang terdiri dari beberapa slices yang ditampilkan dengan menggunakan tiga bidang yang salig tegak lurus untuk memudahkan eksplorasi citra 3D (volume). Gambar kedua merupakan visualisasi hasil rekonstruksi isosurface dari citra sebelumnya yang memiliki intensitas piksel tertentu (sebetulnya ada dialog tambahan untuk memilih berdasarkan warna, jadi bisa memperkirakan walau tidak perlu tahu nilai eksaknya berapa). Algoritma yang dipakai untuk rekonstruksi permukaanya menggunakan marching cube, sebetulnya sempat juga merekonstruksi dengan marching tetrahedron tapi kualitasnya (yang diimplementasi) masih belum mencukupi. Ada lagi teknik rekonstruksi isosurface yang berbasis pada floodfill dan dilanjutkan dengan proses penghalusan/fitting pada pasca-prosesnya tapi tidak sempat dieksplorasi lebih lanjut. Penjelasan tentang algoritma marching cube akan dijelaskan di tulisan-tulisan mendatang (janji dulu, prioritas utama tetap menulis tentang citra yang dijanjikan di tulisan sebelumnya). D

Kesimpulan tulisan ini, ternyata lebih nyaman nulis di word buat blog (kalo berhasil tentunya) walaupun ternyata nggak bisa nambahin tag more dan upload gambar seperti biasa (kalo terlalu besar dijadikan tautan dan gambar ukuran lebih kecil dibuat otomatis).

Kalo udah lulus kuliah……

December 26th, 2009 by Petra Novandi Barus

Kalo pas masih jaman ngerjain Tugas Akhir, pertanyaan yang ditanyakan kalau lagi kumpul keluarga pasti seputar skripsi. Bener-bener pengen ngutip postingannya Lafra di sini:

Sudah lulus belum?
Kapan lulus?
Tentang apa TAnya?
dst..

Kalau udah lulus, they’re climbing to the next level. Satu hal yang bikin gw cepet-cepet kabur dari Jakarta adalah pertanyaan-pertanyaan itu

Udah ada calon belum?
Siapa pacarnya sekarang?
Kok belum punya pacar?

Oh, please…. Well, gak gw doang seh. Rata-rata temen gw ada yang kayak gitu juga… Sampe ada yg ngepost gambar di bawah karena sering dianya juga lagi ngambil PhD dan terus-terusan ditanya itu sama ortunya…

Kalo udah lulus kuliah……

December 26th, 2009 by Petra Novandi Barus

Kalo pas masih jaman ngerjain Tugas Akhir, pertanyaan yang ditanyakan kalau lagi kumpul keluarga pasti seputar skripsi. Bener-bener pengen ngutip postingannya Lafra di sini:

Sudah lulus belum?
Kapan lulus?
Tentang apa TAnya?
dst..

Kalau udah lulus, they’re climbing to the next level. Satu hal yang bikin gw cepet-cepet kabur dari Jakarta adalah pertanyaan-pertanyaan itu

Udah ada calon belum?
Siapa pacarnya sekarang?
Kok belum punya pacar?

Oh, please…. Well, gak gw doang seh. Rata-rata temen gw ada yang kayak gitu juga… Sampe ada yg ngepost gambar di bawah karena sering dianya juga lagi ngambil PhD dan terus-terusan ditanya itu sama ortunya… :lol:

Head First iPhone Development

December 26th, 2009 by Febrian Setiadi
Last night i’ve found very nice book, it’s already in e-book pdf format, yet another Head First ebook. The book was Head first Iphone Development, written in 552 pages thick. I started reading Head First series book when entering third grade on my college, the subject was Object Oriented Analysis and Design, and Head First [...]

Iklan internet mobile..

December 26th, 2009 by Arya Antaputra

Waktu lagi jalan-jalan di BEC beberapa waktu lalu, gua melihat poster ini.

Ada yang aneh?

Lho, kok dia bisa ngomong gitu? Bukannya tujuan dari memblokir pornografi itu biar anak di bawah umur nggak usah tahu sebelum cukup umur ya? Kenapa anak ini malah udah ngerti? Wahahaha…

Lebih masuk akal kalau di poster itu ada gambar ibu dari anak-anak itu, menyaksikan mereka browsing dengan penuh kasih sayang, dan kata-katanya, “Anak-anakku kini terlindung dari pornografi” atau semacamnya…

Warna-warni dunia kita

December 26th, 2009 by Peb Ruswono Aryan

Warna merupakan salah satu fenomena menarik yang hampir semua orang mengalaminya. Sejak kita kecil kita diajari konsep warna sebagai sesuatu yang menarik indera okuler. Salah satu fenomena yang menarik tentang warna adalah pelangi yang diyakini menampilkan hampir seluruh warna yang bisa kita lihat. Ya, fenomena warna adalah fenomena persepsi. Ada keterlibatan antara sinyal yang dikirim (dimodelkan sebagai fenomena fisis) dengan sinyal yang diterima oleh indera.

Hal yang menjadi pertanyaan adalah ketika warna diolah dengan menggunakan komputer yaitu mengenai bagaimana kita memodelkan operator-operator yang bekerja pada informasi warna. Sebagai alat hitung, kita mendasarkan pengolahan dengan aritmetika dengan asumsi-asumsi. Salah satu model warna yang paling sering digunakan khususnya dalam menampilkan dan menyimpan informasi warna adalah RGB. Model ruang warna RGB didasarkan pada separasi sinyal warna-warna yang bersifat additif (digabung semakin terang). Model ruang warna RGB terdiri dari tiga komponen yaitu komponen warna merah (Red), hijau(Green), dan biru (Blue). Kalau mengingat kembali kuliah tentang vektor (aljabar linier), model ruang warna RGB bisa dimodelkan sebagai sebuah kubus euclidian atau dalam bahasa matematisnya direntang oleh tiga vektor basis ortonormal R, G, dan B. Asumsi tersebut mengarahkan intuisi kita ketika akan membandingkan dua buah warna yaitu menghitung jarak dengan fungsi metrik yang terdefinisi di ruang vektor tersebut. Beberapa contohnya adalah jarak euclidian (akar kuadrat dari jumlah kuadrat selisih tiap komponen) dan jarak manhattan (jumlah dari selisih mutlak) yang contoh penghitungannya ditampilkan dalam pseudocode berikut.

warna1,warna2: RGB;
dr,dg,db: real;

dr := warna2.r-warna1.r;
dg := warna2.g-warna1.g;
db := warna2.b-warna1.b;
//euclid
jarak := sqrt(dr*dr + dg*dg + db*db);
//manhattan
jarak := abs(dr)+abs(dg)+abs(db);

Kasus Seleksi berdasarkan warna

Beberapa waktu lalu sempat menemukan tugas kuliah gedung tetangga (EL 3008 Pengolahan Citra Digital) tentang Identifikasi dan Perhitungan Otomatis Bakteri Tahan Asam (BTA) dari spesimen dahak penderita Tuberkulosis (TB). contoh citra mikroskop untuk tugas tersebut adalah sebagai berikut.

Ringkasan deskripsi tugas tersebut adalah menghitung estimasi bakteri tahan asam yang pada gambar di atas ditampilkan dengan warna merah-ungu akibat pewarnaan. Salah satu langkah pengolahan yang diperlukan untuk menyelesaikan kasus di atas adalah bagaimana mendapatkan area citra yang mengandung bakteri tanpa terganggu dengan area lain yang tidak relevan dengan pertanyaan yang diajukan (misal area berwarna biru).

Kembali ke topik tentang warna RGB, penghitungan kemiripan warna menggunakan jarak euclid memiliki kelemahan yaitu tidak mengakomodasi perbedaan intensitas selain alasan distribusi warna yang tidak linier. Salah satu solusinya mungkin dengan mentransformasi citra tersebut ke model ruang warna lain seperti HSV, YCbCr, atau CIELab. solusi transformasi tersebut melibatkan operasi transformasi koordinat yang melibatkan perkalian. Apakah mungkin ada solusi yang lebih baik/cepat dari transformasi koordinat warna? mungkin saja!

Ketika saya mencoba menyelesaikan persoalan tersebut saya berhasil dengan cara yang cukup sederhana (tanpa melibatkan operasi perkalian) walaupun sampai saat ini saya belum mendapat penjelasan ataupun acuan ilmiah (masih membaca buku tentang ruang warna) mengenai solusi yang saya dapatkan tersebut. Idenya sederhana, kita mengubah representasi warna RGB menjadi representasi selisih antar komponen (R-G, R-B, dan G-B). Ternyata (hipotesis)warna yang sama, walau intensitas atau saturasinya berbeda memiliki komposisi atau selisih antar komponen yang sama. Jadi untuk melakukan seleksi warna kita dapat menggunakan rentang dari subset selisih antar komponen. untuk kasus di atas tentu tidak sesederhana itu, mengingat ada warna lain yang terlibat sebelumnya kasus yang memungkinkan terjadinya false-positive harus dikurangi terlebih dahulu (dengan cara yang sama!). Kode untuk kasus di atas terdiri dari dua baris kode berikut (untuk tiap piksel).

if ( p[i].g - p[i].r >= 30 ) then mark_falsepositive;
if not marked then
if ( p[i].r - p[i].g >= 31 ) or ( ( p[i].b - p[i].g >= 31 ) and ( p[i].r > 80 ) ) then mark_object
else mark_nothing;

Baris pertama, mencoba mengurangi false positive yang mungkin tertangkap di rule kedua. Rule kedua baru melakukan klasifikasi piksel berdasarkan selisih komponen seperti yang dijelaskan di atas. Hasilnya? silakan lihat sendiri

Boost your Salary with certification

December 25th, 2009 by Febrian Setiadi
Salah satu keunggulan dari seorang SDM IT adalah keunggulan De Jure, yaitu keunggulan yang diperoleh seseorang karena gelar yang dia dapatkan dalam pendidikan akademis (degree), juga selain itu ada sertifikasi yang didapatkan dari ujian yang dikeluarkan dari lembaga / vendor sertifikasi (certification). Majalah certmag dalam edisi desember 2009 membahas tentang survey gaji para pekerja IT di [...]

‘We Hail We Sail’ From The Morning Glory Parade

December 25th, 2009 by Aulia Ibrahim Yeru
pameran bersama/

19 desember 2009-3 januari 2010
Galeri Kita
Jalan R.E Martadinata No. 209 Bandung, West Java, Indonesia

dalam pameran ini, saya berkolaborasi dengan Nesia Anindita :)




Sunflower
installation, patchworked cotton, Polyethylene terephthalate,
variable sizes
2009
(sumber: Tercitra Wintya)

Implementasi Gaussian Blur

December 25th, 2009 by Peb Ruswono Aryan

Sebagai pengguna perangkat lunak manipulasi citra/foto teknik gaussian blur merupakan salah satu yang sering digunakan. Belum lama, ada yang menanyakan tentang dekomposisi wavelet (LL,LH,HL,HH) dan saya pikir perlu ada tulisan ini sebagai pengantar tulisan selanjutnya.

Gaussian blur sebetulnya merupakan konvolusi citra dengan fungsi gaussian. Mengapa perlu nama khusus? hal ini karena gaussian memiliki beberapa sifat yang cukup unik. Pertama karena hasil transformasi fourier fungsi gaussian ternyata menghasilkan gaussian juga. Kedua yang menarik dari fungsi gaussian adalah untuk implementasi fungsi gaussian 2D. Fungsi gaussian 2D secara matematis memiliki sifat dapat dipisahkan (separable, silakan cari sendiri bagi yang minat utak-atik simbol matematis D ). Sifat inilah yang sangat membantu dalam mengimplementasi proses pengaburan (blurring).

Sebagaimana telah ditulis sebelumnya, dalam operasi perata-rataan tetangga (konvolusi) digunakan jendela atau area yang menyatakan hubungan ketetanggaan yang dilibatkan dalam operasi. Semakin besar ukuran jendela tersebut maka gambar akan semakin kabur dan juga waktu yang diperlukan untuk melakukan operasi tersebut. Dengan adanya operasi yang bersifat dapat dipisahkan, proses konvolusi bisa dilakukan dua kali namun hanya menggunakan jendela berdimensi satu. proses konvolusi pertama kali dilakukan untuk tiap baris dan dilanjutkan dengan konvolusi untuk tiap kolom sebagai data berdimensi satu juga. Akibat partisi ini operasi konvolusi bisa mengeksploitasi paralelisme baik menggunakan thread ataupun prosesor grafik.

Kode dibawah sudah didekomposisi konvolusi untuk elemen baris dan kolom sebagai upafungsi tersendiri sehingga dapat memudahkan untuk memproses sebagian saja (seperti dekomposisi LL,LH,HL,HH di atas).

function gaussian( b: TBitmap; sigma: real ): TBitmap;
var
  mid, ksize        : integer;
  ker               : array of real;
  p                 : array of PArrRGB;
  b2                : TBitmap;

  procedure gauss( sigma: real );
  var
    i               : integer;
    sum, w          : real;
    norm            : real;
    ediv            : real;
  begin
    norm := 1 / ( sigma * sqrt( 2 * pi ) );
    ediv := 0.5 / ( sigma * sigma );
    ksize := 1 + 2 * round( 3 * sigma );
    if ksize < 3 then ksize := 3;
    if ( ( ksize and 1 ) <> 1 ) then ksize := ksize + 1;
    setlength( ker, ksize );
    mid := ksize div 2;
    sum := 0;
    for i := 0 to ksize - 1 do begin
      w := norm * exp( -( i - mid ) * ( i - mid ) * ediv );
      ker[i] := w;
      sum := sum + w;
    end;
    for i := 0 to high( ker ) do
      ker[i] := ker[i] / sum;
  end;

  function Hconv( b: TBitmap ): TBitmap;
  var
    j, i, k         : integer;
    corr            : real;
    sum             : real;
    pp              : ParrRGB;
  begin
    result := citra_clone( b );
    for j := 0 to high( p ) do
      p[j] := b.ScanLine[j];
    for j := 0 to b.Height - 1 do begin
      pp := result.ScanLine[j];
      for i := 0 to b.Width - 1 do begin
        sum := 0;
        corr := 0;
        for k := -mid to mid do begin
          if ( i + k < 0 ) or ( i + k >= b.Width ) then begin
            corr := corr + ker[mid + k];
            continue;
          end;
          sum := sum + ker[mid + k] * p[j][i + k].r;
        end;

        if corr > 0 then sum := sum * ( 1 / ( 1 - corr ) ); //        	memo1.lines.add(format('corr %.8f', [corr]));
        pp[i] := warna_create( clamp( round( sum ) ), clamp( round( sum ) ), clamp( round( sum ) ) );
      end;
    end;
  end;

  function Vconv( b: TBitmap ): TBitmap;
  var
    j, i, k         : integer;
    corr            : real;
    sum             : real;
    pp              : ParrRGB;
  begin
    result := citra_clone( b );
    for j := 0 to high( p ) do
      p[j] := b.ScanLine[j];
    for j := 0 to b.Width - 1 do begin
      for i := 0 to b.Height - 1 do begin
        pp := result.ScanLine[i];
        sum := 0;
        corr := 0;
        for k := -mid to mid do begin
          if ( i + k < 0 ) or ( i + k >= b.Height ) then begin
            corr := corr + ker[mid + k];
            continue;
          end;
          sum := sum + ker[mid + k] * p[i + k][j].r;
        end;
        if corr > 0 then sum := sum * ( 1 / ( 1 - corr ) );
        pp[j] := warna_create( clamp( round( sum ) ), clamp( round( sum ) ), clamp( round( sum ) ) );
      end;
    end;
  end;
begin
  setlength( p, b.Height );
  gauss( sigma );
  b2 := hconv( b );
  result := vconv( b2 );
  b2.Free;
end;

coming up next.. edge sharpening/edge-preserving smoothing berbasis dekomposisi LH (lowpass-highpass filtering) dan canny edge detection ;)

Membaca citra DICOM

December 24th, 2009 by Peb Ruswono Aryan

wow! post terakhir blog ini waktu musim uts dan sekarang sudah uas. setengah semester gak nulis? D

DICOM merupakan standar pengolahan (penyimpanan, komunikasi, penyetakan, dan pemrosesan) untuk keperluan medis. Salah satu subset dari DICOM adalah format berkas untuk citra. Di kegiatan riset KK 2009 kebetulan melibatkan citra DICOM sehingga akhirnya saya ceritakan di sini. Sebetulnya pustaka untuk membaca (dan menulis) citra dalam format DICOM sudah banyak yang tersedia baik komersial maupun yang kodenya tersedia bebas, namun sepertinya terlalu rumit karena fasilitas yang diberikan terlalu banyak padahal waktu itu kebutuhannya hanya membaca data citranya saja untuk diproses lebih lanjut. Akhirnya saya memutuskan untuk mencoba membuat sendiri modul yang khusus untuk membaca citra DICOM.

format penyimpanan citra DICOM sebetulnya cukup sederhana, berkas tersusun atas kumpulan potongan (chunk) informasi yang masing-masing potongan tersebut memiliki metainformasi (header) yang disebut DICOM data element. deskripsinya bisa dilihat pada kode berikut.

type
  TDICOMDataElmt = packed record
    group, element: word;
    VR: array[0..1] of char;
    val_length: word;
  end;

Deskripsi mengenai maksud potongan informasi tersebut dikodekan dalam bentuk pasangan nilai grup dan elemen (field group dan element) yang bertipe word (16-bit integer) sedangkan field VR merupakan deskripsi tipe data yang dikandung potongan tersebut. field val_length menyatakan panjang sisa informasi potongan tersebut (jika ingin dibaca atau dilewat).

Sebelum membaca urutan potongan informasi seperti yang dijelaskan di atas, ada beberapa hal yang perlu dilakukan yaitu membaca identitas (4 karakter/Bita) pada offset ke-128 (saya juga kurang tahu mengapa 128 Bita pertama dilewat).

    Seek( 128, soFromBeginning );
    Read( cid[0], 4 );

Kode di bawah merupakan keseluruhan fungsi untuk membaca citra ke dalam tipe internal yaitu TDICOMImage. Bagian yang berisi data piksel biasanya disimpan di VR bertipe “OB”, “OW”, atau “OF”.

//interface
type
  TDICOMinfo = record
    XSpacing: real;
    YSpacing: real;
    SeriesID: string;
    StudyID: string;
    FrameofRefUID: string;
    AllocBits, StoredBits: word;
    SliceLocation: real;
    WindowCenter: real;
    WindowWidth: real;
    Width, Height: word;
  end;

  TDICOMimage = record
    info: TDICOMInfo;
    im: array of array of real;
  end;

//...
//implementation
//...

function DICOM_load_image( filename: string; var img: TDICOMimage; skipimage: boolean ): boolean;
var
  cid               : array[0..3] of char;
  stmp              : array[0..$FF] of char;
  btmp              : array of byte;
  wtmp              : array of word;
  ftmp              : array of single;
  de                : TDICOMDataElmt;
  svr               : string;
  itmp              : integer;
  ustmp             : word;
  j                 : integer;
  a, b              : integer;
  isnew             : boolean;
  pp                : TStrings;

begin
  result := false;
  pp := TStringlist.Create;
  try
    if not fileexists( filename ) then exit;
    isnew := false;
    with TFileStream.Create( filename, fmOpenRead ) do begin
      Seek( 128, soFromBeginning );
      Read( cid[0], 4 );

      while Position < Size do begin
        Read( de, sizeof( de ) );
        svr := string( de.VR );

        if ( svr = 'UL' ) or ( svr = 'SL' ) then begin
          Read( itmp, sizeof( itmp ) );
        end
        else
          if ( svr = 'US' ) then begin
            Read( ustmp, sizeof( ustmp ) );
            if de.group = $28 then
              if de.element = $10 then begin
                if img.info.Width <> ustmp then isnew := true;
                img.info.Width := ustmp
              end
              else
                if de.element = $11 then begin
                  if img.info.Height <> ustmp then isnew := true;
                  img.info.Height := ustmp
                end
                else
                  if de.element = $100 then begin
                    img.info.AllocBits := ustmp;
                  end
                  else
                    if de.element = $101 then begin
                      img.info.StoredBits := ustmp;
                    end;
          end
          else
            if ( svr = 'LO' ) or ( svr = 'CS' ) or ( svr = 'TM' )
              or ( svr = 'DS' ) or ( svr = 'UI' ) or ( svr = 'DA' )
              or ( svr = 'PN' ) or ( svr = 'SH' ) or ( svr = 'IS' )
              or ( svr = 'ST' ) or ( svr = 'AS' ) then begin
              Read( stmp[0], de.val_length );
              stmp[de.val_length] := #0;

              if ( de.group = $20 ) and ( de.element = $D ) then img.info.SeriesID := Strpas( stmp );
              if ( de.group = $20 ) and ( de.element = $E ) then img.info.StudyID := Strpas( stmp );
              if ( de.group = $20 ) and ( de.element = $52 ) then img.info.FrameofRefUID := Strpas( stmp );

              case de.group of
                $0020: begin
                    case de.element of
                      $1041: begin
                          img.info.SliceLocation := StrToFloat( strpas( stmp ) );
                        end;
                    end;
                  end;
                $0028: begin
                    case de.element of
                      $0030: begin
                          pp.Delimiter := '\';
                          pp.DelimitedText := strpas( stmp );
                          img.info.XSpacing := StrToFLoat( pp[0] );
                          img.info.YSpacing := StrToFloat( pp[1] );
                        end;
                    end;
                  end;
              end;

            end
            else
              if ( svr = 'OB' ) or ( svr = 'SQ' ) or ( svr = 'UN' ) or ( svr = 'UT' ) then begin
                Read( itmp, sizeof( itmp ) );
                Setlength( btmp, itmp );
                Read( btmp[0], itmp );
                if ( de.group = $7FE0 ) and ( de.element = $10 ) then begin

                  if not skipimage then begin
                    if isnew then begin
                      setlength( img.im, img.info.Height );
                      for j := 0 to high( img.im ) do
                        setlength( img.im[j], img.info.Width );
                    end;

                    a := 0;
                    b := 0;
                    for j := 0 to high( btmp ) do begin
                      img.im[b, a] := btmp[j];
                      inc( a );
                      if a >= img.info.Width then begin
                        inc( b );
                        a := 0;
                        if b >= img.info.Height then break;
                      end;
                    end;
                  end;

                end;

              end
              else
                if ( svr = 'OW' ) then begin
                  Read( itmp, sizeof( itmp ) );

                  setlength( wtmp, itmp );
                  Read( wtmp[0], itmp );
                  if ( de.group = $7FE0 ) and ( de.element = $10 ) then begin

                    if not skipimage then begin

                      if isnew then begin
                        setlength( img.im, img.info.Height );
                        for j := 0 to high( img.im ) do
                          setlength( img.im[j], img.info.Width );
                      end;

                      a := 0;
                      b := 0;
                      for j := 0 to high( wtmp ) do begin
                        img.im[b, a] := wtmp[j];

                        inc( a );
                        if a >= img.info.Width then begin
                          inc( b );
                          a := 0;
                          if b >= img.info.Height then break;
                        end;
                      end;
                    end;

                  end;

                end
                else
                  if ( svr = 'OF' ) then begin
                    Read( itmp, sizeof( itmp ) );
                    setlength( ftmp, itmp );
                    Read( ftmp[0], itmp );

                    if ( de.group = $7FE0 ) and ( de.element = $10 ) then begin

                      if not skipimage then begin
                        if isnew then begin
                          setlength( img.im, img.info.Height );
                          for j := 0 to high( img.im ) do
                            setlength( img.im[j], img.info.Width );
                        end;

                        a := 0;
                        b := 0;
                        for j := 0 to high( ftmp ) do begin
                          img.im[b, a] := ftmp[j];

                          inc( a );
                          if a >= img.info.Width then begin
                            inc( b );
                            a := 0;
                            if b >= img.info.Height then break;
                          end;
                        end;
                      end;

                    end;

                  end
                  else begin
                    showmessage( 'unknown ' + svr );
                    break;
                  end;

      end;
      Free;
    end;
    setlength( btmp, 0 );
    setlength( wtmp, 0 );
    setlength( ftmp, 0 );
  except
    exit;
  end;
  pp.Free;
  result := true;
end;

jangan lupa menambahkan unit-unit yang dibutuhkan!

50 Tahun Pengabdian Hiu Kencana 1959-2009

December 24th, 2009 by Sawung


Buku ini berisi tulisan10 mantan komandan Hiu Kencana(satuan kapal selam RI) dan satu orang mantan komandan kamar mesin Hiu Kencana. Indonesia dulu pernah punya 12 kapal selam. Dengan 12 kapal selam tersebut seluruh wilayah Republik Indonesia terpantau. Sekarang hanya punya dua, itu pun kondisinya memprihatinkan. Katanya Indonesia negara maritim tapi angkatan lautannya dianaktirikan. Indonesia saat ini dikawasan masih ditakuti kemampuan kapal selamnya tapi entah 5 tahun kedepan karena negara dikawasan yang baru memiliki kapal selam dalam waktu 5 tahun mungkin akan mengejar kemampuan tempur yang dimiliki oleh Indonesia.

Foto-foto dibuku tersebut kualitasnya buruk. Editornya juga tidak teliti, banyak kesalahan penulisan. Beberapa istilah semestinya ditambahkan artinya dibelakang jika buku ini diniatkan untuk terbit untuk umum.

Penerbit Panitia Penerbitan Buku 50 Tahun Pengabdian HIU KENCANA
Cetakan: Agustus 2009
ISBN 978-979-96729-33



dimuntahkan oleh sawung@psik-itb.org
jendral tanpa pasukan, tentara tanpa senjata

Avatar. bukan legend of aang :P

December 23rd, 2009 by Prasetyo Andy Wicaksono

Yuhuu.. Kembali ke blog. Long weekend kemarin saya dan teman2 yang lain bedol desa kembali ke Bandung. Di hari jumat malam, saya, ndul, iqbal, katya dan nanda sepakat untuk menonton film yang lagi heboh diperbincangkan sampai saat ini: Avatar.

Awalnya saya kira avatar legend of aang yg diangkat ke layar lebar, ternyata setelah lihat poster dan filmnya, beda sama sekali. Haha.. Maklumlah akhir-akhir ini suka nonton film tanpa persiapan baca review atau sinopsis.

Tentang filmnya: WOW! Best movie ever! Budget yang katanya membuat film ini film dengan production cost termahal, terbayar dengan ciamik. Ceritanya kuat (katanya ceritanya udah dibuat james cameron 10 tahun lalu ya?), moralnya dapet, visualisasinya nomor 1. Lengkap lah.

Sayangnya saya datang terlambat, jadi butuh waktu ckp lama untuk catch up jalan ceritanya, dan nontonnya di layar bukan 3D. Sekarang sih masih mau nonton lagi yg versi 3D. Kayaknya ditonton beberapa kali juga ndak bikin bosen. Hehe..

*Sent from wordpress for blackberry P *

Ada serunya juga masang poster lama-lama

December 23rd, 2009 by T Rusmansjah
Yap, bulan kemarin saya bikin acara bareng teman2 bertajuk PRESENTICCON eps.2. Kebetulan saya malas untuk mencopot posternya di gedung TVST lantai 2 kampus ITB. Walau posternya cuma berukuran A5 dan ditempel dengan selotip tapi entah kenapa tidak ada keinginan saya buat nyopot… gak ada yang nyopotin pula dari petugas kebersihan… mungkin bagus kali ya posternya [...]

PRESENTICCON menyambut Tahun Baru 2010

December 22nd, 2009 by T Rusmansjah
Hmm… inisiatif dari Rendy Maulana (QWords.com). Saya copas aja ya dari Event promonya di Facebook: Ke acara Malam Tahun Baru yang seru yuk, dan bermanfaat Kenapa bermanfaat? karena ini acara lintas komunitas, ada dari beberapa komunitas di Bandung yang siap hadir dalam acara ini, dan juga rencananya bakal ada acara presentasi dari beberapa peserta acara ini. Venue : Qwords.com [...]

« Previous Entries