Sabtu, 29 Juli 2017

CITRA DIGITAL

Penerapan gambar di Citra Digital


Pengertian Pengolahan Citra Digital Dan Pemanfaatannya

Pengolahan Citra Digital----- Sebagai mahasiswa teknik Informatika kita harus Mengenal mata kuliah yang satu ini, Pengolahan Citra Digital. Biasanya Pengolahan Citra Digital di ajarkan di semester 6 atau 7, tergantung program studi masing-masing universitas. Pengertian dari Pengolahan Citra Digital adalah : proses yang bertujuan untuk memanipulasi dan menganalisis citra dengan bantuan komputer. Baik citra yang berdimensi 2 atau citra 3 dimensi. 

Pengolahan citra digital dapat dikelompokkan dalam dua jenis kegiatan :
1. Memperbaiki kualitas suatu gambar, sehingga dapat lebih mudah diinterpretasi oleh mata manusia. Perbaikan ini termasuk dalam image Enhancement, sehingga di dapati kualitas citra yang lebih bagus dari sebelumnya, ada banyak sekali metode dalam perbaikan citra digital. Nanti akan dijelaskan admin pada postingan, berikutnya. Tunggu dan sabar kuliah onlinenya yahh :D
2. Mengolah informasi yang terdapat pada suatu gambar untuk keperluan pengenalan objek secara otomatis. Sebagai contoh aplikatifnya, image detection, sebuah potret wajah seseorang yang telah disimpan dalam databse, akan dapat dikenali oleh sistem komputer yang telah memuat pengolahan citra digital. Sebagai contoh simplenya, dalam aplikasi facebook anda, ketika anda mengunggah sebuah foto, maka facebook akan mengenali wajah siapa saja yang ada dalam foto tersebut. Nah, dalam image detection, akan ada syarat serta ketentuan tertentu yang harus di penuhi.

Bidang aplikasi kedua yang sangat erat hubungannya dengan ilmu pengetahuan pola (pattern recognition) yang umumnya bertujuan mengenali suatu objek dengan cara mengekstrak informasi penting yang terdapat pada suatu citra. Bila pengenalan pola dihubungkan dengan pengolahan citra, diharapkan akan terbentuk suatu sistem yang dapat memproses citra masukan sehingga citra tersebut dapat dikenali polanya. Proses ini disebut pengenalan citra atau image recognition. Proses pengenalan citra ini sering diterapkan dalam kehidupan sehari-hari.

Pengolahan citra dan pengenalan pola menjadi bagian dari proses pengenalan citra. Kedua aplikasi ini akan saling melengkapi untuk mendapatkan ciri khas dari suatu citra yang hendak dikenali. Secara umum tahapan pengolahan citra digital meliputi akusisi citra, peningkatan kualitas citra, segmentasi citra, representasi dan uraian, pengenalan dan interpretasi.


1. program citra berwarna dll

a=imread('c:\image\MAWI 1.jpg');
 red=a(:,:,1);
 green=a(:,:,2);
 blue=a(:,:,3);
 subplot(2,2,1);imshow(a),title('empat bola')
 subplot(2,2,2);imshow(red),title('empat bola merah')
 subplot(2,2,3);imshow(green),title('empat bola hijau')
 subplot(2,2,4);imshow(blue),title('empat bola biru')


x=imread('c:\image\MAWI 1.jpg');
z=x + 80 ;
subplot(1,2,1);imshow(x)
subplot(1,2,2);imshow(z)
y=2.5 * x;
subplot(2,2,1);imshow(x)
subplot(2,2,1);imshow(x)
subplot(2,2,2);imshow(z)
subplot(2,2,3);imshow(y)
figure(1);imshow(x)
figure(1);imshow(x)
figure(2);imshow(z)
figure(3);imshow(y)


2. Program kode program mengubah citra berwarna ke citra abu-abu

img=imread('c:\image\MAWI 1.jpg');
x=uint8(0.2989 * double(img(:,:,1))...
 + 0.5870 *double(img(:,:,2)) + 0.1141 *double(img(:,:,3)));
subplot(2,2,1);imshow(img),title('Rosmawi')
subplot(2,2,2);imshow(x),title('Rosmawi Keluaran')

program mengetahui susunan warna pada citra

a=imread('c:\image\MAWI 1.jpg');
 red   =a(:,:,1);
 green=a(:,:,2);
 blue  =a(:,:,3);
 subplot(2,2,1);imshow(a),title('Masukan empat bola')
 subplot(2,2,2);imshow(red),title('empat bola merah')
 subplot(2,2,3);imshow(green),title('empat bola hijau')
 subplot(2,2,4);imshow(blue),title('empat bola biru')

