Friday, October 17, 2014

Penentuan Rotasi Citra Sidik jari



Ideal adalah kata yang selalu diinginkan untuk segala penerapan algoritma, mulai dari ideal bentuk nya, resolusi nya, letak nya. Misalka berikut adalah citra sidik jari yang sangat ideal yaitu jelas minuteae, letak center, tidak terjadi rotasi!

Tapi bandingkan dengan yang ini!
 




Blur, tergradasi dan yang paling menjengkelkan adalah mengapa miring??
Anda saja mereka tahu bahwa operasi finger recognition yang lumayan penting adalah core point dan sebaik nya tidak terjadi kemiringan, tapi ya sudahlah, rupanya kita butuh teknik ehancement dan teknik rotasi citra untuk membuat menjadi ideal. Penulis telah membahas sebelum nya mengenai teknik enhancement menggunakan teknik normalisasi, sedangkan pada kasus ini yaitu teknik mererotasi kembali agar tidak terjadi kemiringan. Berikut contoh penerapan dari operasi tersebut


Teknik Enhancement Normalisasi Citra


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link


kalian bisa lanjut baca lagi di  http://softscients.com/2020/03/27/buku-pengolahan-citra-digital-dengan-java-normalisasi-citra/




Hal pertama yang harus dilakukan dalam teknik finger code recognition adalah perbaikancitra sidik jarifinger enhancement yaitu memperbaiki kualitas citra. Seringkali mungkin kadangkalanya, kita akan mengolah suatu citra yang tidak bagus kualitasnya, entah karena ada noise, blur seperti berikut



Citra diatas tentu tergolong input yang bagus, tapi dibagian tepi masih terdapat derau, pencahayaan nya yang kurang optimal. Untuk menghasilkan kualitas citra yang bagus, perlu teknik normalisasi citra yaitu 


M0 dan V0 yang digunakan yaitu 100, Kemudian penulis sarankan kepada kalian untuk melakukan teknik perataan histogram dan faktor pengali setelah menggunakan teknik diatas yaitu

Penggunaan faktor = 2.5

Hasil_final = histeq(uint8(G*faktor))
Sebaiknya faktor pengali yaitu 2.4-2.6 saja, hasil nya seperti berikut



Penggunaan faktor = 2.3

Kemudian diperbaiki dengan faktor = 2.5 menjadi berikut


 
Terlihat bahwa teknik normalisasi citra akan menghasilkan citra yang siap digunakan untuk proses selanjut nya, jangan lupa kalian harus add path Java Image nya terlebih dahulu

import java.awt.image.BufferedImage;
import java.io.File;
import jimag.Image;
import jimag.ImageRead;
import jimag.ImageShow;
import jimag.ext.ImageNormalization;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author mulkan.ms@gmail.com
 */
public class DemoImageNormalization {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        // TODO code application logic here
        BufferedImage image = ImageRead.read(new File("D:/sidik jari.jpg"));        
          
        //convert ke gray
        double [][] gray = Image.rgb2gray(ImageRead.getMatrix(image));
        
       
        
        double M = 50;
        double Var = 100;
        double K = 2.4;
        ImageNormalization normalisasiCitra = new ImageNormalization(gray,M,Var,K); //proses normalisasi gambar

        new ImageShow(image,"original").setVisible(true);
        
        new ImageShow(Image.matrix2image(normalisasiCitra.getResult()),"Normalisasi Citra").setVisible(true);

    }
    
}








Saturday, October 11, 2014

Menghitung Gradient Citra - Operator Sobel



Penentuan gradient citra dapat menggunakan operator sobel, Untuk lebih jelas nya ke




Penulis tidak akan menerangkan lagi dalam bentuk artikel dalam postingan disini, tapi berusaha untuk mengimplementasikan dalam bentuk code yang siap pakai dan menggunakan function dasar yang ada di matlab. Berikut menggunakan operator sobel



Kemudian penulis mengimplementasikannya akan menghasilkan citra berikut



 
code nya berikut

Buku Pengolahan Citra Digital dengan Matlab - Penggunaan Function Filtering imfilter dan conv2

Ada suatu pertanyaan dari kawan yaitu mengenai cara membuat filter gaussian dan mengimplementasikan kedalam suatu citra yaitu ada 2 cara yaitu

Pertama

