Intensity Adjustment menggunakan GUI MATLAB


Intensitas citra adalah salah satu aspek penting dalam pengolahan citra digital. Terkadang, kita perlu mengubah tingkat intensitas citra untuk meningkatkan kontras atau menghilangkan noise. Dalam artikel ini, akan dijelaskan bagaimana membuat simulasi penyesuaian intensitas (intensity adjutment) menggunakan GUI (Graphical User Interface) di Matlab.

Contrast Stretching (http://matlabwork.blogspot.com)

Pengenalan Penyesuaian Intensitas

Penyesuaian intensitas adalah proses yang digunakan untuk mengubah tingkat kecerahan (brightness) dan kontras (contrast) dalam citra digital. Ini adalah bagian penting dari pengolahan citra dan digunakan dalam berbagai aplikasi, termasuk pengolahan citra medis, fotografi, dan analisis citra. Salah satu metode penyesuaian intensitas yang umum digunakan adalah contrast stretching.

Contrast stretching adalah teknik yang digunakan untuk menurunkan atau meningkatkan kontras dalam citra. Dalam proses ini, kita menentukan dua tingkat intensitas masukan, yaitu “Low Input” (intensitas terendah) dan “High Input” (intensitas tertinggi), serta dua tingkat intensitas target, yaitu “Low Output” dan “High Output”. Selanjutnya, kita menghitung pengali atau “Alpha” yang digunakan untuk mengubah intensitas piksel di antara “Low Input” dan “High Input” agar sesuai dengan “Low Output” dan “High Output”.

Persamaan dasar untuk kontrast stretching adalah sebagai berikut:

Di mana:

  • (O) adalah intensitas output yang disesuaikan.
  • (I) adalah intensitas input.
  • “Low Input” adalah tingkat intensitas terendah dalam citra asli.
  • “High Input” adalah tingkat intensitas tertinggi dalam citra asli.
  • “Low Output” adalah tingkat intensitas terendah yang diinginkan dalam citra output.
  • “High Output” adalah tingkat intensitas tertinggi yang diinginkan dalam citra output.
  • “Alpha” adalah pengali yang digunakan untuk penyesuaian intensitas.

Menggunakan Matlab untuk Simulasi Penyesuaian Intensitas

Matlab adalah alat yang sangat berguna dalam pemrosesan citra dan pemrograman. Dengan bantuan GUI Matlab, kita dapat membuat simulasi yang interaktif untuk mengatur intensitas gambar sesuai dengan preferensi pengguna. Berikut adalah langkah-langkah untuk membuat simulasi penyesuaian intensitas dengan GUI Matlab:

1. Membuat GUI

Langkah pertama adalah membuat GUI Matlab yang akan digunakan untuk mengatur intensitas gambar. Anda dapat menggunakan alat seperti “GUIDE” yang disediakan oleh Matlab untuk membuat GUI dengan tombol, slider, dan komponen lainnya.

2. Menambahkan Komponen Kontrol

Tambahkan komponen kontrol yang diperlukan untuk penyesuaian intensitas. Beberapa komponen yang diperlukan antara lain:

  • Teksbox atau Slider untuk “Low Input”: Ini memungkinkan pengguna untuk memasukkan atau menggeser tingkat intensitas terendah.
  • Teksbox atau Slider untuk “High Input”: Ini memungkinkan pengguna untuk memasukkan atau menggeser tingkat intensitas tertinggi.
  • Teksbox atau Slider untuk “Low Output”: Ini memungkinkan pengguna untuk memasukkan atau menggeser tingkat intensitas terendah yang diinginkan.
  • Teksbox atau Slider untuk “High Output”: Ini memungkinkan pengguna untuk memasukkan atau menggeser tingkat intensitas tertinggi yang diinginkan.
  • Teksbox atau Slider untuk “Alpha”: Ini memungkinkan pengguna untuk memasukkan nilai pengali “Alpha”.

3. Membuat Fungsi Penyesuaian Intensitas

Selanjutnya, kita perlu membuat fungsi yang akan mengambil input dari GUI dan menjalankan penyesuaian intensitas pada gambar. Fungsi ini akan menggunakan persamaan kontrast stretching yang telah dijelaskan sebelumnya.

4. Memvisualisasikan Hasil

Setelah menghitung intensitas yang disesuaikan, kita dapat menampilkan hasilnya dalam bentuk gambar di GUI Matlab. Ini dapat dilakukan dengan menampilkan citra yang disesuaikan dalam kotak gambar di GUI.

5. Menambahkan Fitur Tambahan

Anda juga dapat menambahkan fitur tambahan ke dalam GUI, seperti mengatur tingkat zoom, menyimpan gambar yang telah disesuaikan, dan mengganti mode tampilan (RGB atau grayscale).

Tampilan Sistem Intensity Adjustment

Contoh Kode Matlab untuk Simulasi Penyesuaian Intensitas

Berikut ini adalah contoh kode sederhana untuk membuat GUI Matlab yang melakukan penyesuaian intensitas pada gambar:

function varargout = imadjustgui(varargin)
% IMADJUSTGUI M-file for imadjustgui.fig
%      IMADJUSTGUI, by itself, creates a new IMADJUSTGUI or raises the existing
%      singleton*.
%
%      Copyright (c) 2009  Zhiping XU
%      School of Computer Science, Fudan University
%      dr.bennix @ gmail.com
%
%      H = IMADJUSTGUI returns the handle to a new IMADJUSTGUI or the handle to
%      the existing singleton*.
%
%      IMADJUSTGUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in IMADJUSTGUI.M with the given input arguments.
%
%      IMADJUSTGUI('Property','Value',...) creates a new IMADJUSTGUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before imadjustgui_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to imadjustgui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help imadjustgui

% Last Modified by GUIDE v2.5 24-Nov-2009 20:53:01

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
    'gui_Singleton',  gui_Singleton, ...
    'gui_OpeningFcn', @imadjustgui_OpeningFcn, ...
    'gui_OutputFcn',  @imadjustgui_OutputFcn, ...
    'gui_LayoutFcn',  [] , ...
    'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before imadjustgui is made visible.
function imadjustgui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to imadjustgui (see VARARGIN)

% Choose default command line output for imadjustgui
handles.output = hObject;
handles.low_in =0;
handles.high_in=1;
handles.low_out=0;
handles.high_out=1;
handles.alpha=1;
handles.f=[];
handles.newf=[];
% Update handles structure
guidata(hObject, handles);
movegui(hObject,'center');

% UIWAIT makes imadjustgui wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = imadjustgui_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in btnOpenImage.
function btnOpenImage_Callback(hObject, eventdata, handles)
% hObject    handle to btnOpenImage (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename,pathname] = uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},...
    'Open Image');
