Senin, 03 November 2014

Aplikasi Pengolah CItra 3














Source code saat program menekan tombol RGB to XYZ

function btnRgb2Xyz_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
A=get(proyek.gbrAsli,'Userdata');
I=A;
I=double(I);
%% %% ubah dari rgb ke xyz
M=[0.412453 0.357580 0.180423;
    0.212671 0.715160 0.072169;
    0.019334 0.119193 0.950227];

r=I(:,:,1)/255;
g=I(:,:,2)/255;
b=I(:,:,3)/255;
if r<.04045
r=r/12.92;
else
r=((r+0.055)/1.055).^(2.44);
end

if g<.04045
g=g/12.92;
else
g=((g+0.055)/1.055).^(2.44);
end

if b<.04045
b=b/12.92;
else
b=((b+0.055)/1.055).^(2.44);
end

r=r*100;
g=g*100;
b=b*100;
X=M(1,1)*r+M(1,2)*g+M(1,3)*b;
Y=M(2,1)*r+M(2,2)*g+M(2,3)*b;
Z=M(3,1)*r+M(3,2)*g+M(3,3)*b;
J=cat(3,X,Y,Z);
J=uint8(J);

set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
 set(imshow(I));
    set(proyek.proyekPD,'CurrentAxes',handles.gbrHistogram);
    imhist(rgb2gray(A));%histora thd rgb2gray(double) no support
         set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
         set(imshow(J));
            set(proyek.proyekPD,'CurrentAxes',proyek.gbrHistogramHasil);
            imhist(rgb2gray(J));  
set(proyek.txtProses,'String','RGB TO XYZ');
set(proyek.gbrAsli,'Userdata',A);
set(proyek.gbrHasil,'Userdata',J);

Source code saat program menekan tombol RGB to CIELAB
function btnRgb2Cielab_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
A=get(proyek.gbrAsli,'Userdata');
I=A;
I=double(I);
%% %% ubah dari rgb ke xyz
M=[0.412453 0.357580 0.180423;
    0.212671 0.715160 0.072169;
    0.019334 0.119193 0.950227];

r=I(:,:,1)/255;
g=I(:,:,2)/255;
b=I(:,:,3)/255;
if r<.04045
r=r/12.92;
else
r=((r+0.055)/1.055).^(2.44);
end

if g<.04045
g=g/12.92;
else
g=((g+0.055)/1.055).^(2.44);
end

if b<.04045
b=b/12.92;
else
b=((b+0.055)/1.055).^(2.44);
end

r=r*100;
g=g*100;
b=b*100;
X=M(1,1)*r+M(1,2)*g+M(1,3)*b;
Y=M(2,1)*r+M(2,2)*g+M(2,3)*b;
Z=M(3,1)*r+M(3,2)*g+M(3,3)*b;
J=cat(3,X,Y,Z);
J=uint8(J);

%% Memanggil fungsi xyz2lab
[L,a,b]=Trans_XYZ2CIELAB(X,Y,Z);
J2=(cat(3,L,a,b));
J2=lab2uint16(J2);

set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
 set(imshow(I));
    set(proyek.proyekPD,'CurrentAxes',handles.gbrHistogram);
    imhist(rgb2gray(A));%histora thd rgb2gray(double) no support
         set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
         set(imshow(J2));
            set(proyek.proyekPD,'CurrentAxes',proyek.gbrHistogramHasil);
            imhist(rgb2gray(J2));  
set(proyek.txtProses,'String','RGB 2 XYZ 2 LAB');
set(proyek.gbrAsli,'Userdata',A);
set(proyek.gbrHasil,'Userdata',J2);

function[L,a,b]=Trans_XYZ2CIELAB(X,Y,Z)
[m,n]=size(X);
X=reshape(X,1,m*n)/95.047;
Y=reshape(Y,1,m*n)/100.000;
Z=reshape(Z,1,m*n)/108.883;
T=0.008856;
X(X>T)=X(X>T).^(1/3);
X(X<=T)=(7.787*X(X<=T))+(16/116);
Y(Y>T)=Y(Y>T).^(1/3);
Y(Y<=T)=(7.787*Y(Y<=T))+(16/116);
Z(Z>T)=Z(Z>T).^(1/3);
Z(Z<=T)=(7.787*Z(Z<=T))+(16/116);
L=reshape((116*Y)-16,m,n);
a=reshape(500*(X-Y),m,n);
b=reshape(200*(Y-Z),m,n);

Source code saat program menekan tombol RGB to LABF
function btnRGB2LABFinternal_Callback(hObject, eventdata, handles)
%mengubah dari RGB=>XYZ=>LAB menggunakan fungsi Matlab
proyek=guidata(gcbo);
A=get(proyek.gbrAsli,'Userdata');
I=A;%karena pakai Fungsi internal, gak usah di konvert ke I=double(I);

%% hasil konversi menggunakan toolbox matlab
C = makecform('srgb2xyz');
J = applycform(I,C);%Citra RGB ke XYZ dengan Toolbox
C = makecform('xyz2lab');
J2 = applycform(J,C);%Citra XYZ ke LAB dengan Toolbox
 set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
 set(imshow(I));
    set(proyek.proyekPD,'CurrentAxes',handles.gbrHistogram);
    imhist(rgb2gray(A));%histora thd rgb2gray(double) no support
         set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
         set(imshow(J2));
            set(proyek.proyekPD,'CurrentAxes',proyek.gbrHistogramHasil);
            imhist(rgb2gray(J2));  