program mengubah citra abu-abu ke citra biner

img=imread('c:\image\MAWI 1.jpg');
 [tinggi,lebar] = size(img);
 ambang=150;
 biner=zeros(tinggi, lebar);
for baris=1 : tinggi
for kolom=1 : lebar 
if  img(baris,kolom)  >=ambang
biner(baris, kolom) = 0;
else
biner(baris,kolom) =1;
end
end
end

subplot(1,2,1);imshow(img),title('Masukan citra abu-abu')
subplot(1,2,2);imshow(biner),title('citra biner')
imshow(biner)



RGB=imread('C:\Image\MAWI 1.jpg');
YCBCR = rgb2ntsc(RGB);
Y=YCBCR(:,:,1); %Ekstraksi matriks Y
Cb=YCBCR(:,:,2); %Ekstraksi matriks Bc
Cr=YCBCR(:,:,3); %Ekstraksi matriks Br
subplot(2,2,1); imshow(RGB);
subplot(2,2,2); imshow(Y);
subplot(2,2,3); imshow(Cb);
subplot(2,2,4); imshow(Cr);

















program pemotongan aras keabuan

f = imread('c:\image\mobil.tif');
[jum_baris, jum_kolom] = size(f);
g = f;
for baris=2 : jum_baris-1
    for kolom=2 : jum_kolom-1
        minpiksel = min([f(baris-1, kolom-1)       ...
            f(baris-1, kolom) f(baris, kolom+1)    ...
            f(baris, kolom-1)                      ...
            f(baris, kolom+1) f(baris+1, kolom-1)  ...
            f(baris+1, kolom) f(baris+1, kolom+1)]);
        makspiksel = max([f(baris-1, kolom-1)       ...
            f(baris-1, kolom) f(baris, kolom+1)    ...
            f(baris, kolom-1)                      ...
            f(baris, kolom+1) f(baris+1, kolom-1)  ...
            f(baris+1, kolom) f(baris+1, kolom+1)]);    
            
        if f(baris, kolom) < minpiksel
           g(baris, kolom) = minpiksel;
        else
            if f(baris, kolom) > makspiksel
                g(baris, kolom) = makspiksel;
            else
                g(baris, kolom) = f(baris, kolom);
            end
        end    
    end
end


Program filter Batas
==========================

f = imread('c:\image\mobil.tif');
[jum_baris, jum_kolom] = size(f);
g = f;
for baris=2 : jum_baris-1
    for kolom=2 : jum_kolom-1
        minpiksel = min([f(baris-1, kolom-1)       ...
            f(baris-1, kolom) f(baris, kolom+1)    ...
            f(baris, kolom-1)                      ...
            f(baris, kolom+1) f(baris+1, kolom-1)  ...
            f(baris+1, kolom) f(baris+1, kolom+1)]);
        makspiksel = max([f(baris-1, kolom-1)       ...
            f(baris-1, kolom) f(baris, kolom+1)    ...
            f(baris, kolom-1)                      ...
            f(baris, kolom+1) f(baris+1, kolom-1)  ...
            f(baris+1, kolom) f(baris+1, kolom+1)]);    
            
        if f(baris, kolom) < minpiksel
           g(baris, kolom) = minpiksel;
        else
            if f(baris, kolom) > makspiksel
                g(baris, kolom) = makspiksel;
            else
                g(baris, kolom) = f(baris, kolom);
            end
        end    
    end
end

subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)



Program Filter Pererataan
===============================
f = imread('c:\image\boneka2.tif');
[jum_baris, jum_kolom] = size(f);
f2=double(f);
for baris=2 : jum_baris - 1
      for kolom=2 : jum_kolom - 1
jumlah= f2 (baris - 1, kolom - 1) + ...
f2(baris - 1 , kolom) + ...
f2(baris - 1, kolom - 1) +  ...
f2(baris, kolom - 1) +  ...
f2(baris, kolom) +  ...
f2(baris, kolom + 1) +  ...
f2(baris +1, kolom - 1) +  ...
f2(baris+1, kolom) +  ...
f2(baris+1, kolom + 1) ;

g(baris, kolom) = uint8 ( 1/9  *  jumlah);
     end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)



program filter median
=======================
f = imread('c:\image\mobil.tif');
[jum_baris, jum_kolom] = size(f);
for baris=2 : jum_baris - 1
      for kolom=2 : jum_kolom - 1
