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.

Iklan

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.