Deteksi Warna dengan Jarak Euclidean

[peng.citra|t.kom|lab.hardware|pert.6]

Sistem cerdas membutuhkan teknik agar peralatan dapat membedakan satu warna dengan warna lainnya. Teknik termurah dan termudah adalah dengan jarak Euclidean. Perhitungannya menggunakan rumus jarak dua titik koordinat (dua, tiga, dan dimensi-n) yang mirip garis miring Phytagoras. Sebagai kelanjutan dari pertemuan 5 yang lalu, tambahkan tombol pushbutton disertai edit text untuk melihat komposisi RGB sebuah citra.

Agar ukuran dan format sama dengan tombol-tombol yang lain, kita boleh meng-copy paste tombol dan isian lainnya. Jika sudah simpan dan tambahkan tiga buah warna yang akan diuji. Buat saja dengan menggunakan paint pada Windows. Simpan dalam format JPG agar lebih mudah karena kebanyakan citra dibuat dalam format ini.

Mencari Nilai Terbesar RGB

Salah satu teknik termudah menebah warna sebuah citra adalah dengan mencari nilai terbesar. Cara ini tentu banyak kelemahannya, khususnya untuk warna komposit (gabungan) seperti kuning, ungu, orange, dan lain-lain. Namun, teknik ini tetap digunakan ketika menggunakan jarak Euclidean, tetapi menggunakan fungsi mencari nilai terkecil (kebalikannya). Kode berikut diletakan di Callback deteksi warna.

  • fR=handles.y(:,:,1);
  • fG=handles.y(:,:,2);
  • fB=handles.y(:,:,3);
  • fr=mean(mean(fR));
  • fg=mean(mean(fG));
  • fb=mean(mean(fB));
  • % mencari terbesar
  • warna=[fr fg fb]
  • strwarna={‘merah’ ‘hijau’ ‘biru’}
  • [maks,indeks]=max(warna)
  • outwarna=strwarna(indeks)
  • set(handles.edit4,’String’,outwarna)
  • set(handles.edit5,’String’,fr)
  • set(handles.edit6,’String’,fg)
  • set(handles.edit7,’String’,fb)

fR, fG dan fB adalah berturut-turut matriks citra merah, hijau dan biru. Sementara fr, fg, dan fb nilai rata-rata ekstrak warna dari citra. Perhatikan bagian % mencari nilai terbesar b di atas. Di sini digunakan fungsi max. Fungsi set di akhir fungsi mengirim jawaban yang merupakan warna yang ditebak oleh sistem ke edit text4 dalam contoh ini.

Menggunakan Jarak Euclidean

Jarak Euclidean lebih “ampuh” karena mampu mendeteksi warna komposit dengan menghitung jaraknya dari warna-warna yang jadi patokan/kelas. Sebagai latihan, patokannya misal dianggap sama yaitu merah, hijau dan biru. Pada prakteknya bisa saja merah, kuning dan hijau seperti lampu lalu-lintas.

Tambahkan satu tombol pushbutton “Deteksi Warna (Euclidean)” untuk membedakan dengan tombol sebelumnya yang hanya menggunakan nilai maksimal RGB.

Sebagai ilustrasi, nilai X tentu saja dengan nilai terbesar akan ditebak masuk kategori R. Tetapi di sini kita menghitung terlebih dahulu jaraknya terhadap R, G, dan B lalu dibandingkan mana jarak terkecilnya. Rumus Euclidean adalah mirip sisi miring Phytagoras:

Silahkan menggunakan rumus di atas, atau bisa menggunakan fasilitas fungsi norm pada Matlab yang artinya “normal Euclidean”. Berbeda dengan fungsi max untuk mencari nilai maksimum, untuk mencari nilai minimum dapat menggunakan fungsi min. Ok, masukan kode ini pada tombol “Deteksi Warna (Euclidean)”.

  • warna=[fr fg fb]
  • dR=norm(warna-[255 0 0])
  • dH=norm(warna-[0 255 0])
  • dB=norm(warna-[0 0 255])
  • hasil=[dR dH dB]
  • % mencari jarak terkecil
  • strwarna={‘merah’ ‘hijau’ ‘biru’}
  • [minimum,indeks]=min(hasil)
  • outwarna=strwarna(indeks)
  • set(handles.edit4,’String’,outwarna)
  • set(handles.edit5,’String’,fr)
  • set(handles.edit6,’String’,fg)
  • set(handles.edit7,’String’,fb)

Uji dengan me-run GUI yang baru saja diisi kode-nya. Pastikan sistem bisa menebak warna. Selamat Ber-praktikum.

Deteksi Tepi dengan Matlab

[peng.citra|t.kom|lab.hardware|pert.5]

Di antara deteksi lainnya, seperti titik dan garis, deteksi tepi sangat bermanfaat untuk mengetahui suatu objek secara pasti dan terpisah dari objek lainnya, misalnya background. Pertemuan kali ini sedikit membahas metode-metode deteksi tepi yang terkenal antara lain: sobel, prewitt, dan robert. Untuk itu lanjutkan proyek sederhana pertemuan yang lalu dengan menambahkan satu panel berisi tiga pushbutton: sobel, prewitt, dan robert.

