A list,

1. Spatial transformation of concepts in image processing can be divided into two types, including Affine transformation and Perspective transformation.

Affine transformation is a linear transformation from one two-dimensional coordinate to another, which maintains the parallelism and straightness of the image, that is, after the transformation, the line in the original image and the parallel line are still consistent. There’s just a change in position. Affine transformations include Translation, Scale, Flip, Rotation, and Shear.

Projection transformation refers to the use of projection beam mapping image to the projection plane, the original image and the transformed image there is a projection transformation relationship.

In terms of mathematical representation, it’s the same thing, there’s always a transformation matrix that allows the original image and the transformed image to be converted to each other.

2 Take an example



As shown in the figure above, assume that F is the original image and G is the transformed image.

By some transformation relation, f goes to g. If we know the coordinates of the corresponding corner points, we can calculate them by the following formula.

Ii. Source code

function varargout = affine_trans(varargin) % AFFINE_TRANS M-file for affine_trans.fig % AFFINE_TRANS, by itself, creates a new AFFINE_TRANS or raises the existing % singleton*. % % H = AFFINE_TRANS returns the handle to a new AFFINE_TRANS or the handle to % the existing singleton*. % % AFFINE_TRANS('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in AFFINE_TRANS.M with the given input arguments. % % AFFINE_TRANS('Property','Value',...) creates a new AFFINE_TRANS or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before affine_trans_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to affine_trans_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 affine_trans % Last Modified by GUIDE V2.5 21-May-2009 16:53:05 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @affine_trans_OpeningFcn, ... 'gui_OutputFcn', @affine_trans_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(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 affine_trans is made visible. function affine_trans_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 affine_trans (see VARARGIN) f = checkerboard(50); axes(handles.axes1); imshow(f); S = 0.8; theta = pi/6; T = [s*cos(theta) s*sin(theta) 0 -s*sin(theta) s*cos(theta) 0 0 0 1]; tform = maketform('affine',T); g = imtransform(f,tform,'nearest'); axes(handles.axes2); imshow(g); set(handles.theta_edit,'string',30); % Choose default command line output for affine_trans handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes affine_trans wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = affine_trans_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 during object creation, after setting all properties. function theta_edit_CreateFcn(hObject, eventdata, Handles) % hObject handle to θ_edit (see GCBO) % eventData reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function theta_edit_Callback(hObject, eventdata, Handles) % hObject handle to θ_edit (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,'String') returns contents of θ_edit as text % str2double(get(hObject,'String')) returns contents of θ_edit as a double % --- Executes during object creation, after setting all properties. function interpolate_pop_menu_CreateFcn(hObject, eventdata, handles) % hObject handle to interpolate_pop_menu (see GCBO) % eventdata reserved - to be defined in a future version of  MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on selection change in interpolate_pop_menu. function interpolate_pop_menu_Callback(hObject, eventdata, handles) % hObject handle to interpolate_pop_menu (see GCBO) % eventdata reserved - to be defined in a future version of  MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns interpolate_pop_menu contents as cell array % contents{get(hObject,'Value')} returns selected item from interpolate_pop_menuCopy the code

3. Operation results

Fourth, note

Version: 2014 a