Kalian bisa menggunakan sesuai dengan ref: 
http://stackoverflow.com/questions/13193248/how-to-make-a-gaussian-filter-in-matlab menggunakan function imfilter atau conv2
clc;clear all;close all;
%% www.softscients.web.id
I = imread('D:/bird.bmp');
%% menggunakan function buil-in yaitu fspecial
myfilter = fspecial('gaussian',[5 5],2); %%membuat filter 
%% menggunakan function imfilter
Ig(:,:,1) = imfilter(double(I(:,:,1)),myfilter,'same');
Ig(:,:,2) = imfilter(double(I(:,:,2)),myfilter,'same');
Ig(:,:,3) = imfilter(double(I(:,:,3)),myfilter,'same');
figure,imshow(uint8(Ig)),title('imfilter -- www.softscients.web.id');
 
%% menggunakan function yang dibuat sendiri yaitu gaussian2d
myfilter2 = gaussian2d(5,2); %%membuat filter
%% menggunakan teknik convolution yaitu function conv2
Ig2(:,:,1) = conv2(double(I(:,:,1)),myfilter2,'same');
Ig2(:,:,2) = conv2(double(I(:,:,2)),myfilter2,'same');
Ig2(:,:,3) = conv2(double(I(:,:,3)),myfilter2,'same');
figure,imshow(uint8(Ig2)),title('convolution -- www.softscients.web.id');     


Kedua

Jika kita ingin membuat filter gaussian bisa menggunakan berikut

function f=gaussian2d(N,sigma)
%% http://stackoverflow.com/questions/13193248/how-to-make-a-gaussian-filter-in-matlab
N = N - 1;
[x y] = meshgrid(round(-N/2):round(N/2), round(-N/2):round(N/2));
f = exp(-x.^2/(2*sigma^2)-y.^2/(2*sigma^2));
f = f./sum(f(:));       



citra asli




citra yang diberi filter gaussian - blur


Pada dasarnya function imfilter bekerja dengan teknik convolution

Thursday, October 9, 2014

perbaikan citra digital dengan teknik FFT



Berbicara mengenai teknik perbaikan citra digital sangatlah luas sekali, pada kasus kali ini, penulis kedapatan suatu masalah untuk perbaikan kualitas citra digitalsidik jari yaitu untuk memunculkan kembali sidik pada hasil citra scan untuk dianalisis lebih lanjut. Teknik yang agak rumit pun dipakai yaitu teknik ForierTransform untuk mengubah citra domain ke ruang frekuensi. Teknik yang lebih cepat yaitu menggunakan FFT (fast forier transform) dengan menggunakan pilihan ukuran berupa  8, 16, dan 32.

Teknik ini bekerja dengan non overlapping block yaitu membagi block kecil berukuran 8,16,atau 32 kemudian tiap block dilakukan operasi berikut
misalkan ada data berikut






Maka kita membuat block, sebagai misal block biru dengan ukuran 8*8
matrix_block yaitu matrix berukuran sesuai dengan diatas

fft_ matrix_block  = fft(matrix_block); %%operasi fft

ifft_data = ifft((fft_ matrix_block).*abs(fft_ matrix_block.^k)); %%operasi dot matrix perkalian

dengan k adalah faktor yang bernilai antar 0.01- 0.2

kemudian hasil tersebut di assign kembali, dengan persamaan berikut

matrix_block = ifft_data

misalkan saja citra mempunyai ukuran 300*300 maka perlu di crop menjadi
288*288 saja dari persamaan
Ukuran = floor(300/32) = 9
Ukuran_crop = ukuran*32 = 288

Sehingga jika kita melakukan operasi non overlapping block dengan masing-masing block berukuran 8, maka ada 288/8 = 36 block baris* 36 block kolom dengan masing masing – masing block berukuran 8*8. 

Penulis menggunakan java untuk melakukan implementasi tersebut yaitu



Wednesday, October 8, 2014

Convolution dan Filtering Citra Digital



Jika anda pernah menggunakan software pengolah gambar seperti photoshop, GIMP dan yang lainnya mungkin akan mengenal dengan nama nya filter!
Filter tersebut bekerja menggunakan teknik convolusi mulai dari filter blur, sharpening, edge detection, curl, warp dan yang lain nya

Daripada penulis membuat tutorial, sebaik nya anda bisa merujuk ke
http://fourier.eng.hmc.edu/e161/lectures/convolution/index.html