Konversi ke Gray

Deteksi tepi bermain dengan intensitas brightness. Ketika langsung mengakses gambar berwarna RGB ada pesan kesalahan. Perlu merubah terlebih dahulu citra yang diambil dari pushbutton “Ambil Citra” menjadi gray. Copas saja kode pada tombol “Konversi ke Gray” dan masukan ke “Sobel”.

  • z=rgb2gray(handles.y);
  • [g,t]=edge(z,’sobel’)
  • axes(handles.axes2)
  • imshow(g)

Silahkan lihat tatacara penggunaan fungsi edge dengan mengetik “help edge” pada command window. Untuk metode Prewitt dan Robert, caranya sama hanya saja menggunakan parameter berturut-turut ‘prewitt’ dan ‘robert’.

Perhatikan ada noise yang tertangkap. Biasanya sebelum deteksi tepi beberapa manipulasi terhadap citra original-nya diperlukan, misalnya filter dengan fungsi imfilter. Selamat mencoba, semoga bermanfaat.

Membuat Kunci Komposit

[basis.data|akuntansi|lab.software|pert.4]

Kunci komposit adalah kunci yang merupakan gabungan dari beberapa field. Misalnya mahasiswa yang mengambil beberapa kelas mata kuliah dan kelas mata kuliah yang memiliki beberapa mahasiswa. Hal itu akibat dari hubungan/relasi Many-to-Many yang mengharuskan dibentuk satu tabel baru (Lihat Post sebelumnya). Untuk membuat kunci komposit pada Ms Access, gunakan SHIFT ketika menyorot field-field yang akan dijadikan primary key. Setelah itu tekan simbol key.

Membuat Satu Halaman Landscape Pada Sebuah Naskah

[komputer1|psikologi|lab.soft|pert4]

Terkadang satu halaman karena berisi tabel yang melebar agar terlihat jelas dibutuhkan format landscape. Karena hanya satu lembar/page yang landscape maka diperlukan format section agar section lainnya tidak terpengaruh oleh format landscape-nya.

Menggunakan Fungsi Section Breaks

Format ini memisahkan satu section dengan section lainnya. Letakan kursor pada bab yang akan dibedakan section-nya. Lanjutkan dengan menu Page Layout Breaks Section Breaks dan lanjutkan memilih Next Page jika belum pindah halaman dan Continuous jika sudah pindah halaman.

Jika sudah selesai pastikan Section terpisah, misal section 1 dan section 2. Kemudian pada page/lembar berikutnya lakukan cara yang sama, sehingga section 2 yang akan landscape terpisah dengan section 1 dan section 2 yang portrait.

 

 

Kemudian lakukan hal yang sama untuk section 3. Jadi urutannya section-1, Section 2 dan section 3. Jika section 2 dirubah jadi landscape section 1 dan 3 tidak ikut landscape. Hanya saja perhatikan lagi format page number – nya. Selamat mencoba..

Melakukan Cropping Pada Citra

[peng.citra|t.komputer|lab.hardware|pert.4]

Terkadang untuk menangkap secara detil suatu permukaan diperlukan proses pemotongan/cropping. Sebagai contoh, lanjutan dari pertemuan 3 yang lalu, tambahkan satu tombol Crop Gambar.

Jika tombol “Crop Gambar” ditekan maka gambar hasil cropping akan ditampilkan pada axes2 di sebelah kanan. Dan jika tombol “Ekstrak Citra R-G-B” ditekan akan menghasilkan harga-harga R,G, dan B yang sudah ternormalisasi di tiga edit text di atasnya.

Cropping Image Pada Matlab

Pada Matlab, fungsi cropping dengan menggunakan fasilitas fungsi imcrop. Silahkan tekan “help imcrop” di command window untuk mengetahui format penulisan fungsi tersebut di kode yang akan dibuat.

  • x=uigetfile(‘*.jpg’);
  • data=imread(x);
  • size(data)
  • ans =
  • 423 644 3

Perhatikan ukuran data citra yang dibaca (lewat imread). Jika kita bayangkan dengan koordinat kartesians, maka panjangnya adalah 644 dan lebarnya adalah 423. Untuk panjang tidak masalah karena arahnya dari kiri ke kanan, hanya saja untuk lebar sedikit berbeda dengan koordinat kartesian. Di sini positif ke arah bawah. Jadi titik tengah gambar tersebut adalah panjang 322 dan lebar 211. Jika ingin mengambil lebar 50 dan panjang juga 50 maka region tersebut dari titik (297, 186) dan offset sebesar masing-masing 50 piksel. Masukan fungsi imcrop untuk memotong gambar.

  • >> data2=imcrop(data,[297 186 50 50]);
  • >> imshow(data2)

Perhatikan format penulisan cropping dimana dua angka terakhir merupakan offset dari titik dimana posisi awal crop dimulai. Untuk mengekstrak citra RGB silahkan gunakan kode di pertemuan 3 yang lalu. Selamat mencoba, semoga bermanfaat.

Problem Many-to-Many Pada Sistem Basis Data

