Anda di halaman 1dari 4

Oleh : Smoosh TIF4C

Art of programming, begitu Donald Knuth menyebut prosesi disain algoritma di mahakaryanya The Art of Computer Programming. Yap, programming adalah sebuah seni, dan programmer adalah seorang artis. Adalah amat menarik, untuk mengkombinasikan art of programming dengan mainstream digital arts seperti music, painting, dan aliran lainnya. WPAP, sebagai salah satu digital art yang unique, indah, penuh cita rasa, dan begitu wah, adalah sebuah fokus yang pantas untuk dipandang sebagai aliran digital art yang menantang untuk di solve dengan apa yang saya sebut sebagai programming way. Programming way adalah menterjemahkan kompleksitas seni mutual sebagai langkah yang terstruktur secara matematis, dengan kata lain melakukan injeksi matematis dalam pemahaman langkah pengerjaan atas suatu karya seni, sehingga bisa menimbulkan pola yang akan dibangun sebagai algoritma.

Kali ini, saya ingin menuliskan buah pemikiran atas analisa solusi kasus mengenai problemasi pembuatan WPAP instant oleh programmer yang tidak memiliki kemampuan seni mainstream yang praktis (seperti saya sendiri). Dan tentu saja, hasil dari sesuatu yang instant tidak akan pernah menyamai sebuah karya yang dibangun dengan skill dan penuh perasaan. Sedikit kilasan, Prosesi pembuatan WPAP bisa di rangkum ke dalam langkah sebagai berikut : Pemetaan struktur lekuk wajah menjadi box box trapesium Pewarnaan masing masing box dengan pemaduan yang menghasilkan keunikan

Itulah intinya, setidaknya bagi saya yang sama sekali tidak mengerti disain digital ini. Apa itu kedengaran mudah? Tentu tudak! Pemetaan struktur wajah memerlukan keahlian khusus, dan metode pewarnaan inilah yang menjadi permasalahan para art-noob, harus berseni! Jika komposisi warnanya salah, maka karya anda akan terlihat mati. Dalam analisa solusi ini, metode yang dimanfaatkan adalah Sieve Of Eratosthenes (http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes). Sieve Of Eratosthenes atau biasa disebut Eratos adalah metode prosedural yang sederhana namun amat cerdas yang diciptakan untuk menyelesaikan pencarian bilangan prima dengan kecepatan dan alokasi memori yang minimum. Lalu, kenapa ini bisa berkaitan dengan WPAP?

Eratos memiliki langkah praktis yang cerdas untuk menemukan bila bilangan ngan prima, secara garis besar langkahnya bisa dituliskan sebagai berikut : Memanfaatkan sebuah pointer (penanda) Semua bilangan yang ditemui pointer adalah prima Pointer memulai dari angka 2 Setiap kelipatan dari bilangan yang telah ditemui pointer tidak lagi dijangkau

Silahkan link di atas jika ingin memahami lebih jauh mengenai langkah Eratos. Nah untuk menerapkannya dalam WPAP, kita hanya perlu merombak sedikit perintah dari langkah Eratos yang telah dituliskan sebelumnya. Pemetaan wajah menjadi box misalnya, alnya, kita perlu beberapa proses dasar : Kenali gambar dalam bentuk pixel (ada banyak metodenya, menfaatkan part code dari OMR, OCR atau metode yang menggunakan image pixelling lainnya lain) Bandingkan RGB nya, jika RGB memiliki selisih cukup jauh Pola ola pembagian bisa ditentukan sendiri, atau mengikuti pola standar yang saya dapat dari melakukan kukan beberapa riset, yak yakni : Jika sebuah pixel memiliki selisih R >=50 terhadap R rata rata sebuah grup pixel terdekat terdekat, maka pixel tersebut akan membuat grup pixel baru Jika tidak maka pixel tersebut akan bergabung dengan grup pixel dengan selisih terendah Jika sebuah pixel memiliki selisih G >=30 terhadap G rata rata sebuah grup pixel terdekat terdekat, maka pixel tersebut akan membuat grup pixel baru Jika tidak maka pixel tersebut akan bergabung dengan grup pixel dengan selisih terendah Jika sebuah pixel memiliki selisih B >=50 terhadap B rata rata sebuah grup pixel terdekat terdekat, maka pixel tersebut akan membuat grup pixel baru Jika tidak maka pixel tersebut akan bergabung dengan grup pixel dengan selisih terendah

