PENGOLAHAN CITRA BERWARNA - andyusuf-informatika

New Post

Minggu, 30 Juli 2017

PENGOLAHAN CITRA BERWARNA



1. Dasar Warna

Manusia sebenarnya melihat warna adalah karena cahaya yang dipantulkan oleh objek. Dalam hal ini spektrum cahaya kromatis berkisar antara 400-700 nm (nanometer) (zhou, dkk, 2010) kromatis berarti kualitas cahaya yang ditentukan panjang gelombang.
karakteristik persepsi mata manusia yang membedakan antara saru warna dengan warna lain adalah
  • Hueàmencerminkan warna yang ditangkap oleh mata manusia yang menanggapi berbagai nilai panjang gelombang cahaya. panjang gelombang 430  dan 480 nanometer warna yang diterima adalah warna biru, 570 – 600 warna yang diterima kuning, sedangkan campuran merah dan hijau terlihat kuning
  • saturation menyatakan tingkat kemurnian warna atau seberapa banyak cahaya putih yang tercampur  dengan hue. Setiap warna murni bersaturasi 100% dan tidak mengandung cahaya putih sama sekali. Dengan perkataan lain suatu warna murni yang bercampur dengan cahaya putih memliki saturasi antara 0 sampai 100 %
  • Brightness atau kadang disebut lightness (kecerahan) menyatakan intensitas pantulan objek yang diterima mata. Intensitas dapat dinyatakan sebagai perubahan warna putih menuju abu-abu dan terakhir mencapai ke warna hitam atau yang dikenal denagn istilah aras keabuan.

2. Ruang Warna

Gonzalez dan woods (2002) mendefinisikan ruang warna  (atau kadang disebut sistem warna atau model warna) sebagai suatu spesifikasi sistem koordinat dan suatu subruang dalam sistem tersebut dengan setiap warna dinyatakan dengan titik di dalamnya. 
Tujuan dibentuk warna untuk memfasilitasi spesifikasi warna dalam bentuk suatu standar. Ruang warna paling dikenal pada perangkat komputer adalah RGB sesuai watak manusia yang menangkap warna. Kemudian dibuat banyak warna antara lain HSI, CMY, LUV, YIQ

3. Ruang RGB

Model RGB bisa disajikan dalam bentuk kubus  tiga dimensi dengan warna merah, hijau, dan biru berada pada pojok sumbu perhatikan gambar berikut 