[sist.basis.data|akuntansi|lab.software|pert.3]

Dalam relasi suatu basis data dikenal beragam kardinalitas, antara lain: one-to-one, one-to-many dan many-to-many. Kardinalitas (cardinality) merupakan derajat jumlah suatu hubungan entitas. Entitas sendiri merupakan suatu abstraksi independen dari hal-hal yang terlibat dalam suatu sistem, misalnya dosen, mahasiswa, karyawan, dan lain-lain. Misalnya antara dosen dengan kelas, hubungannya biasanya one-to-many yaitu satu dosen mengajar satu atau lebih kelas dan satu kelas diampu oleh satu dosen (walaupun bisa saja lebih dari satu dosen). Jika dimodelkan konsepnya (conceptual model) akan berbentuk seperti ini (digambar online dengan ini: https://cloud.smartdraw.com/):

Untuk hubungan one-to-many, semua sistem basis data bisa membuat model logikanya beserta implementasi fisiknya. Caranya adalah dengan menambahkan satu Foreign Key di tabel kelas, yaitu nip dosen yang merupakan primary key pada tabel dosen nantinya. Sebaliknya untuk hubungan many-to-many, sistem basis data yang ada saat ini tidak bisa langsung memodelkan model konsep, misalnya atribut kelas dengan mahasiswa yang mengambil kelas tersebut. Di sini many-to-many karena satu kelas lebih dari satu siswa dan satu siswa mengambil lebih dari satu kelas.

Beberapa teknik mengharuskan konversi dari ERD ke Logical Record Structure (LRS). Beberapa alat bantu perancangan basis data, seperti Datanamic Dezign ketika ada hubungan Many-to-Many akan menghasilkan satu tabel baru di tengah-tengahnya (defaultnya bernama mahasiswa-kelas, dalam contoh ini, misalnya kita beri nama tabel perkuliahan. Tabel baru tersebut mengambil kode kelas dan nomor pokok mahasiswa sebagai kunci tamu (Foreign Key).

Biasanya tabel baru tersebut berjenis tabel transaksi, misalnya mahasiswa yang mendaftarkan dalam KRS-nya kuliah apa yang akan diambil. Biasanya kunci utamanya (Primary Key) adalah gabungan npm dan kode_kelas, tapi bisa saja menggunakan kode baru, misalnya generated numbers. Nyambung dengan ERD di atasnya, dalam tabel kelas ada kunci tamu kode dosen (NIP). Jadi kelas yang diambil oleh seorang siswa dapat diketahui dosen yang mengajarnya. Jika ingin melihat list peserta kuliah suatu kode kelas, dapat menggunakan perintah select untuk kode kelas tertentu di tabel perkuliahan tersebut. Tinggal praktekan pembuatan tabel-tabelnya.

Menghitung Nilai RGB Sebuah Citra

[peng.citra.digital|tek.komputer|lab.software|pert.4]

Nilai RGB merupakan format pewarnaan yang paling banyak digunakan. Format ini menangkap warna merah (red), hijau (green) dan biru (blue) suatu citra. Dengan komposisi tiga warna tersebut dapat dibuat beragam spektrum warna lainnya. Postingan kali ini akan dibahas bagaimana mengekstrak nilai R, G, dan B suatu citra.

Format RGB

Letakan current directory pada folder di mana citra berada. Kemudian lanjutkan dengan menarik suatu gambar bertipe jpg, png, bmp dan lain-lain. Format RGB suatu citra dapat diketahui dengan fungsi size dan menghasilkan format:

(baris) (kolom) (rgb)

Untuk contoh penerapan dapat menggunakan instruksi berikut ini:

  • [1] x=uigetfile(‘*.jpg*’);
  • [2] data=imread(x);

Misalnya dengan mengetik instruksi size(data) diperoleh hasil:

1150         1427          3

Kolom ke-3 mengindikasikan tiga komposisi warna (merah, hijau, dan biru).

Mengekstrak R, G, dan B

Untuk mengetahui komposisi warna (RGB) dapat dengan cara mengakses data yang dibaca lewat fungsi imread mengikuti indeks kolom 3 apakah 1 (untuk red), 2 (untuk green) dan 3 (untuk blue).

  • [3] fR=data(:,:,1);
  • [4] fG=data(:,:,2);
  • [5] fB=data(:,:,3);

 

Tingkat R, G, dan B

Untuk mengetahui tingkat merah, hijau, dan biru secara total dapat mencari nilai rata-rata lewat fungsi mean. Line [6] – [8] bermaksud menghitung rata-rata masing-masing kelas warna. Dua buah fungsi mean dibutuhkan untuk menghitung total baris dan kolom. Line [9] – [11] bermaksud menormalkan tingkat warna dengan jangkauan 0 hingga 1.

  • [6] fr=mean(mean(fR));
  • [7] fb=mean(mean(fG));
  • [8] fc=mean(mean(fB));
  • [9] frr=fr/255;
  • [10]fbb=fb/255;
  • [11]fcc=fc/255;

Contoh GUI Menghitung Tingkat RGB

Untuk memudahkan, terkadang perlu dibuat GUI agar lebih mudah mencari nilai RGB suatu citra. Contohnya adalah rancangan berikut. Gunakan fungsi tambahan set untuk mengirim hasil perhitungan rgb (nilai RGB yang sudah dinormalkan).


  • [12] set(handles.edit1,‘String’,frr)
  • [13] set(handles.edit2,‘String’,fbb)
  • [14] set(handles.edit3,‘String’,fcc)

Jalankan dan lihat hasilnya seperti di bawah (nilai dari atas ke bawah menunjukkan masing-masing R, G, dan B). Padukan dengan fungsi lain seperti imcrop untuk memotong citra agar tidak masuk di dalamnya background, dibahas pada pertemuan yang lain. Semoga bermanfaat.

 

Membuat Halaman yang Berbeda dalam Satu Naskah

[komputer1|psikologi|lab.software|pert.3]

Dalam satu naskah yang berisi daftar isi, kata pengantar, bab 1 dan seterusnya terkadang memiliki penomoran halaman yang berbeda. Misalnya daftar isi memiliki nomor halaman i, ii, iii, dst sementara bab 1, bab 2, dan seterusnya bernomor 1, 2, 3, .. dan seterusnya.

Page Break

Pisahkan dengan fungsi Page Break dengan menekan Insert – Page break.

Section Break

Jika page break sudah dilakukan semua, langkah berikutnya adalah membuat section break yang akan memisahkan satu section (bab) dengan section lainnya, misalnya antara bab 1 dengan daftar tabel, daftar gambar dan daftar isi. Arahkan kembali kursor di sisi BAB I kemudian masuk ke Page Layout – Breaks – Section Break. Pilih fungsi yang sesuai yaitu Next Page.

Dengan melakukan Section Breaks maka antara bab 1 dan daftar tabel dianggap bab yang berbeda. Untuk mengujinya dobel klik di atas Bab 1 dan pastikan ada dua section yang terpisah (section 1 di atas dan section 2 di bawah).

Membuat Halaman

Pada Daftar Isi tambah halaman dengan menu Insert – Page Numbers – Buttom of Page misalnya. Jangan khawatir nanti bisa diset ulang. Pastikan ada halaman muncul di bagian bawah berkas tersebut.

Berikutnya, karena misal menurut panduan penulisan bahwa daftar isi, daftar gambar dan daftar tabel ditulis dalam format huruf: i, ii, iii, dst, maka harus dilakukan format halaman ulang.

Memformat Nomor Halaman

Arahkan ke nomor halaman, lalu sorot dengan kursor (menekan sambil ditahan) halaman tersebut. Pastikan nomor halaman tersorot.

Setelah itu muncul jendela Format Page Numbers. Ganti format angka dengan format huruf i, ii, dan seterusnya.

Terakhir perlu merubah nomor halaman bab 1 yang sebelumnya lanjut dari halaman daftar tabel menjadi halaman 1.

Lanjutkan dengan me-refresh/update daftar isi agar sesuai dengan halaman yang baru saja diseting. Pastikan halaman sudah berubah sesuai dengan format (daftar isi, daftar gambar, dan daftar tabel berturut-turut i, ii, dan iii, sementara bab 1 dan seterusnya 1, 2, 3, dan seterusnya).

Menghapus Section Break (UNDO Section Break)

Dobel klik di halaman atas untuk membuka header – footer. Masuk ke menu View – Draft. Arahkan ke Section Break (Next Page). Lanjutkan dengan menekan Delete di Keyboard. Kembalikan ke lagi ke Print Layout.

Kompilasi Matlab Menjadi Executable

[peng.citra.digital|tek.komputer|lab.hardware|pert.3]

Matlab biasanya berfungsi sebagai interpreter, yaitu mengeksekusi program mengikuti listing yang ada pada M-file satu persatu. Agar kode pada M-file dapat dijalankan tanpa membuka Matlab maka perlu kompilasi menjadi executable program. Misalnya program berikut ini:

GUI di atas dapat dijalankan hanya jika Matlab dibuka. Untuk menjalankan program di atas tanpa menggunakan Matlab, lakukan langkah kompilasi berikut ini:

Membuat Deployment Project

Masuk ke menu – File New Deployment Project. Pilih Windows Standalone Program karena kita akan membuat program berbasis Windows (bukan console). Walaupun bisa juga dipilih Standalone Application.

Setelah itu kita diminta memasukan file-file kode sumber. Pilih *.m file yang diperlukan untuk mengeksekusi program pada Main File. Karena berbasis GUI maka diperlukan file lain yaitu file GUI (*.fig).

Build The Project

Langkah berikutnya setelah memasukan kode sumber dan file tambahan lain adalah melakukan build. Tekan simbol di bagian atas. Setelah itu masuk ke command window untuk memasukan beberapa parameter yang dibutuhkan Matlab untuk membangun/build program. Tekan mbuild_setup di bawah command window.

Ketika muncul ‘Would you like mbuild to locate installed compilers [y]/n? >>’ tekan enter atau y. Dilanjutkan dengan memilih Compiler. Pilih no.1 karena tampak lokasinya di folder MATLAB:

  • Select a compiler:
  • [1] Lcc-win32 C 2.4.1 in C:\PROGRA~2\MATLAB\R2008b\sys\lcc
  • [0] None
  • Compiler: >>

Pastikan letak ada di program matlab, bukan di program lainnya. Tekan “y” jika sudah benar. Jika sudah maka Matlab sudah disetel Compiler-nya, hingga muncul “Done . . .”.

Tekan simbol dan pastikan muncul instruksi di bawah:

Tekan link berwarna hijau tersebut untuk melanjutkan proses kompilasi. Tunggu hingga selesai (pastikan muncul Compilation Completed di bagian bawah):

Membuat Paket Program

Untuk menguji program executable hasil kompilasi, buka di folder project-nya lanjutkan ke folder src. Jalankan folder *.exe yang merupakan program hasil kompilasi. File ini dapat dijalankan tanpa menggunakan Matlab.

Hanya saja tidak berjalan jika komputer target tidak terinstal Matlab. Maka perlu dibuat Paket yang berisi DLL yang secara gratis disediakan Matlab. Gunakan fasilitas Package dari Deployment project di Matlab. Tekan simbol “kardus”:

Tunggu proses Packaging hingga selesai (packaging completed). Hasilnya adalah file exe ditambah dengan satu fole installer (ratusan megabyte). Untuk dijalankan di komputer yang tidak terinstall Matlab, harus diinstall/menjalankan program exe paket tersebut.

Untuk uji coba, tutup program Matlab dan hanya jalankan program exe hasil kompilasi di atas. Berikut tampilan running program-nya, selamat mencoba.

Membuat Daftar Gambar/Tabel pada Microsoft Word

[aplikasi.komputer|manajemen|lab.sainstech|pert.2]

Dalam skripsi selain daftar isi, yang perlu dibuat secara otomatis adalah daftar gambar dan daftar tabel. Manfaatnya terasa ketika jumlah gambar yang cukup banyak dalam satu naskah sehingga terhindar dari penomoran yang ganda atau terlewat.

MEMBUAT CAPTION/JUDUL GAMBAR

Tekan pada gambar dilanjutkan dengan menambahkan judul gambar dengan menekan menu References dilanjutkan dengan Insert Caption.

Secara default akan terisi Figure 1. Jika akan mengganti tekan New Label dilanjutkan dengan mengisi labelnya, seperti di atas misalnya Gambar. Setelah itu seting warna dan ukuran sesuai dengan aturan penulisan skripsi.

MEMBUAT DAFTAR GAMBAR/TABEL

Untuk membuat daftar gambar, letakan kursor di tempat daftar gambar berada dilanjutkan dengan menekan menu References dan pilih Insert Table of Figures.

Pastikan daftar gambar muncul pada tempatnya. Halaman letak gambar berada akan otomatis sama dengan pada daftar gambar.

Untuk daftar tabel, gunakan cara yang sama dengan daftar gambar di atas. Pilih New Label dan tambahkan kata Tabel di isian.

Praktek Kode Standar SQL dengan Ms Access – CREATE TABLE

Structure Query Language (SQL) merupakan bahasa standar dalam mengakses suatu basis data. Bahasa ini dikatakan standar karena dapat dipergunakan untuk beragam sistem manajemen basis data (DBMS) seperti Ms Access, MySQL, Oracle, dan lain-lain.

Membuat/Create Tabel Baru

SQL memiliki tiga jenis instruksi, antara lain: data definition language (DDL), data manipulation language (DML) dan data control language (DCL). Salah satu instruksi penting dalam DDL adalah pembuatan tabel baru. Biasanya dengan cara mengklik pembuatan tabel, sebuah tabel dengan mudah dibuat dengan wizard yang ada di Ms Access. Tetapi ternyata dapat dibuat juga dengan script SQL seperti DBMS lainnya. Buka Microsoft Access yang disertakan satu paket dengan Microsoft Office.

Buka menu Create dan pilih Query Design untuk mempersiapkan jendela kode SQL. Tekan Close ketika diminta memilih tabel mana yang akan dibuat.

Buka teori tentang tata cara membuat suatu tabel dengan kode SQL. Searching saja di Google tata caranya. Untuk mengisi kode tekan SQL yang terletak di kiri atas jendela Access.

Lanjutkan dengan menulis kode SQL. Di sini kita mengambil contoh membuat tabel “dosen” yang berisi field-field antara lain: nip, nama, dan mata kuliah:

CREATE TABLE dosen (nip int primary key, nama varchar(25), mkul varchar(20));

Field “nip” yang merupakan “primary key” bertipe integer sementara “nama” dan “mkul” bertipe tex atau dalam Access dikenal dengan nama “varchar”. Jika nama memiliki panjang 25, mata kuliah (mkul) memiliki panjang 20 karakter. Tekan tombol tanda seru untuk menjalankan kode SQL tersebut. Jika tidak ada kesalahan maka tabel dosen dengan tiga atribut tersebut terbentuk. Silahkan menggunakan perintah lainnya misalnya untuk DML dengan instruksi SELECT yang akan mengambil data suatu tabel di database kita. Selamat mencoba.

 

Praktek Membuat GUI untuk Pengolah Citra

[24.9.18/pengolahan.citra/lab.hardware/pert.2]

Matlab memiliki fasilitas untuk pengolahan citra dengan fungsi-fungsi yang tersedia. Dengan command window pengguna bisa mengambil data gambar, mengolah data, dan menampilkan hasil olahnya. Fungsi sederhana yang akan diselesaikan pada postingan ini adalah fungsi:

  • imshow
  • uigetfile

Mengeset Current Directory

Current directory pada matlab pertama-tama harus disetel terlebih dahulu. Cara paling mudah adalah menyamakan dengan direktori dimana gambar/citra diletakan. Cara lain adalah mengeset path atau dengan menggunakan basis data dari luar (MS Access atau MySQL). Untuk yang ingin belajar menggunakan basis data dari luar silahkan pelajari lebih lanjut dari sumber lain.

Membuat GUI

Graphical User Interface (GUI) merupakan fasilitas yang memudahkan pengguna program yang dibuat. Bentuknya seperti form yang interaktif dan mudah. Dalam contoh ini ada tombol yang berfungsi mengambil file gambar dan penampil gambar di form. Rancang GUI seperti di bawah ini.

Selahkan ikuti langkah-langkah dalam video tutorial berikut ini. Hasil akhirnya ketika di running maka GUI siap diisi kode program.

Mengisi Kode Program

Sebelum mengisi kode program ada baiknya mengecek fungsi-fungsi yang dimasukan apakah sudah benar. Atau setidaknya tersedia di versi Matlab yang dipakai. Gunakan fungsi uigetfile dan fungsi imshow yang berturut-turut untuk mengambil file gambar dan menampilkannya.

  • x=uigetfile(‘*.jpg’)
  • imshow(x)

Jika sudah berjalan di command window maka pindahkan di fungsi-fungsi di atas pada tombol “Ambil Citra” pada GUI. Caranya dengan klik kanan pada “Ambil Citra” – view Callback Callback. Selamat mencoba.

E-learning Instan dengan Edmodo

Orang-orang se-generasi dengan saya tidak begitu setuju dengan hal-hal yang serba instan, apalagi menyangkut hal-hal yang penting, seperti pendidikan, terutama para rekan yang idealis. Tetapi di era milenial dengan fenomena disrupsi sekarang ini, jika tidak bisa memberikan servis yang disertai kemudahan-kemudahan, maka dapat dipastikan akan tergerus bahkan hancur.

Waktu itu sekembalinya dari tugas belajar, saya mulai mempraktekan flipped learning yang meng-switch perkuliahan dengan pembelajaran di rumah. Jika selama ini perkuliahan tatap muka digunakan untuk transfer ilmu, maka metode ini membaliknya menjadi diskusi dan pengayaan. Di manakah letak transfer ilmu-nya? Jawabnya adalah sebaliknya, transfer ilmu dilakukan sepanjang waktu ketika siswa berada di luar kelas. Caranya bagaimana? Tentu saja e-learning salah satunya. Cara lainnya banyak: Whatsapp, Chating, Telegram, dan lain-lain. Namun masing-masing aplikasi yang memang pada dasarnya dibuat bukan untuk pembelajaran daring, maka memiliki beberapa keterbatasan seperti pembuatan soal, quiz, dan lain-lain. Whatsapp yang sempat saya gunakan karena kampus tidak mempersiapkan e-learning dengan cepat ada masalah ketika hp saya error dan data history hilang semua. Untuk komunikasi, WA dkk sepertinya dapat diandalkan, setidaknya sebagai pelengkap e-learning.

Mendaftar Edmodo

Edmodo dapat diakses di link resminya (edmodo.com). Ada tiga pilihan untuk login: teacher, student dan parent. Sign up saja dengan cepat via email Anda, atau bisa juga dengan “Continue with Google” di bawah “Continue with Office 365”.

 

Mengundang Mahasiswa Mengikuti Kelas

Setelah kelas dibentuk maka tutor dapat mengundang mahasiswa untuk mengikuti perkuliahan. Caranya ada dua: 1) mengisi data-data si mahasiswa dan 2)menge-share kode kelas yang muncul di Edmodo. Masing-masing punya kelemahan dan kelebihan.