Jika sebuah pixel memiliki selisih R >=30 dan G >=25 terhadap R dan G rata rata sebuah uah grup pixel terdekat, maka pixel tersebut akan membuat grup pixel baru Jika tidak maka pixel tersebut akan bergabung dengan grup pixel dengan selisih terendah Jika sebuah pixel memiliki selisih G >=25 dan B >=30 terhadap G dan B rata rata sebuah uah grup pixel terdekat, maka pixel tersebut akan membuat grup pixel baru Jika tidak maka pixel tersebut akan bergabung dengan grup pixel dengan selisih terendah Jika sebuah pixel memiliki selisih R >=40 dan B>=35 terhadap R dan B rata rata sebuah uah grup pixel terdekat, maka pixel tersebut akan membuat grup pixel baru Jika tidak maka pixel tersebut akan bergabung dengan grup pixel dengan selisih terendah Jika sebuah pixel memiliki selisih R >=25, G >= 25, , dan B>=25 terhadap R, G, dan B rata rata sebuah grup pixel terdekat, maka pixel tersebut akan membuat grup pixel baru Jika tidak maka pixel tersebut akan bergabung dengan grup pixel dengan selisih terendah

Tentu saja, hasil riset tersebut masih amat amatir apalagi oleh seorang yang bisa dikatakan artless mengenai seni lukis digital. Langkah selanjutnya adalah

Petakan masing masing grup pixel sebagai sebuah box box dengan mengganti setiap RGB pixel yang berbtasan menjadi 000000 (hitam) Pemetaan box selesai

Tidak semudah teorinya, praktisnya akan ditemukan banyak sekali kesusahan dalam menerapkan kasus IF diatas menjadi sebuah program, dan sekali lagi diingatkan, ini bukan tutorial tutoria programming melainkan tulisan inspirasi pemikiran, bagi yang tertarik boleh mencoba (cukup woth it kalo dijadikan bahan TA) Nah, h, dimana Eratos nya? Belum, kasus IF diatas sangat tidak praktis jika program harus mengecek masing masing pixel dengan sedemikian IF (bayangkan saja, gambar yang diambil oleh Sony Experia = 8MP, maka akan ada 8 ribu pixel ya yang harus di cek), untuk itu digunakan Eratos.

Data pixel diurut dengan pola R, G, dan B menaik Memanfaatkan 7 pointer (penanda), masing masing pointer bekerja di R, G, B, RG, GB, RB, dan RGB. Semua pixel yang ditemui pointer adalah new group Masing masing pointer memulai dari pixel dengan area kerja bernilai terendah Setiap pixel dengan R<50 yang ditemukan pointer R tidak lagi dijangkau Setiap pixel dengan G<30 yang ditemukan pointer G tidak lagi dijangkau Setiap pixel dengan B<50 yang ditemukan pointer B tidak lagi dijangkau Setiap pixel dengan R<30 dan G<25 yang ditemukan pointer RG tidak lagi dijangkau Setiap pixel dengan G<25 dan B<30 yang ditemukan pointer GB tidak lagi dijangkau Setiap pixel dengan R<40 dan B<35 yang ditemukan pointer RB tidak lagi dijangkau Setiap pixel dengan R<25, G<25, dan B<25 yang ditemukan pointer RGB tidak lagi dijangkau

Bukankah langkah diatas menghemat ribuan recheck pixel? Bagaimana dengan metode pewarnaan? Bagaimana inspirasi program yang bisa membuat paduan warna dengan cita rasa? Masih perlu sedikit riset untuk part 2 ^^