data= [f(baris-1, kolom-1) ...
f(baris-1, kolom) ...
f(baris-1, kolom+1) ...
f(baris, kolom-1) ...
f(baris, kolom) ...
f(baris, kolom+1) ...
f(baris+1, kolom-1) ...
f(baris+1, kolom) ...
f(baris+1, kolom-1)];
%urutkan
for i=1 : 8
   for j=i+1 : 9
      if data(i) > data(j)
temp =data(i);
data(i)=data(j);
data(j)=temp;
     end
  end
end
%ambil nilai median
g(baris,kolom)=data(5);
end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)

program penggeseran citra
---------------------------------------------

f=imread('c:\image\kartun.tif');
[jum_baris,jum_kolom]=size(f);
sx=20;   %penggeseran arah horizontal
sy=60;  %penggeseran arah vertikal
f2=double(f);
g=zeros(size(f2));
for baris=1 : jum_baris
  for kolom=1: jum_kolom
xlama=baris - sx;
ylama=kolom - sy;
  if (xlama >=1) && (xlama<=jum_baris) && ...
  (ylama >=1) && (ylama<=jum_kolom)
  g(baris,kolom)=f2(xlama, ylama);
  else
  g(baris,kolom)=0;
  end
 end
end
h=uint8(g);
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(h)

program memutar citra
============================
f=imread('c:\image\kartun.tif');
 [jum_baris, jum_kolom]=size(f);
sudut=10;  %sudut pemutaran
rad=pi * sudut/180;
cosa=cos(rad);
sina=sin(rad);
f2=f;
for y=1 : jum_baris
  for x=1 :jum_kolom
 x2=round(x * cosa + y * sina);
 y2=round(y * cosa - x * sina);

   if (x2>= 1) && (x2<=jum_kolom) && ...
   (y2 >=1)    && (y2<=jum_baris)
   g(y,x)=f2(y2,x2);
   else
   g(y,x)=0;
   end
 end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)


Program memperbesar Citra dengan fungsi
----------------------------------------------------
function g = perbesar(citra, sy, sx)
f = imread(citra);
[baris, kolom] = size(f);
baris_baru    = baris * sy;
kolom_baru = kolom * sx;
f2 = double(f);
for y=1 : baris_baru
    y2 = ((y-1) / sy) + 1;
    for x=1 : kolom_baru
        x2 = ((x-1) / sx) + 1; 
        g(y, x) = f(floor(y2), floor(x2));
    end
end

h = uint8(g);
end  %akhir fungsi
u=imread('c:\image\lena128.tif');
z=perbesar('c:\image\lena128.tif', 0.25, 0.25);
subplot(1,2,1);imshow(u),title('citra masukan')
subplot(1,2,2);imshow(z),title('citra perbesar')


program memperbesar citra cara tanpa fungsi 
=========================================
f=imread('c:\image\lena128.tif');
[baris, kolom] = size(f);
sy=0.5;
sx=2;
baris_baru    = baris * sy;
kolom_baru = kolom * sx;
f2=f;
for y=1 : baris_baru
    y2 = ((y-1) / sy) + 1;
    for x=1 : kolom_baru
        x2 = ((x-1) / sx) + 1; 
        g(y, x) = f(floor(y2), floor(x2));
    end
end
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(g),title('citra perbesar')

program pencerminan citra secara horizontal dengan fungsi
==============================================
function g = cerminh(f)
[tinggi, lebar] = size(f);
for y=1 : tinggi
    for x=1 : lebar
        x2 = lebar - x + 1;
        y2 = y;
        g(y, x) = f(y2, x2); 
    end
end
h = uint8(g);
end   %akhir fungsi
f=imread('c:\image\kartun.tif');
h=cerminh(f);
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(h),title('citra cermin horizontal')

program pencerminan citra secara horizontal dengan fungsi cara kedua
====================================================
function g = cerminh(f)
[jum_baris, jum_kolom] = size(f); 
for baris=1 : jum_baris
    for kolom=1 : jum_kolom
      
        x2 = jum_kolom - kolom + 1;
        y2 = baris;
        
        g(baris,kolom) = f(y2, x2); 
    end
end
%g = uint8(g);
end    %akhir fungsi
f=imread('c:\image\kartun.tif');
g=cerminh(f);
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(g),title('citra cermin horizontal')
program pencerminan citra secara horizontal tanpa fungsi
==============================================
f=imread('c:\image\kartun.tif');
[jum_baris, jum_kolom] = size(f); 
for baris=1 : jum_baris
    for kolom=1 : jum_kolom
      
        x2 = jum_kolom - kolom + 1;
        y2 = baris;
        
        g(baris,kolom) = f(y2, x2); 
    end
end
subplot(1,2,1);imshow(f),title('citra masukan')
subplot(1,2,2);imshow(g),title('citra cermin horizontal')