Cara Pertama: Memasukan Langsung

Masuk ke Member Options lalu pilih Add Students dilanjutkan dengan menambah siswa-siswa peserta kelas kita.

Unik juga, siswa tidak wajib memasukan e-mail. Perhatikan, ada tiga mahasiswa yang didaftar tanpa login email. Ketika Add Students ditekan, maka Edmodo akan meng-generate akun disertai passwordnya.

Jangan lupa menekan Download Instruction untuk memunculkan PDF akun dan passwod ketiga siswa di atas.

Ketika login pertama kali maka mahasiswa disarankan langsung mengganti password yang diberikan oleh Edmodo. Cara ini praktis juga karena siswa secara Instan bisa bergabung di kelas tanpa Sign Up di Edmodo. Caranya adalah masuk ke: https://www.edmodo.com/?show_login_modal=1 dengan account di atas:

Satu hal yang unik adalah Edmodo meminta email orang tua/parent untuk peserta. Walaupun tidak diwajibkan, mungkin maksudnya agar mudah dimonitor oleh orang tua, khawatirnya mereka mengikuti e-learning sesat … hehe. Gantilah password dengan masuk ke Setting dan masuk ke menu Password di kiri lalu ganti passwordnya.

Cara Kedua: Meminta Siswa Mendaftar/Join

