Monday, April 14, 2014

Digital Image Processing Using Matlab - Latihan Matlab dan Image Processing Dasar

Assalamualaikum warahmatullah.
Punya Matlab yang terinstall tidak jelas di laptop? Daripada dianggurin, mending sejenak kita belajar tentang Pengolahan Citra Digital atau lebih kerennya disebut dengan Digital Image Processing. Apakah anda pernah menggunakan aplikasi pengolah foto seperti Adobe Photoshop, Photoscape dan Instagram? Wah, banyak sekali bukan fitur-fitur yang dimiliki aplikasi-aplikasi tersebut untuk memoles foto kita agar semakin indah dipandang? Kira-kira bagaimana sih cara kerjanya? Kok bisa foto yang kita capture dari device kita bisa berubah dan menjadi lebih indah? Ini nih gunanya Image Processing. Sebenarnya banyak sekali metode, teori, cara untuk mengolah gambar. Semua metode tersebut merupakan bagian dari pelajaran yang akan di dapat dari image processing ini. Tahukah anda, para pengembang teknologi mengolah gambar itu dengan memanfaatkan matematika yang sudah di dapat waktu SD, SMP, SMA, Kalkulus, Aljabar Linier, Statistika dan Komputasi Numerik untuk mengolah nilai piksel yang terkandung di dalam sebuah gambar.
Pernah melihat sebuah gambar yang di dalam komputer kita biasanya memiliki size tertentu? Itu dia merupakan hasil penjumlahan semua nilai piksel di dalam gambar tersebut.
Gambar itu secara umum terdiri dari 3 jenis, yaitu RGB, Grayscale dan Black&White. Sebenarnya Televisi jaman dulu menampilkan gambar dengan jenis Grayscale, hanya saja orang-orang salah kaprah mengartikan jenis gambar tersebut menjadi Black&White alias Hitam Putih.

  1. Disebut RGB karena memiliki 3 chanel warna, yaitu Red (tingkat kemerahan), Green (tingkat kehijauan) dan Blue (tingkat kebiruan) dengan nilai maksimal 255 dan nilai minimal 0. Itu alasannya mengapa warna putih dikodekan dengan #FFF dan hitam #000. 
  2. disebut Grayscale karena hanya memiliki 1 chanel warna yaitu tingkat keabuan dengan nilai minimal 0 dan nilai maksimal adalah 255
  3. disebut Grayscale karena hanya memiliki 2 kemungkinan warna yaitu 1 atau 0. Gambar dengan jenis ini juga sering disebut sebagai gambar biner.