program mencari tepi biner objek tanpa fungsi
===========================================

f=imread('c:\image\daun_bin.tif');
[jum_baris, jum_kolom] = size(f);
g=f;
g = zeros(jum_baris, jum_kolom);
for q = 2 : jum_baris - 1
    for p = 2 : jum_kolom - 1
        p0 = f(q, p+1);
        p1 = f(q-1, p+1);
        p2 = f(q-1, p);
        p3 = f(q-1, p-1);
        p4 = f(q, p-1);
        p5 = f(q+1, p-1);
        p6 = f(q+1, p);
        p7 = f(q+1, p+1);
        sigma = p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7;
        if sigma == 8
            g(q, p) = 0;
        else
            g(q, p) = f(q, p);
        end
    end
end
subplot(1,2,1);imshow(f)
subplot(1,2,2);imshow(g)


function hasil=perim1(bw)
u=inbound_tracing(bw);
hasil=length(u) -1;
end  %akhir fungsi

img=imread('c:\image\daun_bin.tif');
perim1(img)

program pusat massa dan fitur menggunakan pusat massa dengan fungsi
==========================================================
function [pusat_x, pusat_y] = centroid(BW)
% CENTROID Untuk memperoleh pusat massa sebuah objek
%    yang terletak pada citra biner BW

[tinggi, lebar] = size(BW);
pusat_x = 0;
pusat_y = 0;
luas = 0;
for q = 1 : tinggi
   for p = 1 : lebar
      if BW(q, p) == 1
         luas = luas + 1;
         pusat_x = pusat_x + p;
         pusat_y = pusat_y + q;
      end
   end
end
pusat_x = pusat_x / luas;
pusat_y = pusat_y / luas;
end  %akhir fungsi

Daun = imread('C:\Image\daun_bin.tif');
[x, y] = centroid(Daun); imshow(Daun);
[panjang, lebar] = size(Daun);
line([0 lebar], [round(y) round(y)],’Color’,’b’)
line([round(x) round(x)], [0 panjang],’Color’,’b’)


Program Citra berwarna RGB Ke CMYK dengan fungsi sudah dimodifikasi
======================================================

function [c,m,y,k] = rgbkecmyk(r,g,b)
if max(max(r)) > 1.0 || max(max(g)) > 1.0 || max(max(b)) > 1.0
    r = double(r) / 255;
    g = double(g) / 255;
    b = double(b) / 255;
end

u = 0.5;
be = 1;
[tinggi, lebar] = size(r);
for baris=1: tinggi
    for kolom=1: lebar
        kb = min([(1-r(baris,kolom)) (1-g(baris,kolom)) (1-b(baris,kolom))]);
        if kb == 1
            c(baris,kolom) = 0;
            m(baris,kolom) = 0;
            y(baris,kolom) = 0;
        else  
            c(baris,kolom)  = (1.0 - r(baris,kolom) -  u * kb);
            m(baris,kolom) = (1.0 - g(baris,kolom) - u * kb);
            y(baris,kolom)  = (1.0 - b(baris,kolom) - u * kb);
            k(baris,kolom) = be * kb;
        end
    end
end

% Konversikan ke jangkauan [0,255]
c  = uint8(c * 255);
m = uint8(m * 255);
y  = uint8(y * 255);
k = uint8(k * 255);
end   %akhir fungsi
[c,m,y,k] = rgbkecmyk(171, 215, 170)

konversi rgb ke cmyk dengan nilai =
c = 64
m = 20
y = 65
k = 40

img = imread('c:\Image\lapangan.tif');
[c,m,y,k] = rgbkecmyk(img(:,:,1), img(:,:,2), img(:,:,3));
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow([c,m,y,k])

Program deteksi garis citra biner dengan fungsi
=================================

function [g] = deteksi(f, h, potong, pembulatan)
if nargin < 3
    potong = false;
end
if nargin < 4
    pembulatan = true;
end
[tinggi_f, lebar_f]  = size(f);
[tinggi_h, lebar_h] = size(h);
if rem(lebar_h, 2) == 0 || rem(tinggi_h, 2) == 0
    disp('lebar dan tinggi h harus ganjil');
    return;
end
m2 = floor(tinggi_h / 2);
n2  = floor(lebar_h / 2);

% Menentukan ukuran hasil beserta penentu  koordinat horizontal/vertikal/45/-45
if potong == true
    sisi_m2 = m2;
    sisi_n2  = n2;
    g = zeros(tinggi_f - 2 * m2, lebar_f - 2 * n2);
else
    sisi_m2 = 0;
    sisi_n2  = 0;
    g = zeros(size(f));