Cara kedua lebih praktis, yaitu siswa diminta gabung setelah terlebih dahulu sign up di edmodo. Ketika ingin bergabung mereka diminta memasukan kode kelas yang telah kita bagikan sebelumnya. Di menu Classes tekan Joint a Class lalu di jendela Join Group masukan kode kelasnya. Tidak diperlukan parent di cara ini.

Tapi satu kelemahannya adalah jika kode kelas tersebar ke mana-mana maka semua orang bisa masuk ke kelas kita. Walaupun kita bisa me-remove yang bersangkutan, tetapi sangat merepotkan, terlebih jika kelasnya banyak, misalnya ratusan. Apalagi untuk masuk tidak perlu konfirmasi dari kita, alias langusng ikut.

Kelemahan Edmodo

Banyak hal-hal yang sifatnya tertutup ada kemungkinan terbuka keluar karena menggunakan aplikasi berbagi edmodo. Selain itu sistem darurat ini tidak bisa dijadikan hibah pembelajaran daring yang saat ini mulai digenjot oleh Kemristekdikti. Tetapi untuk kampus yang enggan menyiapkan e-learning, atau e-learningnya ingin sempurna sekali (walau entah kapan jadinya), aplikasi ini dengan mudah dapat dipakai. Sekian, siapa tahu bermanfaat.

