两维情况下radon变换大致可以这样理解:一个平面内沿不同的直线(直线与原点的距离为d,方向角为alfa)对f(x,y)做线积分,得到的像F(d,alfa)就是函数f的Radon变换。也就是说,平面(d,alfa)的每个点的像函数值对应了原始函数的某个线积分值。一个更直观的理解是,假设你的手指被一个很强的平行光源透射,你迎着光源看到的手指图像就是手指的光衰减系数的三维Radon变换(小小的推广)在给定方向(两个角坐标)的时候的值。
function varargout = Radon_trans(varargin) % RADON_TRANS M-file for Radon_trans.fig % RADON_TRANS, by itself, creates a new RADON_TRANS or raises the existing % singleton*. % % H = RADON_TRANS returns the handle to a new RADON_TRANS or the handle to % the existing singleton*. % % RADON_TRANS('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in RADON_TRANS.M with the given input arguments. % % RADON_TRANS('Property','Value',...) creates a new RADON_TRANS or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Radon_trans_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Radon_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 Radon_trans % Last Modified by GUIDE v2.5 12-Jun-2009 20:15:52 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Radon_trans_OpeningFcn, ... 'gui_OutputFcn', @Radon_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 Radon_trans is made visible. function Radon_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 Radon_trans (see VARARGIN) axes(handles.axes1); img=imread('lena.bmp'); imshow(img); axes(handles.axes2); theta=0:180; [R,xp]=radon(img,theta); imagesc(theta,xp,R); axes(handles.axes3); [R,xp]=radon(img,[0 45]); plot(xp,R(:,1)); axes(handles.axes4); [R,xp]=radon(img,[0 45]); plot(xp,R(:,2)); % Choose default command line output for Radon_trans handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes Radon_trans wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = Radon_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 popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (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 popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (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 popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 val=get(hObject,'value'); str=get(hObject,'string'); switch str{val}; case 'lena' lena = []; lena = imread('lena.bmp'); img = lena; case 'cameraman' cameraman=[]; cameraman=imread('cameraman.tif'); img=cameraman; case 'Saturn', saturn = []; load imdemos saturn img = saturn; case 'Tire', tire = []; load imdemos tire img = tire; case 'Pout', pout = []; load imdemos pout img = pout; case 'Trees', trees = []; load imdemos trees img = trees; case 'Quarter', quarter = []; load imdemos quarter img = quarter; case 'Circuit', circuit = []; load imdemos circuit img = circuit; case 'Rice', rice = []; load imdemos rice img = rice; case 'Fingerprint' fingerprint = []; fingerprint = imread('fingerprint.jpg'); img = fingerprint; case 'Licenceplate' licenceplate = []; licenceplate = imread('licenceplate.jpg'); img = licenceplate; case 'Haze' haze = []; haze = imread('haze.jpg'); img = haze; case 'Cloudy' cloudy = []; cloudy = imread('cloudy.tif'); img = cloudy; end axes(handles.axes1); imshow(img); axes(handles.axes2); theta=0:180; [R,xp]=radon(img,theta); imagesc(theta,xp,R); axes(handles.axes3); [R,xp]=radon(img,[0 45]); plot(xp,R(:,1)); axes(handles.axes4); [R,xp]=radon(img,[0 45]); plot(xp,R(:,2)); % --- Executes on button press in close_button. function close_button_Callback(hObject, eventdata, handles) % hObject handle to close_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close(Radon_trans);
完整代码或者代写添加QQ 1564658423