set(proyek.txtProses,'String','RGB 2 XYZ 2 LAB IN');
set(proyek.gbrAsli,'Userdata',A);
set(proyek.gbrHasil,'Userdata',J2);


Source code saat program menekan tombol RGB to XYZIN

function btnRGB2XYZFin_Callback(hObject, eventdata, handles)
%mengubah dari RGB=>XYZ=>XYZ menggunakan fungsi Matlab
proyek=guidata(gcbo);
A=get(proyek.gbrAsli,'Userdata');
I=A;%karena pakai Fungsi internal, gak usah di konvert ke I=double(I);

%% hasil konversi menggunakan toolbox matlab
C = makecform('srgb2xyz');
J = applycform(I,C);%Citra RGB ke XYZ dengan Toolbox
set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
 set(imshow(I));
    set(proyek.proyekPD,'CurrentAxes',handles.gbrHistogram);
    imhist(rgb2gray(A));%histora thd rgb2gray(double) no support
         set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
         set(imshow(J));
            set(proyek.proyekPD,'CurrentAxes',proyek.gbrHistogramHasil);
            imhist(rgb2gray(J));  
set(proyek.txtProses,'String','RGB 2 XYZ INTERNAL');
set(proyek.gbrAsli,'Userdata',A);
set(proyek.gbrHasil,'Userdata',J);

Source code saat program menekan tombol SAVE IMAGE
function btnSave_Callback(hObject, eventdata, handles)
[handles.namafile,handles.direktori]=uiputfile({'*.bmp;*.jpg','file citra(*.bmp,*.jpg)';'*.bmp','file bitmap(*.bmp)';'*.jpg','file jpg(*.jpg)';'*.*','semua file(*.*)'},'simpan file citra');
%[namafile,direktori]==uiputfile('*.bmp','Simpan Gambar');
gbr2=get(handles.gbrHasil,'Userdata');
imwrite(gbr2,handles.namafile);
msgbox(['The new image @ ' handles.direktori '\'  handles.namafile ' has Succesfully to Save']);


Source code saat program menekan tombol SAVE IMAGE RESULT
function btnSimpanGbrHasil_Callback(hObject, eventdata, handles)
[handles.namafile,handles.direktori]=uiputfile({'*.bmp;*.jpg','file citra(*.bmp,*.jpg)';'*.bmp','file bitmap(*.bmp)';'*.jpg','file jpg(*.jpg)';'*.*','semua file(*.*)'},'simpan file citra');
%[namafile,direktori]==uiputfile('*.bmp','Simpan Gambar');
gbr2=get(handles.gbrHasil,'Userdata');
imwrite(gbr2,handles.namafile);
msgbox(['The new image @ ' handles.direktori '\'  handles.namafile ' has Succesfully to Save']);



Source code saat program menekan tombol EXIT

function btnKeluar_Callback(hObject, eventdata, handles)
mau=questdlg(['Keluar ' get(handles.proyekPD,'Name')''],['Keluar ' get(handles.proyekPD,'Name')''],'Ya','Tidak','Ya');
if strcmp(mau,'Tidak')
return;
end
delete(handles.proyekPD);%close;


Source code saat program menekan tombol EDGE DETECTION
function btnDeteksiTepi_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
I=get(proyek.gbrAsli,'Userdata');
myFilter = fspecial('sobel');
%'gaussian', 'sobel', 'prewitt', 'laplacian', 'log', 'average', 'unsharp','roberts'
J = imfilter(I, myFilter, 'replicate');
   % J2 = imfilter(J, myFilter, 'replicate2');%pendalaman1
   % J3 = imfilter(J2, myFilter, 'replicate3');%pendalaman2
  
set(proyek.proyekPD,'CurrentAxes',proyek.gbrAsli);
set(imshow(I));
    set(proyek.proyekPD,'CurrentAxes',handles.gbrHistogram);
    imhist(rgb2gray(I));
         set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
         set(imshow(J));
            set(proyek.proyekPD,'CurrentAxes',proyek.gbrHistogramHasil);
            imhist(rgb2gray(J));  
set(proyek.txtProses,'String','SOBEL');
set(proyek.gbrAsli,'Userdata',I);
set(proyek.gbrHasil,'Userdata',J);
        

Source code saat menekan tombol EDGE DETECTION Method2

function btnDeteksiTepi2_Callback(hObject, eventdata, handles)
proyek=guidata(gcbo);
I=get(proyek.gbrAsli,'Userdata');
J=rgb2gray(I);
J2= edge(J,'sobel');%NO SUPPORT: fspecial('roberts');
%'gaussian', 'sobel', 'prewitt', 'laplacian', 'log', 'average','unsharp','roberts'
set(proyek.proyekPD,'CurrentAxes',proyek.gbrAsli);
set(imshow(I));
    set(proyek.proyekPD,'CurrentAxes',handles.gbrHistogram);
    imhist(rgb2gray(I));
         set(proyek.proyekPD,'CurrentAxes',proyek.gbrHasil);
         set(imshow(J2));
            set(proyek.proyekPD,'CurrentAxes',proyek.gbrHistogramHasil);
            imhist(J2);  
set(proyek.txtProses,'String','SOBEL IN');
set(proyek.gbrAsli,'Userdata',I);
set(proyek.gbrHasil,'Userdata',J2);



Kursus / Konsultasi / Bimbingan Belajar / Skripsi Mahasiswa
http://www.lp2maray.com
021-92771708   / 085279959498
URL VIDEO :
https://www.youtube.com/watch?v=0UaDnmPkH6U&feature=youtu.be


Tidak ada komentar:

Posting Komentar