Jangan Hilang Fokus Ya …

Fokus ibarat sasaran anak panah atau permainan dart. Tanpa fokus akan bingung akan diarahkan ke mana anak panah. Tapi, walau fokus ada terkadang si pemain lupa dengan fokus sasaran tersebut. Akibatnya panah tidak kunjung menancap ke sasaran. Begitu juga dengan sasaran-sasaran lainnya, misalnya untuk dosen yaitu ingin studi lanjut ke S3.

Kampus negeri biasanya sudah terpola dengan jelas tangga karirnya, beda dengan kampus swasta yang mengharuskan dosen kreatif, baik untuk memenuhi kebutuhan hidup maupun dalam menaiki tangga ke jenjang yang lebih tinggi (pangkat/golongan dan pendidikan). Apalagi jika kampus swasta tersebut bukan kampus kelas atas yang memang memacu dosen-dosennya untuk meningkatkan jenjang karirnya. Berikut hilang fokus yang menurut pantauan saya biasa terjadi.

Kepangkatan

Dosen memiliki jenjang kepangkatan: tenaga pengajar (tanpa pangkat), asisten ahli, lektor, lektor kepala (assoc. profesor) dan profesor. Pangkat tersebut tidak diperoleh dengan otomatis mengikuti masa kerja tetapi harus mengumpulkan poin yang dikenal dengan istilah KUM. Ketika saya pindah dari satu kampus yang memperhatikan pangkat dengan kampus baru yang kurang memperhatikan pangkat tampak nuansa yang berbeda. Kaget juga saya yang kerja sambil ngajar memiliki pangkat asisten ahli melihat dosen di kampus baru saya yang kebanyakan masih berstatus tenaga pengajar. Yang anehnya banyak yang masih S1, padahal saya melihat kualitas mereka lebih baik dari kampus saya sebelumnya. Ketika melihat ekspresi mereka yang biasa-biasa saja tanpa beban sepertinya mereka tidak melihat fokus ke depan (jenjang karir). Barulah ketika pemerintah mengharuskan dosen S2, ditambah adanya sertifikasi dosen, baru mereka panik dan memperhatikan pangkat dan pendidikan lanjut.