end
f2=double(f);
for y=m2+1 : tinggi_f-m2
    for x=n2+1 : lebar_f-n2
        % Pelaksanaan korelasi f(baris, kolom)
        jum = 0;
        for p= -m2 : m2
            for q= -n2 : n2
                jum = jum + h(p+m2+1,q+n2+1) * f2(y+p, x+q);
            end
        end  
        g(y - sisi_m2, x - sisi_n2) = jum;
    end
end
if pembulatan == true
    g = uint8(g);
end
end    %akhir fungsi

h1 = [-1 2 -1; -1 2 -1 ; -1 2 -1];
img = imread('C:\image\kotak.png');
g = deteksi(img, h1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(g,[0 1])


Program Deteksi garis pada citra Biner
====================================
function [G] = deteksi(F, H, potong, pembulatan)
if nargin < 3
    potong = false;
end

if nargin < 4
    pembulatan = true;
end

[tinggi_f, lebar_f] = size(F);
[tinggi_h, lebar_h] = size(H);

if rem(lebar_h,2) == 0 || rem(tinggi_h,2) == 0
    disp('Lebar dan tinggi H harus ganjil');
    return;
end

m2 = floor(tinggi_h/2);
n2 = floor(lebar_h/2);

% Menentukan ukuran hasil beserta
%    penentu ofset koordinat
if potong == true
    sisi_m2 = m2;
    sisi_n2 = n2;
    G = zeros(tinggi_f - 2 * m2, lebar_f - 2 * n2);
else
    sisi_m2 = 0;
    sisi_n2 = 0;
    G = zeros(size(F));
end
F2=double(F);
for y=m2+1 : tinggi_f-m2
    for x=n2+1 : lebar_f-n2
        % Pelaksanaan korelasi F(baris, kolom)
        jum = 0;
        for p=-m2 : m2
            for q=-n2 : n2
                jum = jum + H(p+m2+1,q+n2+1) * ...
                      F2(y+p, x+q);
            end
        end  
        G(y - sisi_m2, x - sisi_n2) = jum;
    end
end
if pembulatan == true
    G = uint8(G);
end
end    %akhir fungsi

H1 = [-1 -1 2; -1 2 -1 ; 2 -1 -1];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])

H1 = [-1 -1 -1; 2 2 2; -1 -1 -1];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])

H1 = [-1 2 -1; -1 2 -1;-1 2 -1];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])

H1 = [2 -1 -1; -1 2 -1;-1 -1 2];
img = imread('C:\image\kotak.png');
G = deteksi(img, H1);
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow(G,[0 1])



Program derau gaussian dengan fungsi
==================================================
function [g] = gaussian(f, sigma, mu)
%    g        = Menghasilkan citra yang telah diberi derau menggunakan gaussian.
%    f        = citra masukan berskala keabuan
%    sigma = standar deviasi fungsi gaussian
%    mu     = rerata fungsi Gaussian
if nargin < 3
    mu = 0;         % Nilai bawaan mu
end
if nargin < 2
    sigma = 1;      % Nilai bawaan standar deviasi
end
[m, n] = size(f);
g = double(f);
for i=1 : m
    for j=1 : n
        derau = randn * sigma + mu;
        g(i,j)  = round(f(i, j) + derau);  
        if g(i,j) >= 255
            g(i,j) = 255;
        elseif g(i,j) <= 0
            g(i,j) = 0;
        end
    end
end
g = uint8(g);
end   %akhir fungsi
f = imread('c:\image\kartun.tif');
g = gaussian(f, 150);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')

Program garam dan merica dengan fungsi
=================================
function [g] = gamer(f, probabilitas)
if nargin < 2
    probabilitas = 0.05;        % Nilai bawaan
end;
[m, n] = size(f);
g = double(f);
for i=1 : m
    for j=1 : n
        nilai_acak = rand;
        if nilai_acak <= probabilitas / 2
            g(i,j) = 0;
        elseif (nilai_acak > probabilitas / 2) && ...
               (nilai_acak <= probabilitas)
            g(i,j) = 255;
        end
    end
end
g = uint8(g);
end   %akhir fungsi
f = imread('c:\image\boneka.tif');
g = gamer(f, 0.05);
subplot(1,2,1);imshow(f), title('citra masukan')
subplot(1,2,2);imshow(g), title('citra keluaran')





Tidak ada komentar:

Posting Komentar

Fitur baru paytren

BERIKUT INI FITUR-FITUR YANG AKAN SEGERA DI SEMATKAN DALAM APLIKASI PAYTREN SETELAH PERIZINAN E-MONEY DARI BI DI TERBITKAN 1.Fasilitas Lay...