【Matlab土壤分类】多类SVM土壤分类【含GUI源码 1398期】
2022/1/17 17:06:51
本文主要是介绍【Matlab土壤分类】多类SVM土壤分类【含GUI源码 1398期】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、SVM简介
支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。
1 数学部分
1.1 二维空间
2 算法部分
二、部分源代码
% Project Title: Soil Detection & Classification function varargout = SoilDetect_GUI(varargin) % SOILDETECT_GUI MATLAB code for SoilDetect_GUI.fig % SOILDETECT_GUI, by itself, creates a new SOILDETECT_GUI or raises the existing % singleton*. % % H = SOILDETECT_GUI returns the handle to a new SOILDETECT_GUI or the handle to % the existing singleton*. % % SOILDETECT_GUI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in SOILDETECT_GUI.M with the given input arguments. % % SOILDETECT_GUI('Property','Value',...) creates a new SOILDETECT_GUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before SoilDetect_GUI_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to SoilDetect_GUI_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 SoilDetect_GUI % Last Modified by GUIDE v2.5 28-Aug-2021 14:31:16 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @SoilDetect_GUI_OpeningFcn, ... 'gui_OutputFcn', @SoilDetect_GUI_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 SoilDetect_GUI is made visible. function SoilDetect_GUI_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 SoilDetect_GUI (see VARARGIN) % Choose default command line output for SoilDetect_GUI handles.output = hObject; handles.output = hObject; ss = ones(300,400); axes(handles.axes1); imshow(ss); axes(handles.axes2); imshow(ss); % Update handles structure guidata(hObject, handles); % UIWAIT makes SoilDetect_GUI wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = SoilDetect_GUI_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 pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clc [filename, pathname] = uigetfile({'*.*';'*.bmp';'*.jpg';'*.gif'}, 'Pick a Soil Image'); I = imread([pathname,filename]); I = imresize(I,[256,256]); I2 = imresize(I,[300,400]); axes(handles.axes1); imshow(I2);title('Query Image'); ss = ones(300,400); axes(handles.axes2); imshow(ss); handles.ImgData1 = I; guidata(hObject,handles); % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) I3 = handles.ImgData1; I4 = imadjust(I3,stretchlim(I3)); I5 = imresize(I4,[300,400]); axes(handles.axes2); imshow(I5);title(' Contrast Enhanced '); handles.ImgData2 = I4; %% Feature Extraction Part % queryimage = I4; %queryImage = imresize(queryImage, [256 256]); hsvHist = hsvHistogram(I4); autoCorrelogram = colorAutoCorrelogram(I4); color_moments = colorMoments(I4); % for gabor filters we need gary scale image img = double(rgb2gray(I4))/255; [meanAmplitude, msEnergy] = gaborWavelet(img, 4, 6); % 4 = number of scales, 6 = number of orientations wavelet_moments = waveletTransform(I4); % construct the queryImage feature vector Feature_Vector = [hsvHist autoCorrelogram color_moments meanAmplitude msEnergy wavelet_moments]; whos Feature_Vector F1 = mean2(hsvHist(:)); F2 = mean2(autoCorrelogram(:)); F3 = mean2(color_moments(:)); F4 = mean2(meanAmplitude(:)); F5 = mean2(msEnergy(:)); F6 = mean2(wavelet_moments(:)); set(handles.edit3,'string',F1); set(handles.edit4,'string',F2); set(handles.edit5,'string',F3); set(handles.edit6,'string',F4); set(handles.edit7,'string',F5); set(handles.edit8,'string',F6); handles.ImgData3 = Feature_Vector; guidata(hObject,handles); %% % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) load('TrainFeat_Soil.mat') test = handles.ImgData3; result = multisvm(TrainFeat,Train_Label,test); disp(result); if result == 1 A1 = 'Clay'; set(handles.edit1,'string',A1); helpdlg(' Clay '); disp(' Clay '); elseif result == 2 A2 = 'Clayey Peat'; set(handles.edit1,'string',A2); helpdlg(' Clayey Peat '); disp('Clayey Peat'); elseif result == 3 A3 = 'Clayey Sand'; set(handles.edit1,'string',A3); helpdlg(' Clayey Sand '); disp(' Clayey Sand '); elseif result == 4 A4 = 'Humus Clay'; set(handles.edit1,'string',A4); helpdlg(' Humus Clay '); disp(' Humus Clay '); elseif result == 5 A5 = 'Peat'; set(handles.edit1,'string',A5); helpdlg(' Peat '); disp(' Peat '); elseif result == 6 A6 = 'Sandy Clay'; set(handles.edit1,'string',A6); helpdlg(' Sandy Clay '); disp('Sandy Clay'); elseif result == 7 A7 = 'Silty Sand'; set(handles.edit1,'string',A7); helpdlg(' Silty Sand '); disp(' Silty Sand '); end guidata(hObject,handles); % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) load('Accuracy_Data.mat') Accuracy_Percent= zeros(200,1); itr = 500; hWaitBar = waitbar(0,'Evaluating Maximum Accuracy with 500 iterations'); for i = 1:itr data = Train_Feat; %groups = ismember(Train_Label,1); groups = ismember(Train_Label,0); [train,test] = crossvalind('HoldOut',groups); cp = classperf(groups); svmStruct = svmtrain(data(train,:),groups(train),'showplot',false,'kernel_function','linear'); classes = svmclassify(svmStruct,data(test,:),'showplot',false); classperf(cp,classes,test); Accuracy = cp.CorrectRate; Accuracy_Percent(i) = Accuracy.*100; sprintf('Accuracy of Linear Kernel is: %g%%',Accuracy_Percent(i)) waitbar(i/itr); end
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
五、获取代码方式
Matlab王者助手CSDN名片
这篇关于【Matlab土壤分类】多类SVM土壤分类【含GUI源码 1398期】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南