Pendidikan Doktor

Ini lebih berat dari kepangkatan, karena membutuhkan dana, fokus, dan terkadang ada sesuatu yang dikorbankan (waktu dengan keluarga, mengajar, kehilangan tunjangan serdos, dan lain-lain). Namun melihat paniknya dosen-dosen senior yang berusia di atas 50 tahun karena tidak diperkenankan lagi memperoleh beasiswa, sepertinya ada yang tidak beres. Sebenarnya logis saja, ketika S2 saja enggan, apalagi berfikir untuk S3 yang membutuhkan energi lebih. Menurut saya, lagi-lagi biang keroknya kehilangan fokus.

Banyak usaha-usaha dilakukan untuk meningkatkan dosen-dosen S3, salah satunya misalnya doctoral bootcamp. Tetapi walaupun bagus juga, mengasah fokus, tetapi setelah acara selesai, kebanyakan peserta kehilangan fokus lagi dan asyik dengan kesehariannya (mengajar, riset, dan mengurus kampus). Untungnya beberapa dosen yang tidak kehilangan fokus dan berhasil studi lanjut, bisa memicu fokus rekan-rekannya untuk studi lanjut, apapun caranya.

Problem Usia 50 Untuk Beasiswa

Di grup WA banyak protes ke pemerintah karena dibatasinya usia untuk memperoleh beasiswa. Pada dasarnya pemerintah tidak melarang usia di atas 50 untuk studi lanjut, hanya beasiswa saja yang tidak boleh lagi mengajukan. Info dari pewawancara yang saya ikuti, katanya itu aturan dari menteri pendayagunaan aparatur negara. Selain alasan-alasan lainnya yang tidak saya mengerti.