Berikut adalah latihan dasar menggunakan Matlab sebelum nantinya menginjak materi Matlab lebih dalam, yaitu sebagai berikut:
  1. 1.      Perintah B=[1 2 3;4 5 6;7 8 9];
    Kode tersebut akan menunjukkan matriks dengan ordo 3x3 sebagai berikut:
    1 2 3
    4 5 6
    7 8 9
    2.      Tampilkan nilai B posisi(2,3) dan Ganti B(1,3) dengan 0.
    Untuk menampilkan B posisi(2,3), maka pada matlab harus diketikkan kode sbb:
    B(2,3)
    Untuk mengganti nilai pada posisi(1,3), maka:
    B(1,3)=0;
    3.      C=zeros(3);
    Kode tersebut menghasilkan matriks 0 berordo 3x3 sbb:
    0 0 0
    0 0 0
    0 0 0
    4.      D=ones(3);
    Kode tersebut menghasilkan matriks 1 berordo 3x3 sbb:
    1 1 1
    1 1 1
    1 1 1
    5.      E=B’;
    Kode tersebut akan mengisi E dengan matriks transpose dari B, yaitu:
    1     4     7
    2     5     8
    0     6     9
    6.      F=inv(B);
    Kode tersebut untuk menghitung nilai invers dari matriks B, yaitu:
       -0.3333   -2.0000    1.3333
        0.6667    1.0000   -0.6667
       -0.3333    0.6667   -0.3333

    7.      G=[2 4 6;2 4 6;2 4 6]
    Kode tersebut menghasilkan berikut:
    G =

         2     4     6
         2     4     6
         2     4     6
    8.      H=BXG
    X merupakan simbol perkalian cross dua buah matriks, maka perintah yang digunakan adalah :
    H=cross(B,G);
    dan menghasilkan sebagai berikut:
    H =

        -6   -12   -18
        12    24    54
        -6   -12   -36
    9.      I= B.G
    . merupakan simbol perkalian dot untuk 2 buah matriks, maka perintah yang digunakan adalah:
    I=dot(B,G);
    dan menghasilkan berikut:
    I =

        24    60    90

    10.  J = hasil pertambahan B dan G yang bersesuai posisinya(1 baris perintah)à J=B.+G; 
    Perintah yang digunakan adalah:
    J=plus(B,G);
    Hasilnya sebagai berikut:
    J =

      3   6     6
    6     9    12
    9   12    15
    11.   Perintah:
    If Nilai>= 80 && <=100àA
    Nilai>=65 &&<80àB
    Else Tidak lulus(harus pake editor)
    Dapat dilakukan dengan sintaks sebagai berikut:

    Nilai=input('Masukkan Nilai= ');
    if (Nilai>=80 && Nilai<=100)
        fprintf('A');
    elseif(Nilai>=65 && Nilai<80)
        fprintf('B');
        else fprintf('Tidak Lulus!soal');
    end

    12.  Perintah:
    K= baris pertama Bà 1 baris perintah
    K2= kolom pertama B à 1 baris perintah
    K3 = baris kedua dan ketiga B à 1 baris perintah
    Dapat dilakukan dengan sintaks:

    K=B(1,:);
    K2=B(:,1);
    K3=[B(2,:); B(3,:)];

    13.  L=2 x Bàtanpa loop
    Perintahnya:
                L = B * 2;

    14.  M=2 x B àdengan loop
    Perintahnya:
    for a = 1 : length(B)
        for b = 1 : length(B)
            M(a,b) = B(a,b) * 2;
        end
    end

    15.  Kernel = [1/9 1/9 1/9;1/9 1/9 1/9;1/9 1/9 1/9]
    Hasilnya:
    kernel =

        0.1111    0.1111    0.1111
        0.1111    0.1111    0.1111
        0.1111    0.1111    0.1111
    16.  N =[0 0 0 0 0;0 100 100 100 0;0 100 100 100 0;0 0 0 0 0]
    Hasilnya:
    N =

         0     0     0     0     0
         0   100   100   100     0
         0   100   100   100     0
         0     0     0     0     0

    17.  O=conv2(N,kernel)
    Hasilnya:
    O =

             0         0         0         0         0         0         0
             0   11.1111   22.2222   33.3333   22.2222   11.1111         0
             0   22.2222   44.4444   66.6667   44.4444   22.2222         0
             0   22.2222   44.4444   66.6667   44.4444   22.2222         0
             0   11.1111   22.2222   33.3333   22.2222   11.1111         0
             0         0         0         0         0         0         0
    18.  img=imgread(‘Tulips.jpg’);imshow(img);

    19.  imgR=img(1,:,1); imshow(imgR)

    imgR= img(:,:,1); imshow(imgR)


    20.  imgG=img(1,:,2); imshow(imgG)
    21.  imgB=img(1,:,3); imshow(imgB)

    Notasi tersebut mengambil gambar sebesar (a,b,c). a adalah besar pixel yang digambil secara vertikal, b adalah besar pixel yang diambil secara horizontal, dan c adalah channel gambar.
    22.  perintah untuk menggabungkan semua channel gambar adalah:
    imgGab=cat(3,imgR,imgG,imgB); imshow(imgGab);
    hasilnya:




    23.  P= hasil konvolusi kernel masingmasing channel IMG kemudiandigabungkan


    24.  Simpankedalam imgBlur.jpg
    25.  imgGS=im2gray(img);imshow(imgGS);

    26.  IMGbw=im2bw(img);

    27.  Tampilkandengan subplot
    Img
    imgGS
    imgBW
    imgR
    imgG
    imgB
    Perintah:
    subplot(3, 3, 1), subimage(img)
    title('Img asli')
    subplot(3, 3, 2), subimage(imgR)
    title('Img R')
    subplot(3, 3, 3), subimage(imgG)
    title('Img G')
    subplot(3, 3, 4), subimage(imgB)
    title('Img B')
    subplot(3, 3, 5), subimage(imgGab)
    title('Img Gab')
    subplot(3, 3, 6), subimage(gray)
    title('Img GS')
    subplot(3, 3, 7), subimage(imbw)
    title('Img BW')
    subplot(3, 3, 8), subimage(hasil)


    28.  Buat Title
    title('Img konvolusi')

    29.  Save gambar di plot
    saveas(gcf, 'Plot of Image', 'jpg');




0 comments:

Post a Comment