Selanjutnya pada coding octave :
Program Citra berwarna RGB Ke CMYK dengan fungsi sudah dimodifikasi hotma
=====================================================================
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\an.jpg');
[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 Citra berwarna RGB Ke CMYK dengan fungsi dari buku
==============================================
function [C,M,Y,K] = RGBkeCMY(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;
b = 1;
[tinggi, lebar] = size(R);
for m=1: tinggi
    for n=1: lebar
        Kb = min([(1-R(m,n)) (1-G(m,n)) (1-B(m,n))]);
        if Kb == 1
            C(m,n) = 0;
            M(m,n) = 0;
            Y(m,n) = 0;
        else   
            C(m,n) = (1.0 - R(m,n) - u * Kb);
            M(m,n) = (1.0 - G(m,n) - u * Kb);
            Y(m,n) = (1.0 - B(m,n) - u * Kb);
            K(m,n) = b * 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] = RGBkeCMY(171, 215, 170)

hasil konversi RGB ke CMYK=
C = 64
M = 20
Y = 65
K = 40

img = imread('C:\Image\an.jpg');
[C,M,Y,K] = RGBkeCMY(img(:,:,1), img(:,:,2), img(:,:,3));
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow([C,M,Y,K])



program cmyk ke rgb dengan fungsi dari buku
=======================================
function [R,G,B] = CMYkeRGB(C,M,Y,K)
% CMYkeRGB digunakan untuk mengonversi CMYK ke RGB
%    Berdasarkan Pratt (2001)
%    Dasar: b=1 dan u = 0,5

% Normalisasi CMY ke [0, 1]
C = double(C);
M = double(M);
Y = double(Y);
K = double(K);

if max(max(C)) > 1.0 || max(max(M)) > 1.0 || ...
   max(max(Y)) > 1.0 || max(max(K)) > 1.0
    C = double(C) / 255;
    M = double(M) / 255;
    Y = double(Y) / 255;
    K = double(K) / 255;
end

u = 0.5;
b = 1;
[tinggi, lebar] = size(C);
for m=1: tinggi
    for n=1: lebar
       
        Kb = K(m,n) / b;
        if Kb == 1
            R(m,n)=0;
            G(m,n)=0;
            B(m,n)=0;
        else
            R(m,n) = 1 - (C(m, n) + u * Kb);
            G(m,n) = 1 - (M(m, n) + u * Kb);
            B(m,n) = 1 - (Y(m, n) + u * Kb);
        end
    end
end

% Konversikan ke jangkauan [0,255]
R = uint8(R * 255);
G = uint8(G * 255);
B = uint8(B * 255);
end    %akhir fungsi
[R,G,B] = CMYkeRGB(64,20,65,40)

hasil konversi CMYK ke RGB =
R = 171
G = 215
B = 170

img=imread('c:\image\andri 12.jpg');
[R,G,B] = CMYkeRGB(img(:,:,1), img(:,:,2), img(:,:,3));


Program rgb ke yiq dengan fungsi sudah dimodifikasi Hotma
==================================================
function [y, i, q] = rgbkeyiq(r,g,b)
if max(max(r)) > 1 || max(max(g)) > 1 || max(max(b)) > 1
    r = double(r) / 255;
    g = double(g) / 255;
    b = double(b) / 255;
end

[tinggi, lebar] = size(r);
for m=1: tinggi
    for n=1: lebar
        y(m,n)  = 0.299 * r(m,n) + 0.587 * g(m,n) + 0.114*b(m,n);
        i(m,n)   = 0.596 * r(m,n) - 0.274 * g(m,n) - 0.322*b(m,n);
        q(m,n)  = 0.211 * r(m,n) - 0.523 * g(m,n) + 0.312*b(m,n);
    end
end

% Konversikan ke jangkauan [0,255]
y = uint8(y * 255);
i = uint8(i * 255);
q = uint8(q * 255);

end  %akhir fungsi
[y,i,q] = rgbkeyiq(171, 20, 250)

hasil konversi RGB ke YIQ =
Y = 91
I = 16
Q = 104

img = imread('C:\Image\an.jpg');
[y,i,q] = rgbkeyiq(img(:,:,1), img(:,:,2), img(:,:,3));
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow([y,i,q])



Program RGB ke YIQ dengan fungsi
======================================
function [Y, I, Q] = RGBkeYIQ(R,G,B)
% RGBkeYIQ digunakan untuk mengonversi RGB ke YIQ
% Normalisasi RGB ke [0, 1]
R = double(R);
G = double(G);
B = double(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

[tinggi, lebar] = size(R);
for m=1: tinggi
    for n=1: lebar
        Y(m,n) = 0.299 * R(m,n) + 0.587 * G(m,n) + 0.114*B(m,n);
        I(m,n) = 0.596 * R(m,n) - 0.274 * G(m,n) - 0.322*B(m,n);
        Q(m,n) = 0.211 * R(m,n) - 0.523 * G(m,n) + 0.312*B(m,n);
    end
end

% Konversikan ke jangkauan [0,255]
Y = uint8(Y * 255);
I = uint8(I * 255);
Q = uint8(Q * 255);

end  %akhir fungsi
[Y,I,Q] = RGBkeYIQ(171, 20, 250)

hasil konversi RGB ke YIQ =
Y = 91
I = 16
Q = 104


img = imread('C:\Image\an.jpg');
[Y,I,Q] = RGBkeYIQ(img(:,:,1), img(:,:,2), img(:,:,3));
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow([Y,I,Q])





Program RGB ke YCB dengan fungsi dari buku
=========================================
function [Y, Cb, Cr] = RGBkeYCB(R,G,B)
% RGBkeYCB digunakan untuk mengonversi RGB ke YCbCr

% Normalisasi RGB ke [0, 1]
R = double(R);
G = double(G);
B = double(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

[tinggi, lebar] = size(R);
for m=1: tinggi
    for n=1: lebar
        Y(m,n)=0.299*R(m,n)+0.587*G(m,n)+ 0.114*B(m,n);
        Cb(m,n)=-0.1687*R(m,n)-0.33126*G(m,n)+0.5*B(m,n);
        Cr(m,n)=0.5*R(m,n)-0.41869*G(m,n)-0.08131*B(m,n);
    end
end


Y = Y * 255;
Cb = Cb * 255;
Cr = Cr * 255;
end %akhir fungsi
[Y,Cb,Cr] = RGBkeYCB(9, 16, 250)

hasil konversi RGB ke YCB dengan angka
Y =  40.583
Cb =  118.18
Cr = -22.527

perintah untuk melihat konversi dengan citra
=======================================
img = imread('C:\Image\an.jpg');
[Y,Cb,Cr] = RGBkeYCB(img(:,:,1), img(:,:,2), img(:,:,3));
subplot(1,2,1);imshow(img)
subplot(1,2,2);imshow([Y,Cb,Cr])

Salah satu hasilnya adalah :



Terima Kasih dan Semangat Belajar

Tidak ada komentar:

Posting Komentar