Code covered by the BSD License  

Highlights from
Simple color adjustment sample

image thumbnail

Simple color adjustment sample

by

 

The color adjustment will be performed, when you pick (click) white pixel.

SimpleColorAdjust(varargin)
function varargout = SimpleColorAdjust(varargin)
%SimpleColorAdjust is a simple GUI example of color adjust.
% If we know the white pixel, the color adjustment is easily performed.
% Please load an image, and pick (click) the white pixel.
% Then color adjustment result will appear in the output image.
%
%Version: 20120613

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

% Last Modified by GUIDE v2.5 13-Jun-2012 08:29:07

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Simple Color Adjust:                                     %
%                                                          %
% Copyright (C) 2012 Masayuki Tanaka. All rights reserved. %
%                    mtanaka@ctrl.titech.ac.jp             %
%                                                          %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @SimpleColorAdjust_OpeningFcn, ...
                   'gui_OutputFcn',  @SimpleColorAdjust_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 SimpleColorAdjust is made visible.
function SimpleColorAdjust_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 SimpleColorAdjust (see VARARGIN)

% Choose default command line output for SimpleColorAdjust
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

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

axes(handles.axesSrc);
imshow(zeros(3,4,'uint8'));
axes(handles.axesDst);
imshow(zeros(3,4,'uint8'));

global src dst;
src = [];
dst = [];

% --- Outputs from this function are returned to the command line.
function varargout = SimpleColorAdjust_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 pushbuttonLoad.
function pushbuttonLoad_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonLoad (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global src;
global dst;
[filename, dirpath, filterindex] = uigetfile( '*.*', 'Load Image');
src = double(imread(strcat(dirpath,filename)));
dst = src;

axes(handles.axesSrc);
imshow(uint8(src));

axes(handles.axesDst);
imshow(uint8(dst));


% --- Executes on button press in pushbuttonSave.
function pushbuttonSave_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonSave (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename, dirpath, filterindex] = uiputfile( '*.*', 'Save Image');
global dst;
imwrite(uint8(dst),strcat(dirpath,filename));

% --- Executes on mouse press over figure background, over a disabled or
% --- inactive control, or over an axes background.
function figure1_WindowButtonDownFcn(hObject, eventdata, handles)
% hObject    handle to figure1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global src dst;
s = size(src);
if( s(1) > 0 )
    pos = get( handles.axesSrc, 'CurrentPoint');
    row = round(pos(1,2));
    col = round(pos(1,1));
    if( row >= 1 && row <= s(1) && col >=1 && col <= s(2) )
        dst = wb(src, row, col);
        axes(handles.axesDst);
        imshow(uint8(dst));
    end
end

function dst = wb( src, row, col )
r = src(row, col, 1 );
g = src(row, col, 2 );
b = src(row, col, 3 );

dst = src;
dst(:,:,1) = dst(:,:,1) * (g+1E-12)/(r+1E-12);
dst(:,:,3) = dst(:,:,3) * (g+1E-12)/(b+1E-12);

Contact us