Prinsip life long learning sepertinya tidak menghalangi orang untuk belajar, termasuk mengambil kuliah doktoral, umur berapapun. Hanya saja jangan lupa faktor-faktor lain yang menyertai usia tua, salah satunya adalah kesehatan. Bukan menakuti-nakuti, tetapi cerita berikut bisa diambil hikmahnya untuk persiapan bagi yang ingin kuliah di usia mendekati 50 tahun.

Ketika itu saya mengunjungi rekan saya yang divonis kanker stadium akhir. Suaminya bercerita bahwa memang ada riwaya dari keluarga. Tetapi kejadian muncul tiba-tiba ketika baru saja ambil S3 dan dosen-nya termasuk dosen “ribet”. Beberapa kali bolak-balik revisi disertasi/risetnya dengan jarak yang cukup jauh (bekasi – bandung). Ditambah lagi anak yang harus diurus, membuat beban fikiran bertambah. Mungkin itu penyebab penyakitnya tumbuh. Walaupun umur di tangan Allah, tetapi jangan lupa kesehatan, dan meninggalnya orang yang sedang belajar pasti akan dibalas ganjaran setimpal oleh Allah s.w.t. Sedih juga ketika melayat ke rumahnya, semoga amal ibadanya diterima Allah .. amiin. Usia beliau tidak jauh berbeda dengan saya, mendekati 40 ketika kuliah.

Berikutnya rekan kuliah saya yang “pas” 50 tahun. Aturan di kampusnya, akan dibiayai kuliah asal usia tidak melebihi 50 tahun. Beasiswa yang diperoleh dari kampus asal karena beasiswa pemerintah untuk kuliah luar negeri tidak boleh lebih dari 45 tahun. Akhirnya rekan saya bisa berangkat. Hanya saja masalah muncul, yaitu kesehatan. Darah tinggi yang sudah lama diderita, muncul di saat kuliah. Ditambah lagi obat-obatan yang lupa dibawa memicu “stroke” yang mengharuskan opname 2 minggu sebelum akhirnya menghembuskan nafas terakhir. Namun banyak juga yang berhasil lulus di usia 50-an, tetapi kebanyakan dengan susah payah (termasuk saya .. ). Semoga bagi rekan-rekan yang ingin lanjut S3 tidak kehilangan fokus., bisa studi lanjut, lulus, dan toga “strip 3” bisa dikenakan.

Sebenarnya kehilangan fokus tidak masalah karena mudah sekali menemukan fokusnya lagi asal ada yang mengingatkan (rekan dosen lainnya dan pimpinan), beda dengan yang gagal fokus ..

Konversi Kode String ke ASCII di Matlab

Iseng-iseng buka tulisan yang lalu tentang enkripsi karena materi mulai masuk ke pemrosesan teks, ternyata banyak yang lupa. Salah satunya adalah konversi dari string ke kode ASCII. Kode ini sangat diperlukan ketikan mengkonversi dari satu ASCII ke yang lainnya dalam rangka enkripsi.

Menambah dengan Nol

Dulu pernah belajar kode ASCII pada mata kuliah bahasa rakitan ketika membahas masalah interupt. Ternyata hingga saat ini tidak berubah.

Bagaimana mengetahui kode ASCII selain dengan tabel di atas jika menggunakan Matlab? Caranya mudah yaitu tambahkan saja string dengan nol, beres sudah. Misal huruf ‘A’ maka:

  • >> teks=’A’
  • teks =
  • A
  • >> ascii=teks+0
  • ascii =
  • 65

Di sini 65 merupakan kode HTML, yang berbeda dengan HEXA (41). Jika sudah, kita dengan mudah mengenkripsi suatu kata, misalnya “Rahmadya” dengan algoritma “tambahkan kode ASCII tiap huruf dengan satu”.

Mengenkripsi Kata

Fungsi yang diperlukan adalah CHAR untuk menampilkan kode ASCII ke string. Masukan ke command window instruksi berikut ini.

  • >> teks=’Rahmadya’
  • teks =
  • Rahmadya
  • >> enkripsi=teks+1
  • enkripsi =
  • 83 98 105 110 98 101 122 98
  • >> char(enkripsi)
  • ans =
  • Sbinbezb

Perhatikan Sbinbezb itu adalah kode enkripsi yang dihasilkan. Untuk mendekripsi caranya mudah, yaitu dengan mengurangkan satu kode tersebut.

  • >> dekripsi=ans-1
  • dekripsi =
  • 82 97 104 109 97 100 121 97
  • >> char(dekripsi)
  • ans =
  • Rahmadya

Perhatikan kode aneh “Sbinbezb” setelah dienkripsi adalah “Rahmadya”. Semoga hal sepele ini bermanfaat.