if all(filename~=0)
    set(handles.lbCurFilename,'String',[pathname filename])
    handles.f =importdata([pathname filename]);
    axes(handles.axes1);
    imshow(handles.f);
    set(handles.axes1,'Visible','on');
    axis off
end
guidata(hObject,handles);

function common_imadjust_call(hObject, eventdata, handles)
handles.low_in =get(handles.slLowIn,'Value');
handles.high_in=get(handles.slHighin,'Value');
handles.low_out=get(handles.slLowout,'Value');
handles.high_out=get(handles.slHighout,'Value');
handles.alpha=get(handles.slAlpha,'Value');
handles.newf=imadjust(handles.f, [handles.low_in handles.high_in], [handles.low_out,handles.high_out], handles.alpha);
axes(handles.axes1);
imshow(handles.newf);
axis off
guidata(hObject,handles);

% --- Executes on slider movement.
function slLowIn_Callback(hObject, eventdata, handles)
% hObject    handle to slLowIn (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
common_imadjust_call(hObject, eventdata, handles)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider

% --- Executes during object creation, after setting all properties.
function slLowIn_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slLowIn (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end


% --- Executes on slider movement.
function slHighin_Callback(hObject, eventdata, handles)
% hObject    handle to slHighin (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
common_imadjust_call(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.
function slHighin_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slHighin (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end


% --- Executes on slider movement.
function slLowout_Callback(hObject, eventdata, handles)
% hObject    handle to slLowout (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
common_imadjust_call(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.
function slLowout_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slLowout (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end


% --- Executes on slider movement.
function slHighout_Callback(hObject, eventdata, handles)
% hObject    handle to slHighout (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
common_imadjust_call(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.
function slHighout_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slHighout (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end


% --- Executes on slider movement.
function slAlpha_Callback(hObject, eventdata, handles)
% hObject    handle to slAlpha (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
common_imadjust_call(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.
function slAlpha_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slAlpha (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end

Tampilan Sistem Intensity Adjustment

Penyesuaian intensitas adalah teknik penting dalam pemrosesan citra digital yang digunakan untuk meningkatkan kontras dan kualitas gambar. Dengan menggunakan GUI Matlab, kita dapat membuat simulasi yang interaktif untuk mengatur intensitas gambar sesuai dengan preferensi pengguna. Simulasi ini sangat berguna dalam aplikasi fotografi, pengolahan citra medis, dan analisis citra, dan dapat membantu pengguna untuk dengan mudah mengoptimalkan intensitas citra sesuai kebutuhan.

Source code beserta data lengkap pemrograman MATLAB di atas dapat diperoleh melalui halaman berikut ini: Source Code

Posted on October 6, 2023, in Pengolahan Citra and tagged , , , , , , , , , , . Bookmark the permalink. 2 Comments.

  1. bang kalau buat GUI make Matlab WEB gimana bang ? source code nya ngk bisa di edit di bagian fungcion collbaknya

Leave a reply to y23 Cancel reply